Как работает Tornado Cash?
Last updated
Last updated
Прежде чем погрузиться в руководства, объясняющие и упрощающие использование Tornado.Cash, приведем общий обзор глобального функционирования протокола.
Глобальный обзор функционирования Tornado.Cash
Чтобы добиться конфиденциальности,Торнадо.Кэш использует смарт-контракты, которые принимают депозиты токенов с одного адреса и позволяют их вывод с другого адреса . Эти смарт-контракты работают как пулы, в которых смешиваются все депонированные активы. Как только средства выводятся по совершенно новому адресу из этих пулов, внутрисетевая связь между источником и местом назначения разрывается. Таким образом, выведенные криптоактивы анонимизируются. Пока токены находятся в пуле Tornado Cash, хранение остается в руках пользователей. Таким образом, пользователи имеют полный контроль над своими токенами.
Для традиционных пулов Tornado Cash с фиксированной суммой :
Когда пользователь помещает средства в пул (он же депозит), создается личная заметка. Эта личная заметка работает как личный ключ, позволяющий пользователю позже получить доступ к этим средствам. Чтобы вывести их, тот же пользователь может использовать другой адрес — старый или новый — и восстановить свои средства благодаря этому закрытому ключу.
Для Tornado Cash Nova новый пул ETH с произвольными суммами и защищенными переводами :
Средства напрямую привязаны к определенному адресу кошелька. Нет никакой личной заметки или ключа. Пользователи могут получить доступ к своим средствам, подключившись к пулу по соответствующему адресу.
Хранение осуществляется либо путем внесения токенов в пул, либо путем регистрации в пуле и получения защищенных переводов с другого адреса.
Надежность такого протокола напрямую связана с количеством его пользователей и размером пула. Чем больше пользователей вносят депозиты в пул, тем лучше. Однако для сохранения конфиденциальности и анонимности пользователь должен помнить о некоторых основных правилах, таких как:
Использование ретранслятора для оплаты газа при выводе;
Предоставление времени между внесением депозита и снятием средств;
Смешивает свои средства с толпой, ожидая нескольких транзакций, прежде чем вернуть свои активы.
Дополнительные рекомендации представлены в: Советы, как сохранить анонимность.
Вклад zk-SNARK и процесса хеширования
Tornado.Cash использует краткий неинтерактивный аргумент знания с нулевым разглашением (также называемый zk-SNARK) для проверки и разрешения транзакций. Для обработки депозита Tornado.Cash генерирует случайную область байтов, вычисляет ее с помощью Педерсен Хэш (поскольку это более дружелюбно к zk-SNARK), затем отправляет токен и хэш 20 MiMC в смарт-контракт. Затем контракт вставит его в дерево Меркла.
Для обработки вывода одна и та же область байтов разделяется на две отдельные части: секрет с одной стороны и обнулитель с другой стороны. Обнулитель хешируется. Этот обнулитель представляет собой общедоступные входные данные, которые отправляются в цепочку для проверки с помощью смарт-контракта и данных дерева Меркла.
Например, это позволяет избежать двойных расходов. Благодаря zk-SNARK можно доказать хэш 20 MiMC первоначального обязательства и обнулителя, не раскрывая никакой информации. Даже если обнулитель является общедоступным, конфиденциальность сохраняется, поскольку невозможно связать хешированный обнулитель с первоначальным обязательством.
Кроме того, даже если информация о транзакции присутствует в корне Merkle, информация о точном пути Merkle, а затем и о местонахождении транзакции, по-прежнему остается конфиденциальной.
Депозиты просты с технической точки зрения, но дороги в с точки зрения газа, поскольку им нужно вычислить хэш 20 MiMC и обновить дерево Меркла. С другой стороны, процесс вывода сложен, но дешевле, поскольку газ необходим только для хеш-нулификатора и доказательства с нулевым разглашением.