tornado-cash-docs/how-does-tornado.cash-work.md
2021-09-10 17:53:20 +00:00

46 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Как работает Tornado.cash? EDIT
\[Информационный раздел постоянно пополняется\]
Прежде чем погрузиться в мануалы, объясняющие и облегчающие пользование сервисом Tornado.Cash, мы представляем вам общий обзор функционала протокола.
### **Общий обзор функционала Tornado.Cash**
Для достижения конфиденциальности транзакций Tornado.Cash использует смарт-контракты, которые принимают токены на депозит с одного адреса и позволяют выводить их на другой. Эти смарт-контракты работают как пулы, которые объединяют все депонированные активы.
Как только средства выводятся из пула с нового адреса, связь между источником и получателем в сети блокчейн разрывается. Таким образом, выведенные криптоактивы анонимизируются.
Когда пользователь помещает средства в пул \(то есть - осуществляет депозит\), генерируется приватная заметка Tornado Cash Note. Эта приватная заметка служит для пользователя закрытым ключом для последующего доступа к своим средствам. Чтобы снять средства, пользователь может использовать свой старый кошелек либо совершенно новый - с помощью заметки Tornado Cash Note средства будут выведены в считанные минуты.
.
Защита данных, обеспеченная данным протоколом, естественным образом зависит от количества пользователей и размера пула. Чем больше пользователей вносят средства в пул, тем лучше. Однако, чтобы сохранить анонимность, пользователь должен помнить об основных правилах сохранения конфиденциальности:
* Выжидать определенное время между внесением депозита и снятием средств.
* Смешивать свои средства со средствами других пользователей - подождите пока после вашего депозита будут внесены новые, прежде чем выводить свои активы.
_More recommendations are provided on:_ [_Tips to remain anonymous_](tips-to-remain-anonymous.md)_._
Дополнительные рекомендации приведены в разделе: Советы по сохранению анонимности.
### Какой вклад в проект внесли доказательство zk-SNARK и процесс хэширования
Tornado.Cash использует доказательство Zero-Knowledge Succinct Non-Interactive Argument of Knowledge \(также называемый zk-SNARK\) для проверки и разрешения транзакций.
Чтобы обработать депозит, Tornado.Cash генерирует случайную область байтов, вычисляет ее через [хэш Педерсона](https://iden3-docs.readthedocs.io/en/latest/iden3_repos/research/publications/zkproof-standards-workshop-2/pedersen-hash/pedersen.html) \(так как он более совместим с zk-SNARK\), затем отправляет токен и хэш 20 mimc смарт-контракту. Контракт затем вставляет его в дерево Меркла.
Для обработки вывода средств та же область байтов разбивается на две отдельные части: секрет с одной стороны и нуллификатор с другой.
Нуллификатор хэшируется. Этот нуллификатор является публичным вводом информации, который передается по цепочке для сверки с данными смарт-контракта и деревом Меркла. Это позволяет, например, избежать задвоенных транзакций.
Благодаря zk-SNARK можно доказать 20 mimc хэш исходного обязательства и нуллификатора, не раскрывая никакой конкретной информации. Даже если нуллификатор является публичной информацией, конфиденциальность сохраняется, так как нет возможности связать хэшированный нуллификатор с первоначальным платежным обязательством. Кроме того, информация о том, что транзакция присутствует в корне Меркла, информация о точном пути транзакции и о местонахождении транзакции является приватной.
Депозиты просты с технологической точки зрения, но сложны с точки зрения трудозатрат, поскольку необходимо вычислить 20 mimc хэш и обновить дерево Меркла. В то время как процесс снятия средств является более сложным, но более дешевым в плане трудозатрат, поскольку они требуются только для хэша нуллификатора и доказательства с нулевым разглашением.
автор __[_@ayefda_](https://torn.community/u/ayefda)\_\_