Как концептуально работает Tornado Cash, который попал под санкции США?

HabrPublié le 2022-08-24Dernière mise à jour le 2022-08-24

Résumé

8 августа 2022 года Управление по контролю за иностранными активами Министерства финансов США (OFAC) наложило санкции на Tornado Cash, миксер криптовалюты, что вызвало шквал обсуждений в криптосреде. В этой статье разберем как концептуально работает криптомиксер Tornado Cash, что было понять, что есть в этой технологии, что против нее вводят санкции.

Что такое Tornado Cash?

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

Tornado Cash — это сервис, который смешивает разные потоки потенциально идентифицируемой криптовалюты и таким образом не дает отследить переход криптовалюты с одного адреса на другой.

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

Анонимная связка адреса отправителя и адреса получателя возможна благодаря технологии доказательства с нулевым разглашением (Zero-knowledge proof). Доказательство с нулевым разглашением позволяет вам доказать истинность утверждения, не раскрывая содержание утверждения и не раскрывая, как вы обнаружили истину. Конкретно Tornado Cash использует протокол zk-SNARK.

Важно отметить, что, используя zk-SNARK, Tornado Cash позволяет вам вносить в контракт фиксированные суммы ETH, DAI, USDC или USDT. Когда вы вносите деньги (Deposit), вы получите резервный код, который вам понадобится для вывода (Withdrawal) средств позже.

Почему фиксированные суммы? Например, вы внесли 0,1 ETH, а также помимо вас это сделали еще 303 человека. А поскольку процес передачи средств в смарт-контракт являтся общедоступной информацией, когда вы вносите 0,1 ETH, эти 0,1 ETH позже можно будет отследить до этой группы из 303 человек, но не до вас напрямую.

Алгоритм работы

Размещение (Deposit)

Прежде чем Алиса вложит деньги в Tornado Cash, ей нужно будет выбрать два случайных числа: secret и nulifier, а затем она вычислит хэш этих двух случайных чисел.

Чтобы внести(разместить) депозит в Tornado Cash, Алиса отправит 1 ETH и хэш чисел secret и nulifier. Пускай в нашем примере это будет 0x404.

⠀⠀

Отправленный эфериум хранится в смарт-контракте, как и хэши, которые необходимы для определения обязательств, хэш позже будет использоваться для вывода этого 1 ETH из Tornado Cash.

⠀⠀

Вывод средств

⠀⠀

Прежде чем разобрать вывод средств, рассмотрим, как бы это могло бы быть сделано неправильно, то есть компрометируя выводящего средства, а потом посмотрим, как это сделать правильно.

⠀⠀

Итак, неправильный путь это когда выводящий средства, передаст в смарт контракт числа secret и nulifier, а смарт-контракт проверит, что хэш есть в хранилище смарт-контракта и отдаст нужное кол-во ETH. Подобный процесс раскрывает личность выводящего деньги из смарт-контракта. Например, мы знаем, что Алиса разместила в смарт-контракте хэш 0x404,а позже появляется анонимный пользователь передающий secret и nulifier, так что хеш secret и nulifier равен 0x404, но поскольку хеш-функция является односторонней функцией, это означает, что единственный человек, который знает secret и nulifier, который хэширует в 0x404 - это Алиса. Именно так личность пользователя раскрывается при снятии средств. Итак, как мы можем решить эту проблему.

⠀⠀

Если каким-то образом есть возможность доказать, что я знаю secret и nulifier, так что hash (secret,nulifier) есть в смарт-контракте, но без раскрытия secret и nulifier. Тогда анонимный пользователь мог бы отсылать в смарт-контракт некое доказательство что он знает secret и nulifier без фактической отправки этих чисел или хэша, а смарт-контракт проверял бы, действительно ли доказательство, при этом смарт-контракт не знал бы, предназначено ли доказательство для 0x404 или для 0x403 или 0x505, которые также записаны в смарт-контракт, другими словами, доказательство не раскрывало бы личность анонимного пользователя.

⠀⠀

⠀⠀

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

⠀⠀

Что за nulifier?

⠀⠀

Узнав, что смарт-контракт проверят действительно ли доказательство, но не знает для какого конкретно хэша, какой-нибудь хакер захотел бы много раз отправить одно и тоже доказательство, чтобы получить много ETH. Поэтому, чтобы предотвратить подобное двойное использование, когда вы отправляете доказательство для вывода, вам также нужно будет отправить хэш nulifier внутри доказательства.

⠀⠀

⠀⠀

И тогда "внутри" zk-SNARK будет проверятся:

⠀⠀

— что hash(secret,nulifier) есть в смарт-контракте;

— корректность, что хэш от nulifier == hash(nulifier).

⠀⠀

После этих проверок, смарт-контракт отдаст ETH и "запишет", что вывод средств был произведен.

⠀⠀

Хранение данных

⠀⠀

Для того, чтобы осуществлять большое количество проверок хэшей в Tornado Cash данные хранится в Merkle tree.

⠀⠀

Использование хеш-деревьев позволяет "малыми" затратами проверять принадлежности определённого блока данных к множеству.

⠀⠀

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

⠀⠀

Зеленым отмечены хэши которые понадобятся нам для проверки, что синий элемент принадлежит к множеству средств внутри Tornado Cash

⠀⠀

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

⠀⠀

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

⠀⠀

⠀⠀

Концептуальный пример для интуитивного понимания данных доказательства в условиях нулевого разглашения это представить себе пещеру с одним входом, но двумя путями (путь A и B), которые соединяются через общую дверь, запертую кодовой фразой. Алиса хочет доказать Бобу, что она знает код доступа к двери, но не раскрывая код Бобу. Для этого Боб стоит снаружи пещеры, а Алиса идет внутрь пещеры, выбирая один из двух путей (при этом Боб не знает, какой путь был выбран). Затем Боб просит Алису вернуться к входу в пещеру по одному из двух путей (выбранных случайным образом). Если Алиса изначально выбрала путь А к двери, но затем Боб просит ее вернуться по пути Б, единственный способ решить головоломку для Алисы — это знать код доступа к запертой двери. Этот процесс может быть повторен несколько раз, чтобы доказать, что Алиса знает код доступа к двери и не выбрала правильный путь изначально с высокой степенью вероятности.

⠀⠀

После завершения этого процесса Боб имеет высокую степень уверенности в том, что Алиса знает код доступа к двери, не раскрывая код доступа Бобу. Хотя это всего лишь концептуальный пример, ZKP используют ту же стратегию, но используют криптографию для подтверждения знаний о точке данных, не раскрывая сами данные.

⠀⠀

Итог

⠀⠀

Теперь у нас есть все, чтобы понять, как работает Tornado Cash (TC). Когда вы вносите 1 ETH по контракту Tornado Cash , вы представляете хэш доказательство. Этот хэш будет храниться в Merkle. Когда вы снимаете этот 1 ETH с другой учетной записи, вы должны предоставить 2 доказательства с нулевым разглашением. Первый доказывает, что дерево Меркель содержит ваши хэши. Это доказательство является доказательством с нулевым разглашением. Но этого недостаточно, потому что вам должно быть разрешено снять этот 1 ETH только один раз. Из-за этого вы должны предоставить nulifier, уникальный для доказательства. Контракт хранит этот nulifier,и это гарантирует, что вы не сможете снять внесенные деньги более одного раза.

⠀⠀

Заключение

⠀⠀

Санкции на смарт-контракт являются интересным прецедентом, так как смарт-контракт сам по себе автономен, и пока не ясно к каким образом должна выглядеть, например, полная блокировка сервиса на уровне сети Ethereum.

IvanRomanovich для Habr.com.

Lectures associées

Des groupes catholiques et de l'application de la loi mettent en garde contre la loi CLARITY qui pourrait affaiblir les garde-fous contre la criminalité liée aux crypto-actifs

Une coalition de dirigeants catholiques, de groupes liés à l'application de la loi et de défenseurs de la lutte contre la traite des êtres humains met en garde contre le projet de loi CLARITY Act. Ils estiment qu'il pourrait affaiblir les garde-fous utilisés pour lutter contre la criminalité facilitée par les crypto-monnaies. Leurs critiques portent principalement sur des dispositions qui protégeraient les développeurs de logiciels non-custodiaux d'être assimilés à des transmetteurs de fonds. Ce débat soulève une question centrale de la régulation des crypto-actifs : comment distinguer un logiciel neutre d'une intermédiation financière ? Les partisans des crypto-monnaies soutiennent que les développeurs publiant du code non-custodial ne devraient pas être régulés comme des plateformes d'échange. Les critiques, quant à eux, craignent que des exemptions trop larges ne rendent plus difficile le suivi des financements illicites. Le logiciel non-custodial est au cœur de la finance décentralisée (DeFi), permettant des transactions sans qu'une entreprise ne contrôle les fonds. Si cette architecture est un pilier de la valeur des crypto-actifs, elle pose aussi des défis pour les autorités lorsque des acteurs malveillants l'utilisent. L'opposition rencontrée par le CLARITY Act signifie que ses partisans devront répondre aux préoccupations concernant d'éventuelles lacunes favorisant la finance illicite. Cela pourrait conduire à des amendements, des protections plus limitées ou des obligations de déclaration supplémentaires. Pour l'industrie, l'enjeu est de taille : des règles plus claires pourraient stimuler les investissements, mais si le projet est perçu comme affaiblissant la lutte contre le crime, son adoption politique deviendra plus difficile.

bitcoinistIl y a 4 h

Des groupes catholiques et de l'application de la loi mettent en garde contre la loi CLARITY qui pourrait affaiblir les garde-fous contre la criminalité liée aux crypto-actifs

bitcoinistIl y a 4 h

L'histoire complète de Blockstream, la licorne de la cryptographie, profondément impliquée dans de graves fraudes

Depuis le début de l'année, Blockstream, la société cofondée par le pionnier du Bitcoin Adam Back, est sous le feu des critiques. Une enquête publiée début juin par NatInfoSec accuse la société d'avoir potentiellement levé des milliards de dollars via des billets de mine (BMN) liés à des revenus miniers, mais soulève des doutes sur la réalité des fermes de minage et de la puissance de calcul sous-jacente, évoquant des caractéristiques de type schéma de Ponzi. Les principaux points d'accusation sont les suivants : 1. **Capacité de minage et de paiement douteuses** : Pour honorer ses obligations, Blockstream aurait besoin d'une puissance de calcul bien supérieure (20-45 EH/s) à celle affichée sur son tableau de bord (15 EH/s). Aucune preuve publique (connexions électriques, importations de matériel, parts de pool minier) ne corrobore l'existence d'une infrastructure à cette échelle. Les clauses contractuelles permettraient de plus d'utiliser des bitcoins provenant de sources non divulguées pour les paiements. 2. **Rendements élevés et risque** : Les billets offriraient des rendements fixes allant jusqu'à environ 20% par an, ce qui est considéré comme très élevé et difficile à justifier dans le secteur cyclique du minage de Bitcoin. 3. **Antécédents et divulgation concernant Chris Cook** : Christopher William Cook, ancien responsable des opérations minières de Blockstream et actuel PDG d'Exacore (une entité scindée), a été condamné en 2008 pour fraude postale. Ce passé judiciaire n'aurait pas été divulgué dans les documents d'offre des BMN. Des allégations portent également sur des déclarations trompeuses concernant son expérience professionnelle. 4. **Implications potentielles pour BSTR** : L'enquête soulève des questions sur l'entreprise Bitcoin Standard Treasury (BSTR), liée à Adam Back, qui prévoit une introduction en bourse via SPAC, s'interrogeant sur la divulgation des risques liés aux BMN et sur d'éventuels conflits d'intérêts dans sa structure. La recherche BitMEX a apporté des nuances, confirmant probablement les antécédents de Cook et s'interrogeant sur les rendements, mais estimant que d'autres accusations manquaient de preuves ou étaient trompeuses, notamment concernant la séparation juridique entre les BMN et BSTR. Le débat dans la communauté s'est concentré sur la **vérifiabilité** : les investisseurs et observateurs peuvent-ils indépendamment vérifier la puissance de calcul, les revenus miniers réels et la source des paiements ? Malgré les prises de position divergentes, des questions cruciales sur les BMN demeurent sans réponse claire : leur taille réelle et leurs limites de responsabilité, l'adéquation entre la puissance minière et les obligations, l'origine des rendements élevés, la traçabilité des paiements en BTC, et le rôle exact de Chris Cook. Blockstream n'a pas encore publié de réponse systématique à ces allégations.

marsbitIl y a 8 h

L'histoire complète de Blockstream, la licorne de la cryptographie, profondément impliquée dans de graves fraudes

marsbitIl y a 8 h

Le collectif Reddit qui avait "short-squeezé" Wall Street a-t-il trouvé le prochain GME ?

En juin 2024, l'action de Wendy's (WEN) a connu une hausse significative après la diffusion d'un post populaire sur le forum Reddit r/wallstreetbets intitulé "We need to save Wendy's". Cette dynamique rappelle le phénomène des meme stocks, comme celui de GameStop (GME) en 2021. Le post, jouant sur un running gag de la communauté (le fait de devoir travailler chez Wendy's après de mauvais trades), a généré un fort engouement retail, se traduisant par un volume d'échanges anormalement élevé et une hausse de prix. WEN présente certains ingrédients classiques d'un "short squeeze" potentiel : un taux de ventes à découvert élevé (environ 32% des actions en circulation) et une attention communautaire soutenue. Cependant, l'article nuance fortement la comparaison avec le squeeze historique de GME. La structure est jugée moins extrême : le taux de découvert est significatif mais loin des niveaux de GME (qui avait dépassé 100%), et il manque pour l'instant des preuves solides d'un "gamma squeeze" auto-entrenenu via les options. L'élan actuel semble davantage être un "meme pop" à court terme, alimenté par l'attention et un faible prix de l'action, plutôt qu'un mouvement de fond structurel. L'histoire montre que Wendy's, par sa notoriété et son lien avec la culture WSB, est propice à ce genre de vague, mais que la volatilité qui en découle est souvent temporaire. La durabilité de la hausse dépendra de la persistance de la discussion en ligne, des volumes d'échanges sur plusieurs jours et surtout de l'activité sur le marché des options, qui pourrait, ou non, amplifier mécaniquement la tendance.

marsbitIl y a 8 h

Le collectif Reddit qui avait "short-squeezé" Wall Street a-t-il trouvé le prochain GME ?

marsbitIl y a 8 h

Trading

Spot
Futures
活动图片