# Как работает Tornado Cash?

Прежде чем погрузиться в руководства, объясняющие и упрощающие использование Tornado.Cash, приведем общий обзор глобального функционирования протокола.<br>

<figure><img src="https://docs.tornadoeth.cash/~gitbook/image?url=https%3A%2F%2F679099605-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FEtJYowcoUd8dyfwpjiol%252Fuploads%252FUEHlsK7tTuKhTGw6PFTJ%252FHowTornadoCashWorks.webp%3Falt%3Dmedia%26token%3Db7be18ab-a511-4ddb-be0c-aad9799382ea&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=77a5ae1c&#x26;sv=1" alt=""><figcaption></figcaption></figure>

**Глобальный обзор функционирования Tornado.Cash**

Чтобы добиться конфиденциальности,[Торнадо.Кэш](https://tornadoeth.cash/) **использует смарт-контракты, которые принимают депозиты токенов с одного адреса и позволяют их вывод с другого адреса** . Эти смарт-контракты работают как пулы, в которых смешиваются все депонированные активы. Как только средства выводятся по совершенно новому адресу из этих пулов, внутрисетевая связь между источником и местом назначения разрывается. Таким образом, выведенные криптоактивы анонимизируются. Пока токены находятся в пуле Tornado Cash, хранение остается в руках пользователей. Таким образом, пользователи имеют полный контроль над своими токенами.&#x20;

**Для традиционных пулов Tornado Cash с фиксированной суммой** :

* Когда пользователь помещает средства в пул (он же депозит), создается личная заметка. Эта личная заметка работает как личный ключ, позволяющий пользователю позже получить доступ к этим средствам. Чтобы вывести их, тот же пользователь может использовать другой адрес — старый или новый — и восстановить свои средства благодаря этому закрытому ключу.

**Для Tornado Cash Nova новый пул ETH с произвольными суммами и защищенными переводами** :

* Средства напрямую привязаны к определенному адресу кошелька. Нет никакой личной заметки или ключа. Пользователи могут получить доступ к своим средствам, подключившись к пулу по соответствующему адресу.
* Хранение осуществляется либо путем внесения токенов в пул, либо путем регистрации в пуле и получения защищенных переводов с другого адреса.

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

* Использование ретранслятора для оплаты газа при выводе;
* Предоставление времени между внесением депозита и снятием средств;
* Смешивает свои средства с толпой, ожидая нескольких транзакций, прежде чем вернуть свои активы.

*Дополнительные рекомендации представлены в:* [*Советы, как сохранить анонимность*](/generaly/sovety-po-sokhraneniyu-anonimnosti.md)*.*

**Вклад zk-SNARK и процесса хеширования**

Tornado.Cash использует краткий неинтерактивный аргумент знания с нулевым разглашением (также называемый 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 в смарт-контракт. Затем контракт вставит его в дерево Меркла.&#x20;

Для обработки вывода одна и та же область байтов разделяется на две отдельные части: секрет **с** одной стороны и **обнулитель** с другой стороны. Обнулитель хешируется. Этот обнулитель представляет собой общедоступные входные данные, которые отправляются в цепочку для проверки с помощью смарт-контракта и данных дерева Меркла.&#x20;

Например, это позволяет избежать двойных расходов. Благодаря zk-SNARK можно доказать хэш 20 MiMC первоначального обязательства и обнулителя, не раскрывая никакой информации. Даже если обнулитель является общедоступным, конфиденциальность сохраняется, поскольку невозможно связать хешированный обнулитель с первоначальным обязательством.&#x20;

Кроме того, даже если информация о транзакции присутствует в корне Merkle, информация о точном пути Merkle, а затем и о местонахождении транзакции, по-прежнему остается конфиденциальной.&#x20;

Депозиты просты с технической точки зрения, но дороги в с точки зрения газа, поскольку им нужно вычислить хэш 20 MiMC и обновить дерево Меркла. С другой стороны, процесс вывода сложен, но дешевле, поскольку газ необходим только для хеш-нулификатора и доказательства с нулевым разглашением.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-ru.tornadoeth.cash/generaly/kak-rabotaet-tornado-cash.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
