解读 Aztec:将隐私带入 DeFi 的 L2
作者:echo_z,链茶馆
近期,链茶馆发布了L2系列文章,从L2概览到StarkWare、ZKSync等具体项目,分别做过详细介绍。除了之前介绍过的龙头项目外,L2中还有个较为特殊的项目Aztec,实现了隐私交易。隐私交易并不新鲜,但是Aztec即将上线的新功能可以实现隐私Defi,弥补了隐私赛道的缺口。本文将对Aztec进行分析。
市场概览
在现实世界中,「隐私」几乎是默认选项,没有人希望自己的信息泄露。但在区块链世界中,由于链上信息的透明性,用户大多数时候无法享受交易行为的隐私保护。对于现阶段的散户来说,尚且无伤大雅,但是随着行业发展,隐私也必然会成为重要功能。链茶馆判断,用户需求可能会集中在两方面:
其一,大户对于交易隐私保护的需求。大户如果公开自己的大笔余额和交易行为,无异于带着家产招摇过市,容易吸引黑客或者暴露身份。从目前已有的隐私交易项目来看,资金也多集中于大户交易。
下图为Tornado Cash的每月取款数据,其中数字代表取款次数,区间代表提款份额(Tornado的机制为通过0.1ETH、1ETH、10ETH、100ETH四种面额来存提款),计算可得100ETH的提款总额最大,以6月为例,占全部提款额的87.6%。
来源:https://dune.com/poma/tornado-cash_1
其二,当Web3发展到投资之外的范围,如通讯社交等场景时,隐私的需求一定也会凸显。相信没有人希望自己的账户不断被垃圾信息干扰,也没有人会希望自己和密友间的聊天内容被公开。
总结而言,由于Web3当前的使用场景集中于交易投资,仅大户对于隐私有较强需求;而随着Web3功能场景的拓展,隐私需求也会拓展到散户。
从目前的供给来看,实现了隐私功能的项目绝大多数只能满足简单的转账功能。隐私赛道的头部项目包括:FDV~21亿美元的Monero和~11亿美元的Zcash,二者都是独立的L1公链,不支持智能合约;FDV~2.3亿美元的Tornado Cash则是建立在以太坊上的智能合约,只能支持按照有限面额的存提款。除此之外,个别项目如Secret Network可以支持智能合约,FDV~1.7亿美元,然而其核心的隐私功能依赖于硬件设备,安全级别太低[1]。
因此,隐私赛道缺乏功能完备、且安全级别足够高的项目。Aztec作为新兴的隐私项目,具有补足这一缺口的潜力:作为ZK Rollup的项目,可以共享以太坊的安全性,且项目的中短期目标就是实现Defi交互的隐私性,能够为隐私赛道带来新的体验。
产品机制
Aztec的产品体系为:基于底层的PLONK证明系统,实现账户间的匿名交易,并通过网关合约的嫁接来实现和Defi项目的隐私交互。除了网关的部分外,Aztec的隐私实现方式其实和Zcash很相似,类似一个通过Rollup技术共享以太坊安全性的Zcash。下文将对其隐私架构及Defi交互方式进行详述。
隐私架构:UTXO模型与隐私证明
Zcash的记账模型遵循比特币的UTXO(未花费交易支出)模型,每一个UTXO被称为一个Note(票据),记录了每笔交易的变化。举个例子,如果我的账户中有10元的票据,而我此时给其他人转账5元,那么这张10元的票据就会拆分成2张5元的票据,其中一张的所有者是被转账者,另一张的所有者就是我自己。而对于一个账户地址而言,余额的全部就是所有UTXO的总和。
来源:https://medium.com/aztec-protocol/an-introduction-to-aztec-47c70e875dc7
与此相对的,则是以太坊基于账户的记账模型:每个账户对应一个余额,转账时需要在双方的地址数上做加减法。由于每个账户的余额都已经清晰记录在最近一次交易中,不像UTXO那样需要加总账户下的所有UTXO,因此对于较复杂的智能合约来说,账户模型更易于计算,是较主流的记账模型,而UTXO则多见于比特币等简单转账网络。
来源:https://medium.com/aztec-protocol/fully-confidential-ethereum-transactions-aztec-networks-privacy-architecture-274f968b13d4
UTXO模型和账户余额模型有各自的优劣势,而在隐私方面,UTXO适于存放于同一账户的不同地址下,更能够混淆交易之间的联系[2],这大概是Zcash和Aztec都选择了UTXO的原因。
在这样的记账模型下,用户的每一次交易,本质上是销毁了一张或N张票据,生成了另外总和相等的一张或N张票据,并转让了部分票据的所有权。
在Aztec的数据结构中,所有票据的状态存储在两个Merkle Trees中,其中一个是note tree(票据树),存储着所有生成过的票据,另一个则是nullifier tree(废弃树),存储所有被销毁过的票据。所谓「拥有」一张票据,即在note tree中存在对应票据、而在nullifier tree中不存在对应票据[3]。
来源:同上图
那么,用户的隐私是在哪一步实现的,又有哪些信息经过了Rollup(打包)呢?这就涉及到多层证明生成的过程。
当用户要进行一笔交易的时候,需要销毁并生成相应的票据,再将票据的所有权转移,而对于这笔私密交易,用户需要在本地生成一个「隐私证明」(privacy proofs)。随后,28笔私密交易将会聚合为内部Rollup证明( “inner” rollup proof),之后又有32个这样的内部Rollup证明聚合为外部Rollup证明(“outer” rollup proof),外部Rollup证明将会最终被提交到L1上,供节点验证。
下图中显示的是4个内部Rollup证明聚合为1个外部Rollup证明,总共112笔交易,而在今年3月更新的SDK中,提升为32个内部Rollup证明,换言之一个最终提交的Rollup证明中可以包含28*32=896笔交易。
来源:https://medium.com/aztec-protocol/privacy-for-pennies-scaling-aztecs-zkrollup-9f2b36615cc6
需要注意的是,只有用户在本地生成的隐私证明,是真正不泄露信息的零知识证明,也是整个系统中唯一为隐私负责的部分[4]。而在其之上的内部Rollup、外部Rollup证明,都和StarkWare、ZKSync等通用ZK系L2一样,并不必然是零知识。BTW,StarkWare团队曾提议,将ZK Rollups改名为Validity Proof,以免混淆概念[5]。
Aztec的Rollup方式和StarkWare、ZKSync等ZK系L2还有一个很大的不同:通常ZK系Rollup都是将多笔交易打包,生成聚合证明,而Aztec为了实现隐私,需要将每笔交易分别生成证明,再将证明打包生产证明。这大概也是Aztec的gas fee高于其他所有Rollups的原因。
在整个过程中,可以看到多个源自Zcash的做法,包括UTXO记账模型、两种Merkle Trees的设计、用户在本地生成隐私证明的方式,都和Zcash相同。此外,Aztec还提供内部转账的功能,也就是一个匿名账户可以给另一个匿名账户转账,这能够隐匿两个地址之间的交易联系,避免由于某个钱包地址余额不足、需要输入矿工费等场景下,和另一个钱包产生公开联系。如此,会比Tornado Cash这类仅仅通过面额池存提款的方式更能保护隐私,而Zcash也提供这一功能。
Zcash提供的多种转账模式,红框为匿名到匿名,也就是Aztec中的内部转账功能。来源:https://z.cash/technology/
至此,我们基本可以理解Aztec的隐私架构:采用UTXO的记账模型,以「票据」的分拆和所有权转让实现转账,由用户在本地生成隐私证明来实现隐私交易,再通过双层Rollup实现多笔交易的聚合证明,提交到L1验证。底层隐私架构有不少设计取自Zcash,而通过Rollup的聚合证明方式则借用了以太坊安全性,有些类似一个Rollup版的Zcash。
Aztec Connect:通过网关实现Defi隐私交互
上述隐私架构实现了用户的私密交易,但到这一步为止只是将隐私交易迁移到了L2,相对原来的解决方案并没有显著进步,仍然只能实现简单的转账。Aztec的目标也不止于此,长期希望能够支持所有智能合约的隐私交互,而其中短期目标是实现L1上Defi的隐私交互。
Aztec实现隐私Defi的方式比较讨巧。由于采用了UTXO模型,不适用于复杂的智能合约,因此Aztec没有试图在L2上推广智能合约,而是通过「网关」的方式,将交易聚合到L1。
其具体的方式是:当用户要进行一个Defi交易时,Aztec会把同类型的交易打包,并把这些交易传递给Aztec Bridge Contract——一个部署在L1的合约,再通过这个合约聚合资金并调用相应的Defi功能,最后将交易完成的资金按比例返还给L2上的账户[6]。
这有点类似一个金库策略,将同类的交易行为打包完成,在实现隐私的同时也能够分摊gas fee。
对于L1的Defi项目来说,迁移变得非常简单,不再需要重新部署合约,只需要和Aztec Connect完成接口即可。不过,这也降低了项目部署的灵活性,只有同类型的交易足够多才能够摊薄费用,否则单笔交易仍然会比较贵。如此看来,这一方式短期内大概只适合操作单一、资金密集的项目。
运营现状
Aztec的隐私设计基于UTXO模型,不适于复杂的智能合约开发,目前的产品仅限于团队自己开发的zk.money,对于其他项目的集成主要通过Aztec Connect网关合约来实现。
zk.money最早发布于去年3月,目前正在新版和旧版的分叉阶段,新版仍未上线。
旧版zk.money只能实现简单的转账支付,支持ETH/DAI/renBTC三种资产。用户每次连接时,需要通过ETH钱包进行签名,之后可通过「Shield」存款,再通过「Send」进行内部转账、或提款到L1账户。
来源:https://old.zk.money/asset/ETH
由于功能简单、手续费较高,旧版zk.money的使用率较低,当前TVL仅在~500万美元,高峰时也仅为~1,400万美元。
来源:https://defillama.com/protocol/aztec
新版zk.money将会上线Aztec Connect,实现隐私Defi,是Aztec项目的重要里程碑,原定于6月初上线,但目前仍在处理问题,还没有明确的上线日期。根据今年4月的官方博客,初期应该会集成Element.fi和Lido,作为最早上线的隐私Defi[7]。
整体来看,Aztec的设计可以方便地接入L1的Defi,但是没有提供项目自由部署的选项,如此则较难建立独立的公链生态,更像是为L1的Defi项目集成了一个隐私选项。
团队及融资
Aztec的核心团队有较强的技术能力,其底层证明系统PLONK的三位合作者中的两位均在Aztec。
CEO Zac Williamson,牛津大学粒子物理学博士,PLONK发明者之一,曾在CERN(欧洲核子研究中心)和T2K(日本一个粒子物理学实验)担任物理学家。
CPO产品总监Joe Andrews,伦敦帝国学院材料科学工学士,曾在硅谷的餐饮创业公司Radish担任CTO。
首席科学家Ariel Gabizon,以色列魏兹曼研究所(Weizmann Institute)计算机博士,曾在Zcash担任研究员和工程师,也是PLONK的发明者之一。
截至目前为止,Aztec披露过的融资金额累计1,910万美元。2018年11月公布了由Consensys领投的210万美元种子轮融资;2021年12月公布了由Paradigm领投的1,700万美元融资,其他参投者包括IOSG Ventures、Variant Fund、Nascent、imToken、Scalar Capital、Defi Alliance、ZK Validator及天使投资人Anthony Sassano、Stani KulecFhov、Bankless、Defi Dad、Mariano Conti、Vitalik Buterin,且上轮投资方 a_capital、Ethereal Ventures和Libertus Capital也继续加注。此外,2019年9月也曾公布过一轮种子轮融资,但未披露金额。
优势与挑战
链茶馆认为,Aztec的核心优势为:产品实现了安全级别较高、且能够和Defi项目交互的隐私功能,而当前隐私赛道绝大多数产品仅能支持简单转账功能,Aztec有效填补了赛道空缺。不过,这一功能仍未上线,需要观测上线后的功能表现。
然而一体两面,特殊的隐私功能也在很大程度上限制了项目。
一方面,Aztec依靠集成网关合约来实现对Defi项目的操作,在降低部署难度的同时也降低了灵活性,短期来看更适合操作单一、资本密集的项目。
另一方面,为了实现隐私,要求给每一笔交易都生成隐私证明,虽然项目通过双层Rollup方式分摊了存储空间,但Aztec的手续费在所有L2中仍然是最高的,对用户而言门槛也较高,更适合大户。
总体来看,Aztec的产品功能简单直接,预计如果功能表现尚可,会在L2中占据一席之地;但就目前与Defi的标准化集成方式来看,更像是为L1的Defi项目所做的功能补充,可能天花板不会太高。
Aztec的远期目标不止于此,最终是希望实现所有智能合约的隐私交互,而要实现这一目标,大概需要全新的方案。