MonadaCryptoResearch
October 2, 2022

Обратимые транзакции в Ethereum: ERC-20R и ERC-721R.

Неизменность транзакций блокчейна — это и благословение, и проклятие.

Фишинг BAYC. Атака PolyNetwork. Компрометация Harmony Bridge. Кража Ronin. 14 миллиардов долларов криптовалюты украдено только в 2021 году. Эти - и многие другие - кражи неоспоримы, но нет "кнопки отмены" (например, отмены платежа по кредитной карте), и не у всех есть криптовалюта Jump Crypto, чтобы выручить их в случае необходимости.

Но что если бы существовал обратимый тип токенов?

Это вопрос, на который мы в Стэнфорде (Дэн Боне, Цинчен Ванг и я) пытались ответить в течение последних нескольких месяцев. Мы разработали стандарты токенов opt-in, которые близки к ERC-20 и ERC-721 и поддерживают обратные транзакции (при наличии достаточных оснований для этого), написали о них статью и реализовали несколько прототипов. Мы назвали эти стандарты токенов ERC-20R и ERC-721R, соответственно.

Теперь вы, возможно, подумали: Обратимые токены? Разве это не уничтожает цель блокчейна? На самом деле, нет. Он не призван заменить токены ERC-20 или сделать Ethereum обратимым - он просто обеспечивает короткие временные окна после транзакции для оспаривания кражи и возможного восстановления.

Обратите внимание, что транзакция может быть заморожена только на короткий промежуток времени (скажем, на 3 дня), после чего она становится необратимой. В течение большей части своего срока службы средства ERC-20R необратимы.

Обратимость в биржах:

На бирже обмен между двумя обратимыми токенами происходит мгновенно; если с одной стороны запрашивается замораживание, то с другой стороны можно получить средства в обратном порядке, независимо от того, истек ли период времени обратимости. Однако обмен обратимого токена на необратимый токен может; чтобы защитить себя от обратимых действий, биржа может завершить обмен только после истечения обратимого периода времени. Это означало бы, что обратимые→необратимые свопы будут иметь задержку до тех пор, пока средства не станут необратимыми. Таким образом, как только несколько крупных токенов добавят обратимые версии самих себя, возникнет давление на другие токены, чтобы они также имели обратимые версии.

В зависимости от реализации, можно немедленно ликвидировать активы, для которых прошел обратимый период времени (например, ликвидировать активы, которые вы получили 3 дня назад). В этом случае не потребуется задержка между вашими обратимыми токенами и необратимыми токенами.

Вот как это работает:

Предположим, злоумышленник похищает средства у жертвы. Средства могут быть в дальнейшем перемещены на другие адреса, как показано на рисунке 1 ниже. При этом произойдет следующее:

  • Жертва просит заморозить украденные средства. Жертва размещает запрос на замораживание в контракте управления вместе с соответствующими доказательствами и некоторой ставкой. Оспариваемая транзакция должна быть недавней (существует фиксированный обратимый период времени).
  • Судьи принимают или отклоняют запрос на замораживание. Децентрализованный кворум судей голосует за замораживание активов или нет. Этот период обсуждения должен занять день или два, не больше. Если они отклоняют запрос, процесс останавливается на этом, и жертва теряет свою долю. Если они принимают запрос, то контракт управления объявляет заморозку на контракте ERC-20R/ERC-721R.
  • Выполнить замораживание. Для НФТ это просто блокирует перевод НФТ. Для ERC-20R - отслеживание похищенных средств и запрет на их перевод. Обратите внимание, что владелец счета все еще может совершать операции с другими лицами, пока его баланс остается выше замороженной суммы. Этот процесс может стать сложным, как я объясню в следующем разделе.
  • Судебное разбирательство. Затем обе стороны могут представить доказательства децентрализованному составу судей. В конечном итоге судьи принимают решение, после чего они дают указание управляющему контракту вызвать функции reverse или rejectReverse для затронутого контракта ERC-20R или ERC-721R. Если вызывается функция rejectReverse, то замораживание спорных активов снимается. Процесс может быть длительным, возможно, он займет несколько недель.
  • Реверс, если применимо. Функция реверса отправляет замороженные активы обратно жертве.

Отслеживание похищенных средств:

Когда средства украдены, они редко просто лежат в одном месте. Злоумышленник часто перемещает их с одного счета на другой в стиле hot-potato. В этом случае злоумышленник может даже следить за mempool и перемещать активы в рамках опережающей транзакции, если увидит входящий запрос на замораживание. Наше решение избежать этого сценария заключается в том, чтобы проводить всю заморозку (и ее расчеты) на цепочке в одной транзакции, чтобы злоумышленник не мог "обогнать" заморозку.

Но мы не можем просто отключить все счета, которые касались активов, так как же нам решить, что и кого замораживать? Если это НФТ, то заморозка, к счастью, довольно проста: достаточно посмотреть, кто в настоящее время владеет НФТ, и заморозить этот счет. Однако делимая природа денег делает замораживание ERC-20 гораздо более сложным. Средства могут быть разделены между десятками счетов, брошены в микшер анонимности, такой как Tornado, или обменены на другую цифровую валюту. Если средства проходят через множество счетов, по крайней мере, некоторые из них будут связаны с хакером. Но некоторые вполне могут быть невиновными, или торговцами, которые предоставили законную услугу в обмен на оплату. Невозможно всегда правильно определить степень вины каждого аккаунта. Поэтому мы предусмотрели стандартный процесс замораживания для отслеживания и блокировки украденных средств. Наш алгоритм гарантирует, что:

  • При условии отсутствия ожогов, будет заморожено достаточно активов, чтобы покрыть сумму кражи. (Сгоревшие активы вычитаются из возвращенной суммы);
  • Средства на счете будут заморожены только в том случае, если существует прямой поток транзакций от кражи;
  • Алгоритм работает с разумной сложностью по времени выполнения по отношению к графу транзакций.

Децентрализованная судебная система:

Более неоднозначная часть этой головоломки касается "децентрализованного кворума судей". Кто эти судьи? Как они голосуют? Как они получают вознаграждение?

Эти вопросы в конечном итоге решаются руководством, т.е. тем, кто создает экземпляр ERC-20R/ERC-721R. В нашей статье мы рассматриваем способы предотвращения нечестности судей и взяточничества, механизмы вознаграждения и многое другое. Мы подчеркиваем, что судьи не могут добавлять транзакции или произвольно изменять значения своего баланса.