# 如何工作

### zkSNARKs——保护交易的隐私性

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

旋风协议的原理非常直观——用户将加密货币资产放入匿名资产池中，等上一段时间后，再从该池中提取资产到这个用户的一个全新地址。一存一取的操作完全打破了存款地址和取款地址之间的链上链接，为用户提供匿名性和隐私。

具体的讲，资产在放入匿名资产池后将向用户生成一个证明字符串，相对应的哈希值（称为存证）将连同用户存款金额发送至旋风协议的智能合约。智能合约收到这笔存款后将把存证添加至存款用户的存款清单中。需要提取时，通过提供相应的证明字符串，用户就能在智能合约中的账户存款清单内进行提款操作。通过zkSNARKs（非交互式简洁零知识证明）技术，实现了在此交易过程中无需透露交易详情与确切存款；智能合约通过验证用户提供的证明，将把账户内资金转移至指定的提款地址。这一过程任何一个外部人员都无法查看，也无法了解此提款的来源处。

如需更深入地了解技术细节，请参阅[相关论文](https://tornado.cash/Tornado_cryptographic_review.pdf)。

### 可信启动

我们及其重视“安全性”与“隐私性”，并致力于高标准、高安全性地启动旋风协议。整个项目的智能合约部分是完全开源，欢迎同行审阅。旋风协议的zkSNARKs部分已得到广泛审计。 此外，我们直接使用了tornado.cash的可信启动部分，因为其已经在[以太坊上稳定运行](https://medium.com/@tornado.cash/the-biggest-trusted-setup-ceremony-in-the-world-3c6ab9c8fffa#43d9)将近一年。
