IoTeX生态项目 | Cyclone旋风协议是如何实现匿名工作的?

由IoTeX的Halo开发社区激励计划赞助的Cyclone旋风协议,是一个社区开发、自治的跨链匿名协议。Cyclone是IoTeX网络上首个Defi项目,总供应量为1000万枚,支持流动性和匿名性挖矿。

一般情况下,用户在区块链上所有的交易信息和数额都是公开的。现大部分交易通过BTC,ETH包括IOTX在内的区块浏览器可以查看所有的交易,某人但凡知道了用户的地址,就可以轻轻松松获取用户的支付记录、跟踪用户的资金来源、计算用户的持仓、甚至分析用户的链上活动。

比如近期特别火热的算法稳定币就可以通过监督大户的DAI、ETH、还有持仓量计算出大户吸筹或者出货,让大户感到非常苦恼。

有时候用户也不希望公开自己的交易信息和数额吧?区块链世界里大家是更希望自己的资产不被监督而不是被人所随意监督,如果用户想要实现交易的匿名和隐私,有什么好法子呢?

多年来人们一直试图在区块链上开发出隐蔽交易机制。一些人的思路是掩盖资金的流动过程,比如使用一个中心化的交易所或托管的混币服务。但是,这样做必然会引入高度的对手方和监视风险。Zcash的zkSNARKs的出现在解决该类问题,其使用了零知识证明的各种密码学方法,让转账信息实现加密。

在区块链上也有可能实现真正的隐蔽交易,旋风协议Cyclone是基于IoTeX公链推出的一个新的工具,它是在Tornado的基础上进行经济模型优化的新项目,强大的密码学开发出了突破性的技术、非托管的资金模式,强大的流动性池可以让用户真正实现完全的匿名地实现区块链加密交易。

Cyclone 是如何在区块链上实现隐私的?

旋风协议是一款具有支持多链、非托管性、以隐私为中心等特点的协议。通过非交互式简洁零知识证明(zkSNARKs),旋风协议可以完全打破存款地址和取款地址之间的链上链接,以此实现保护交易隐私。交易中,旋风协议使用智能合约来接收资产/通证存款,而在提取存款时,用户能够通过其他地址从该合约中进行提取。由于双方地址之间无互关性,因此,从旋风协议提取资产时,不存在任何一种方式可以将该交易关系联系起来,从而获得绝对的交易隐私。

旋风协议的零知识证明(zkSNARKs)部分是基于经过业界审计的Tornado.cash实现的。当前,Tornado.cash在ETH以太坊上取得非常不错的表现,但是却存在以下关键问题:

  1. 隐私保护强度依赖于匿名资产池中存款数量,由于没有有效激励,其匿名资产池规模增长缓慢,基本处于停滞状态;
  2. 不支持除ETH以外的区块链;
  3. 缺少去中心化治理来让社区不断完善的协议。

旋风协议旨在解决这些关键问题,通过CYC通证(其通证经济核心是铸币/烧毁,匿名性挖矿和流动性挖矿)提供强大的激励机制、多链支持和去中心化治理以及社区的积极参与。

存款与提款


存款和保存备份笔记界面

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

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

匿名资产池


匿名资产池界面

Cyclone其中一个核心就是匿名池的相关协议。

匿名池的质押数据大小本质上是对匿名性的一种保障。它展示了还有多少笔存款等待被提取。换句话说,用户要提取的加密资产可能来自于多笔被混合的存款。

如何操作?

大家可能注意到了,用户提款时需要进行系列操作:

  • NOTE与Withdraw将通证打到指定收款地址


提款界面

传统方式要求用户拥有一个全新的区块链地址,并且里面还有一些加密通证。这就引出了一个问题。

在保持地址匿名的前提下获怎么转化资产呢?

因为通常情况下Cyclone获取加密资产的方式是从其他人手中购买(无论是否使用交易所),此时全网都可以监督到项目方的信息,Cyclone正是想要避免暴露信息。这就是为什么Cyclone要提供第二个选项。用户只需要生成一个新的区块链地址,剩下的工作 zkSNARKs 证明会进行加密,然后再通过ioTube。这一过程会收取用户一些IOTX,只是用来支付区块链网络的手续费而已。

提款操作步骤:

  1. 点击“提款”选项跳转到提款界面

  1. 输入“笔记”和接收地址,点击提款Withdraw

*(备注:接收地址务必填写IOPAY钱包地址,交易所地址可能会丢失通证)

3.笔记显示相关信息记录,确认后点击“提款”

4.证明生成后,合约提取通证成功


以上为CYC实现匿名提款操作流程。