×
Корзина 0
Список сравнения 0 Список желаний 0
Личный кабинет
whatsappНаписать в WhatsApp
Меню

Tornado Cash

В августе 2022 года Управление по контролю за иностранными активами Минфина США (OFAC) ввело санкции против Tornado Cash, добавив 45 адресов Ethereum в список лиц, на которых распространяются санкции, в список Specially Designated Nationals (SDN).

Цель этой статьи - помочь читателю понять, что такое Tornado Cash, как он работает и что именно попало под санкции. Давайте перейдем к рассмотрению Tornado Cash.

Tornado Cash

Tornado Cash

Tornado Cash - это проект программного обеспечения с открытым исходным кодом, который обеспечивает защиту конфиденциальности для пользователей Ethereum. Как и многие подобные проекты, это название относится не к юридическому лицу, а к нескольким библиотекам программного обеспечения с открытым исходным кодом, которые разрабатывались в течение многих лет различными группами участников. Эти участники опубликовали и сделали Tornado Cash доступным для общего использования в качестве коллекции смарт-контрактов на блокчейне Ethereum.

Как мы объясним, некоторые из этих смарт-контрактов попали под санкции OFAC. Однако ядро инструментов конфиденциальности Tornado Cash составляет подмножество адресов, попавших под санкции OFAC: "пулы" Tornado Cash. Каждый пул Tornado Cash представляет собой смарт-контракт, развернутый на Ethereum. Как и другие смарт-контракты, контракты пулов расширяют функциональность Ethereum с помощью определенных операций, которые могут быть выполнены любым пользователем Ethereum в соответствии с правилами, определенными в коде контрактов Tornado Cash.

В этом разделе будет описано, как работают эти пулы. В частности, будет описана ключевая инновация, которая позволяет этим пулам функционировать автономно: применение математики сохранения конфиденциальности, известной как "криптография нулевого знания".

Tornado Cash - смарт-контракты

Tornado Cash - это смарт-контракты, которые позволяют пользователям совершать частные сделки на Ethereum. По запросу пользователя пулы автоматически выполняют одну из двух поддерживаемых операций: "пополнение счета" или "снятие средств". Вместе эти операции позволяют пользователю вносить токены с одного адреса, а затем выводить эти же токены на другой адрес. Важно отметить, что, хотя эти события пополнения и снятия происходят публично в прозрачной бухгалтерской книге Ethereum, любая публичная связь между адресами пополнения и снятия разорвана. Пользователь может выводить и использовать свои средства, не опасаясь раскрытия всей своей финансовой истории третьим лицам.

В поддержку операций по вводу и выводу средств смарт-контракты кодируют строгие правила, которые дополнительно определяют их функциональность. Эти правила автоматически применяются к операциям ввода и вывода средств для поддержания очень важного свойства, общего для всех пулов Tornado Cash: пользователи могут выводить только конкретные токены, которые они первоначально депонировали.

Это свойство соблюдается автоматически для всех операций пула и гарантирует, что пулы Tornado Cash полностью свободны от опеки. То есть пользователь, который депонирует и затем выводит токены, сохраняет полную собственность и контроль над своими токенами, даже когда они проходят через пул. Ни в какой момент от пользователя не требуется передавать контроль над своими токенами кому-либо.

Ключевой принцип пулов Tornado Cash заключается в том, что конфиденциальность пользователя в значительной степени обусловлена одновременным использованием пула многими другими пользователями. Если бы в пуле был только один пользователь, не имело бы значения, что связь между адресами ввода и вывода средств пользователя была бы разорвана: простое умозаключение позволило бы понять, откуда поступили выведенные токены. Вместо этого пулы используются многими пользователями одновременно. Подумайте об этом как о банковской ячейке. Любой может пойти и положить ценности в запертый ящик в этой комнате, и, при условии, что замки хорошие, только человек с ключом может получить эти ценности обратно. Однако, если говорить о безопасности, это может способствовать или не способствовать конфиденциальности. Если в комнату входит и выходит только один человек, то мы знаем, что все ценности в этой комнате принадлежат ему. Если, с другой стороны, многие люди часто входят и выходят из комнаты, то мы не можем знать, кто контролирует, какие ценности в каких ящиках находятся. Гарантируя свойство, что пользователи могут изымать только те жетоны, которые они первоначально вложили, многие пользователи могут одновременно использовать эти пулы с гарантией, что никто другой не получит их жетоны.

Традиционно такие гарантии предоставляются службой хранения: банком в примере с сейфом или группой людей, управляющих "службой смешивания" в других распространенных криптовалютных механизмах. Смешивающие сервисы, такие как Blender.io, напрямую принимают токены от своих клиентов, агрегируют и смешивают их, а затем возвращают средства своим клиентам (часто беря за это определенную комиссию). На промежуточном этапе агрегирования и смешивания средства, о которых идет речь, полностью контролируются операторами сервиса смешивания и смешиваются. На заключительном этапе процесса смешивания пользователь получает средства, полученные непосредственно от множества других пользователей, которые также воспользовались этой услугой.

В отличие от этого, у пулов Tornado Cash нет оператора-хранителя, и пользователи получают только те токены, которые они первоначально вложили (а не смесь токенов, полученных от других пользователей сервиса). Это стало возможным благодаря важным свойствам операций ввода и вывода средств, которые автоматически выполняются с помощью сохраняющей конфиденциальность отрасли математики, называемой "криптографией нулевого знания". Эта криптография нулевого знания включена в код смарт-контракта Tornado Cash и формирует основу, на которой функционируют операции ввода и вывода средств.

Доказательства с нулевым знанием

Напомним, что Ethereum прозрачен: любой может просмотреть историю транзакций и баланс любого пользовательского счета. Аналогично, любой может просмотреть историю взаимодействия, баланс и код приложения смарт-контракта. Если пользователь побуждает смарт-контракт выполнить операцию, это взаимодействие становится фактом, который навсегда заносится в публичные записи Ethereum и может быть вызван и проверен любым человеком. Как же так получается, что пользователь может пополнить пул Tornado Cash, а затем вывести средства на другой адрес, не создавая очевидной связи с публичными записями Ethereum?

Ответ кроется в доказательствах с нулевым знанием. Доказательство с нулевым знанием - это криптографический метод, с помощью которого одна сторона ("проверяющий") может доказать другой стороне ("верификатор"), что данное утверждение истинно, при этом проверяющий не передает никакой дополнительной информации, кроме того факта, что утверждение действительно истинно.

В случае с Tornado Cash "доказателем" является пользователь, изымающий токены из пула, а "верификатором" - один из контрактов пула Tornado Cash. Когда пользователь просит смарт-контракт пула вывести свои токены, он должен предоставить ему доказательство с нулевым знанием. Код пула автоматически проверяет введенное доказательство и обрабатывает вывод средств только в том случае, если доказательство признано достоверным. То, какое именно утверждение доказывает пользователь и как он создает это доказательство, несколько сложнее и требует более подробного описания процесса пополнения счета.

Процесс внесения депозита в пул

Когда пользователь хочет внести токены, он сначала генерирует "депозитную записку" (длинную последовательность цифр, известную только пользователю). Это делается в частном порядке на собственном компьютере пользователя и никогда не передается публично. Затем пользователь просит контракт пула Tornado Cash обработать депозит. Вместе с этим запросом пользователь предоставляет хэш (или закодированную форму) своей депозитной записки и токенов для депозита. Интеллектуальный контракт пула автоматически регистрирует закодированную записку как новую запись в публичном списке закодированных записок других пользователей. На этом этапе пользователь, вносящий депозит, завершает первую часть процесса и сохраняет депозитную записку, которая действует как квитанция для последующего снятия токенов.

Процесс вывода из пула

Когда пользователь готов вывести свои токены, он сначала делит свою депозитную купюру пополам. Одна сторона действует как "секрет", а другая - как "замок". После этого пользователь запрашивает смарт-контракт Tornado Cash о выводе средств. Вместе с запросом пользователь предоставляет:

  • Хэш (или кодированную форму) "замка".
  • Доказательство нулевого знания, сгенерированное с использованием "секрета" и "замка".

Смарт-контракт пула использует эти данные для автоматической проверки - то есть, доказательства - следующего:

  1. Что доказательство с нулевым знанием было сгенерировано с использованием "секрета". Это точно такой же "секрет", который соответствует одной из существующих закодированных купюр в публичном списке закодированных купюр пула (т.е. доказывает, что изымаемые токены были ранее кем-то депонированы).
  2. Что это же доказательство также соответствует кодированной форме "замка", предоставленного вместе с доказательством (т.е. доказывает, что человек, который их изымает, должен быть тем же человеком, который их депонировал).
  3. Что представленный "замок" не был представлен ранее (т.е. данный депозит еще не был снят).

Если доказательство подтверждено, смарт-контракт пула автоматически:

  1. Отправляет пользователю его токены.
  2. Записывает закодированный "замок" в публичный список закодированных замков других пользователей, гарантируя, что те же самые токены не могут быть изъяты повторно.

Очень важно, что вышеуказанные операции выполняются, при этом никогда не раскрывается следующая информация: какой конкретной закодированной записке соответствует доказательство (т.е. кто из всех вкладчиков Tornado Cash сейчас снимает деньги).

Блокировка tornado cash

Как уже говорилось ранее, для большинства читателей Tornado Cash является синонимом основного подмножества смарт-контрактов Tornado Cash: пулов Tornado Cash. Подавляющее большинство этих контрактов являются неизменяемыми. То есть, они не могут быть обновлены или удалены кем-либо. Полный список санкционированных, неизменяемых пулов Tornado Cash можно найти в Приложении А.

Обратите внимание, что многие из этих пулов в какой-то момент имели роль "оператора". Роль оператора первоначально принадлежала 0xDD4c...3384, он же Gitcoin Grants: Tornado.cash, еще один санкционированный адрес. Эта роль предоставляла своему владельцу два разрешения:

  • updateVerifier: Используется для обновления "верификатора", используемого смарт-контрактом. По сути, это право можно использовать для изменения того, как контракт обрабатывает доказательства нулевого знания.
  • changeOperator: Используется для передачи разрешения "оператора" на другой адрес или полного аннулирования разрешения "оператора" путем передачи его на нулевой адрес.

В мае 2020 года разрешение updateVerifier было использовано в сочетании с разрешением changeOperator в качестве окончательного обновления этих пулов Tornado Cash. Это обновило процессоры доказательства нулевого знания всех пулов до их окончательной версии, в которую были внесены вклады более 1100 участников сообщества. Кроме того, это обновление аннулировало разрешение "оператор", используя changeOperator для передачи разрешения на нулевой адрес. По сути, обновление, выполненное в мае 2020 года, закрепило предпочтения сообщества и обеспечило невозможность внесения дальнейших изменений. Подробности этого процесса можно найти здесь.

Несколько пулов из списка SDN все еще имеют разрешение "оператор". Из них два принадлежат очень старым, не используемым сейчас версиям Tornado Cash. Остальные пулы либо имеют более новые, неизменяемые версии, либо использовались так мало, что, скорее всего, были пропущены во время финального обновления в мае 2020 года. Большинство из этих оставшихся восьми пулов никогда не использовались, а те, которые использовались, использовались всего один или два раза за последние три года.

Ретранслятор

Как уже упоминалось ранее, "ретрансляторщики" - это независимые операторы, которые предоставляют пользователям Tornado Cash необязательную услугу.

По умолчанию, когда пользователи запрашивают контракты пула Tornado Cash для вывода средств, на счете вывода уже должен быть Эфир, чтобы заплатить сети Ethereum за обработку операций смарт-контракта. Однако отправка Эфира на счет вывода до снятия средств может создать связь между депозитным и выводным счетами пользователя.

Рестансляторщики позволяют пользователям осуществлять снятие средств без необходимости предварительного пополнения счета для снятия средств, что помогает пользователям сохранять конфиденциальность при снятии средств.

Пользователи выбирают ретранслятор из публичного реестра ретрансляторов, другого санкционированного смарт-контракта Tornado Cash. Затем пользователь использует свой счет для вывода средств, чтобы подписать транзакцию, разрешающую вывод средств с помощью ретранслятора. Пользователь отправляет эту транзакцию выбранному им ретранслятору, который обрабатывает снятие средств от его имени, получая за это вознаграждение. Обратите внимание, что, несмотря на то, что они обрабатывают снятие средств от имени пользователей, ретрансляторы никогда не имеют права распоряжаться токенами пользователей; смарт-контракт гарантирует, что снятые токены будут отправлены только на счет пользователя.

OFAC не внесло в список SDN адреса ретрансляторов, но внесло в список смарт-контракт, содержащий реестр ретрансляторов.

Инструмент Compliance Tool

Tornado Cash была создана для того, чтобы пользователи Ethereum могли вернуть себе конфиденциальность. Вместо того чтобы раскрывать полную финансовую историю, Tornado Cash предоставляет пользователям контроль над их личной информацией: как над тем, что и кому передается. Однако сохранение конфиденциальности и контроля над личной информацией не обязательно должно происходить за счет несоблюдения юридических обязательств.

С этой целью разработчики Tornado Cash создали инструмент Tornado Cash Compliance Tool. Пользователи предоставляют этому инструменту оригинал "депозитной записки", созданной в процессе пополнения пула, чтобы создать PDF-отчет, подтверждающий первоисточник токенов. Хотя публичная связь между адресами ввода и вывода средств пользователя была разорвана контрактами пула Tornado Cash, инструмент Compliance Tool позволяет пользователям выборочно "отменить" этот разрыв, чтобы обеспечить возможность отслеживания третьих сторон.

Инструмент Compliance Tool не является смарт-контрактом. Однако, как и другое программное обеспечение, описанное в этой статье, Compliance Tool также не является услугой, предоставляемой разработчиками Tornado Cash; это инструмент с открытым исходным кодом, который может использовать любой желающий.

Заключение

Вот главные позиции которые вы должны были усвоить:

  • Смарт-контракты Tornado Cash позволяют пользователям вносить и впоследствии выводить свои токены на другой адрес.
  • Несмотря на то, что любой желающий может наблюдать, как пользователи вносят или снимают токены, они не могут определить, какие снятия соответствуют каким вкладам.
  • Эти операции определены в виде кода смарт-контракта и выполняются автоматически без посредников или третьих лиц.
  • Пользователи все время сохраняют контроль над своими средствами и могут выводить только те токены, которые они первоначально внесли.
  • Никто не контролирует работу этих смарт-контрактов Tornado Cash и никто не имеет возможности изменить их работу в будущем.
  • Некоторые адреса, идентифицированные OFAC, сохраняют определенный уровень контроля со стороны человека. Однако эти адреса не являются ключевыми для работы инструментов конфиденциальности, которые находятся на неизменяемых адресах, и они не могут осуществлять контроль над токенами пользователей.

Криптовалюты, 2022

Комментарии
Рекомендуемые товары