作者:knarb
区块链默认是透明的,因此,它缺乏隐私属性。
当区块链上发生交易时,它所涉及的地址的钱包余额、代币、NFT和与其他地址的交互、合约以及它们曾经交易的具体金额都是公开的,任何人都可以看到,尽管公共地址是伪匿名的,但它们可以以某种程度的概率确定性链接到其所有者的身份。如果区块链的采用率要保持其目前的轨迹继续快速发展的话,我们很难想象这种完全透明的水平会大规模的持续下去。
但是与此同时,完全的隐私属性本身又会受到监管和合规问题的限制,这就是为什么隐私层将在基础设施隐私的领域中发挥重要作用的原因,而Aztec就是一个朝此方向不断发展的协议。
AztecNetwork
下面的图片显示了以太坊上智能合约交互的情境。智能合约执行的每一笔交易以及这些交易的确切价值都可以在区块浏览器上看到。
Aztec网络为此引入了一个隐私层。Aztec网络是由ZacWilliamson、JoeAndrews和ThomasPocock创立的,它是以太坊上的一个ZK-rollup,Aztec采用了隐私保护架构,通过零知识证明的隐私交易,进而为用户和去中心化的应用程序提供隐私保护。
隐私架构
Aztec通过一个名为PLONK的零知识证明系统来实现对隐私的访问。
PLONK是指拉格朗日基数的排列组合,用于普遍的非交互式知识论证。
PLONK
PLONK本质上是根据这些多项式之间的最低关联度来排列一组多项式,它使用了一种更普遍和可更新的可信设置,与以前的可信设置迭代相比,它可以同时用于一个以上的加密程序,并允许更多的参与者加入进来。
这里有一份Vitalik关于PLONK的更深入的指南?,这份指南讲解了它的好处和它如何工作的技术问题可以在这里阅读。
由于使用PLONK对这些交易的价值进行了加密,因此Aztec中的交易是具有隐私属性的。该加密值被命名为“Aztecnote”,或者为了简单起见,我们在接下来的文章中将其称为“note”。note由一组椭圆曲线承诺和三个变量组成;信息、查看密钥和支出密钥。
椭圆曲线承诺本质上是一种加密算法,它允许验证者承诺一个特定的值,而在承诺后不能透露或改变该值。
信息指的是Aztec的note,即由Aztec加密的交易值。
一个查看密钥能够解密一个note。拥有查看密钥的人能够查看和阅读note的解密值,并有能力创建一个joint-split零知识证明,这是验证joint-split交易的零知识证明。
谁拥有支出密钥,谁就能签署joint-split的零知识证明。
joint-split交易本质上是销毁note,然后创建不同价值的note,这些note的价值加起来相当于原始note的价值,而joint-split零知识证明可以验证有没有发生过双花,而不透露这些单个note的价值。
理解joint-split交易的一个简单方法是将其视为一个公式:
(A+B)=(C+D)
joint-split交易
如果noteA是50,noteB是50,那么就是100。在joint-split交易中,noteA和B被销毁,新的noteC和D被创建。只要创建的新note的排列组合加起来等于原来的(A+B),也就是100,就没有限制。
所有曾经被创建和销毁的note都保存在两个独立的Merkle树中:一个note树和一个无效树。
Merkle树是一种可以帮助证明数据集完整性的数据结构,同时它通过单向散列函数大大减少了所需的内存要求,该函数将各层数据合并到一个单一的Merkle根,从而能够验证相关Merkle树中包含的所有数据。
note树包含所有曾经创建的note,而无效树包含所有曾经被销毁的note。
“销毁”本身就是一个说法过重的词,因为“销毁”一个note只是意味着将一个相应的无效note添加到无效树中。而验证你对一个note的所有权意味着检查这个特定的note是否存在于note树中,并且在无效树中没有相应的无效值。
Merkle树
当一组note进行joint-split交易时,那些旧的note的无效值被添加到无效树中,而新创建的note被记录在note树中,无效树被交叉检查以确保这些新note没有相应的空值。
让我们用一个适用的例子来回顾一下。想象一下,南希目前有两张50美元的note,想给保罗寄20美元。南希将创建一张加起来为20美元的note送给保罗,并创建一个加起来为80美元的note留给自己。然后,南希将创建一个零知识证明,以验证总和为20美元的一组note的所有权属于保罗,而总和为80美元的另一组纸币的所有权属于她。随后,智能合约将验证这个零知识证明,一旦进行验证,将“销毁”或将南希的两套50美元的旧note的无效值添加到注册表的无效树中,并创建或添加所有新的note集到note树中。
可扩展性
Aztec的证明系统已经升级,现在被称为UltraPlonk,它是用Plookupgate进行提升后的PLONK。通过这次升级,Aztec的扩展基础设施是这样工作的:
一个证明是在浏览器的客户端生成的
28个客户端的证明被汇总成一个内部rollup证明
32个内部rollup证明然后汇总成一个外部rollup证明
然后,外部rollup被验证为根rollup回路,这是另一个更大的回路,其目的是建立确保执行的基础机制的有效性
然后,根rollup回路被发布到以太坊的主网上
外部rollup证明
上面的插图是一个升级后的外部rollup证明,它由32个内部rollup处理的28个客户端证明所组成。在最新的升级之前,一个外部rollup只由4个内部rollup组成。
在升级前,它是28个客户证明乘以4个内部rollup,这相当于112个TPR。升级后,现在是28个客户证明乘以32个内部rollup,结果是896个TPR。
在升级后不仅是TPR增加了8倍,在以太坊主网上发布证明的成本也下降到550000gas,与升级前相比,这相当于减少了30%
有了这些改进,下面是每个用户在升级前后为每笔交易支付的rollup成本。
来源:Aztec
然而,在他们最近的社区AMA中,该团队澄清说,协议的吞吐量在实践中目前徘徊在200TPR左右。尽管仍然比以前的系统升级了2倍,但离所谓的896TPR还很远。其原因是由于以太坊主网无法处理Aztec的根rullup回路的全部容量。该团队确实澄清说,这将在它们的证明系统的下一次升级中得到解决,据称这也将把在以太坊主网上发布证明的成本降低约67%,达到180000的gas费用。
Aztec:Connect
当用户从主网通过桥来到第二层网络时,他们只能与已经部署在他们所处执行环境上的协议进行交互。
即:通过桥到Arbitrum,用户只能与已经部署在Arbitrum上的协议进行交互。提供桥到Optimism,用户只能与部署在Optimism上的协议进行交互,以此类推,其他第二层网络也是如此。
这就产生了两个问题:可组合性和断裂流动性:
可组合性——如果一个rollup用户计划执行多个协议的交易,而这些协议中只有一个没有部署在该rollup上,那么它就不能这样做。例如,如果一个Arbitrum用户想在1inch上进行交易,在AAVE上贷款,在Yearn上来挖矿,但是AAVE并没有部署在Arbitrum上,那么这个用户就不能像在以太坊主网上那样做他们原来想做的事情。
断裂流动性——假设rollup的采用继续增加,那么从以太坊主网分散到这些rollup的流动性也会增加,随着更多的rollup推出自己的激励结构,已经分散的流动性会在各个rollup中变得更加分散
最后,交易仍然是完全透明的。
AztecConnect打算解决这些问题,它是一个将Aztec的rollup与以太坊上的DeFi协议连接起来的可组合隐私桥,它能使Aztec内部的用户能够直接与以太坊主网上的协议进行交互,并具有更高的隐私水平,而不需要这些协议部署在新环境上。
Aztec:Connect是如何工作的?
Aztec内部的所有交易都是具有隐私属性的,Aztec以外的各方无法查看内部活动。当Aztec用户想用协议进行交易时,他们的交易将通过AztecConnect,并与其他Aztec用户的交易进行合并,使用批处理机制有助于每个交易的匿名性设置和更便宜的费用。一旦达到批处理内的阈值,AztecConnect就会将所有单个交易作为一个大的批处理交易在以太坊主网上针对该协议进行执行。
使用AztecConnect的批处理交易。来源:Etherscan
这解决了可组合性问题,因为Aztec用户将可以像在以太坊主网上一样访问所有协议,从交换、借贷、借贷、DeFi挖矿到治理投票。由于协议不必部署在另一个执行环境上,断裂流动性就变得不那么重要了。至于隐私问题,AztecConnect作为一个代理,用户可以在完全匿名的情况下与第一层协议进行交互。
在主网和其他rollup中,区块资源管理器上的交易看起来是这样的:。
Arbitrum上的交易。来源:Arbiscan
使用AztecConnect,区块资源管理器上的交易看起来是这样的:。
使用AztecConnect在主网上进行的交易。来源:Etherscan
想象一下,Aztec就像是一个四周有城墙的城市。外部观察者能看到的只是用户通过桥进出Aztec。在城墙内,用户可以通过完全隐私的交易来交换资产。网络或其参与者都不能看到交易的发送者和接受者,也不能看到他们的金额。此外,一旦进入该系统,用户可以批处理交易并传送回主网——他们可以进行交换,获得收益,借出资金,在DAO中投票,或购买NFT。来源:Aztec文档
zk.money
zk.money是一个建立在Aztec之上的应用程序,它既是一个屏蔽协议,也是一个将用户从以太坊主网接入Aztec的门户。
想要在Aztec内部与DeFi协议或与AztecConnect交互的用户需要通过zk.money进行注册和充值。用户在注册时需要制作一个独特的“化名”作为你公钥之上的内部用户名,从而使其在用户想要相互发送资产时更容易输入和读取。请注意,这个化名只在Aztec内部使用,它不是ENS。用户在注册化名后需要存入至少0.01个ETH+gas费用。
充值到zk.money的ETH将被转换成为zkETH。
虽然初始注册充值目前只支持ETH,但Aztec和zk.money同时支持ETH和DAI。当后者被存入Aztec时会变成zkDAI。
该协议曾经支持renBTC,尽管在他们最近的社区AMA中,团队指出由于与ETH或DAI相比,使用renBTC的需求较低,所以他们不再支持这些代币。因此,他们决定不再支持renBTC,以减少任何可能限制和危害其交易隐私的变量集。
只要用户在Aztec的rollup范围内使用在zk.money注册的地址进行交易,那么他们将使用zkETH和zkDAI进行交易。
当zkETH或zkDAI被发送到未在zk.money注册的地址时,未注册的接收方将收到以太坊主网上的普通ETH或普通DAI。
zk.money是如何工作的
在上面的例子中,0x123发送zkETH给0x456,后者将收到zkETH,因为他们已经在zk.money上进行了注册。
然而,如果0x123发送zkETH给0xABC,后者将收到以太坊主网的普通ETH,因为他们没有在zk.money上进行注册。
尽管0x123如何向0xABC发送ETH,但在区块浏览器上没有证据表明这两个地址之间发生了任何直接的交互,除了两者在某个时间点与AztecConnect智能合约进行了交互。
大家可以阅读这份关于如何设置zk.money的深入指南?。
目前,DeFi协议ElementFinance和Lido可与Aztec:Connect一起使用,前者使用zkDAI,后者通过Curve使用zkETH。Aztec对AAVE、Compound和Liquity等协议的支持将很快到来,在他们最近的社区AMA中,Aztec团队确认支持AztecConnect的去中心化交易所是他们目前的首要任务之一。
结束语
在当前,区块链的隐私属性私被没有引起大家的重视。大多数人不会在意,直到为时已晚,或者直到他们自己亲身经历了缺乏隐私的影响。
可扩展性并不重要,直到它突然变得重要。去中心化并不重要,直到它突然变得重要。隐私并不重要,直到它突然变得重要。
随着UltraPlonk的可扩展性的使用,以太坊作为去中心化的解决层,一个可组合的隐私桥,随着越来越多的协议被集成,以及架构上对基础设施隐私的强调,使得断裂流动性不再是一个问题,Aztec正在很好的成为以太坊的可扩展的、可选择的隐私层。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。