# Как это устроено

### zkSNARKs для транзакций с сохранением конфиденциальности

![](https://github.com/tornadocash/tornado-core/raw/master/docs/diagram.png)

Cyclone прост: пользователь вносит криптовалюту в пул, а затем выводит средства из этого же пула, что скрывает историю депонированных токенов. Для депозитов пользователь отправляет «секрет» в виде хеш-кода (называемого обязательством) и сумму депозита в смарт-контракт Cyclone. Контракт принимает депозит и добавляет обязательство в свой список депозитов.

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

[Для еще более глубокого погружения см. Криптографический обзор.](https://tornado.cash/Tornado_cryptographic_review.pdf)

## Надежная установка

Как анонимная команда мы ценим полную прозрачность и стремимся к безопасному и плавному запуску Cyclone. Все с открытым исходным кодом и поддается проверке - мы применяем точную реализацию zkSNARKs, используемую tornado.cash, которая была тщательно проверена ([схемы](https://tornado.cash/Tornado_circuit_audit.pdf), [смарт-контракты](https://tornado.cash/Tornado_solidity_audit.pdf)). Кроме того, мы напрямую используем результат `Trusted Setup MPC`, который успешно работает на [Ethereum](https://medium.com/@tornado.cash/the-biggest-trusted-setup-ceremony-in-the-world-3c6ab9c8fffa#43d9).

## Контрактные адреса в основной сети IoTeX

* Cyclone Token: `io1f4acssp65t6s90egjkzpvrdsrjjyysnvxgqjrh`
* Timelock: `io10jv5lvagcgyvzagdlymagucyp3sy9ykktkudth`
* GovernorAlpha:`io1w8n28wr5dpc2uh3pzvx4n402h0l2agmu67a26x`
* Aeolus: `io1j2rwjfcm7jt7cwdnlkh0203chlrtfnc59424xc`
* Hasher: `io1pfq0g3ye7pp0gamtw4hj9kskunn3ue7400wdm5`
* Verifier: `io1rn3z2c9hc3fxnukwa0cl69hdveh0uy8mar8vqr`

## Контрактные адреса в сети BSC Mainnet

* Cyclone Token:`0x810ee35443639348adbbc467b33310d2ab43c168`
* Aeolus: `0x74fb687ad9c2c7635a8cab7dbb97d2b025fa85fa`
* C3PO Pool:`0x66b5e322dc31f8c7a33ffd23975163795f8d16c7`
* R2D2 Pool: `0xbe19d541389c9d3e03efc08f3d5008e8c9cc42a5`
* BB8 Pool: `0x79459751f6882868d1299bfa412428488b434541`
* Verifier: `0x9286e9271bf497ec39b3fdaef53e38bfc6b4cf14`

## Контрактные адреса в  сети Ethereum Mainnet

* Cyclone Token: `0x8861cff2366c1128fd699b68304ad99a0764ef9a`
* Timelock: `TBD`
* Aeolus: `TBD`
* Hasher: `TBD`
* Verifier: `TBD`


---

# 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.cyclone.xyz/russkii/how-it-works.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.
