刚刚宣布上线的隐私协议 Aztec 使用了结合零知识证明和同态加密的「零知识 Note」进行保密转账。

原文标题:《V 神赞许的 Aztec,如何让以太坊更隐私?》
撰文:王也

隐私一直是区块链从业者们十分看重的技术领域,中本聪的比特币论文中有一个名为「隐私」的章节,清楚地阐释了比特币的隐私局限性。

比特币是一个完全公开透明的数字货币,只需知道钱包地址,就能查到每一笔资金进出,这样很容易查出帐户与帐户之间的关系,将比特币钱包地址和现实中的关联起来,让人重新成为互联网时代的「透明人」。

为了解决比特币隐私性问题,开发者们也提出了很多以混币原理为核心的解决方案(Odaily 星球日报注:混币原理就是由许多人参与交易,进而在某个交易场所会存在大量的买入和卖出,但是很难在买入和卖出中找到一一对应的映射关系,买入和卖出是被割裂的,所以黑客是无法从一端找出另一端的)。

而另一些开发者为了从根本解决匿名问题,开发了各种支持隐私交易的加密货币,市面上主流的隐私币可以分为四类:混币器类、环签类、零知识证明类和 MimbleWimble 系,各自的代表币种分别是 Dash、Monero、Zcash 和 Grin/Beam。但这些隐私币本身都不支持智能合约,只是单纯作为支付工具使用。

2018 年后,开发者们开始意识到对智能合约进行隐私保护的需求在不断增加,于是,作为协议层的隐私层项目开始活跃在各种场景中。

同隐私币项目不同,隐私层项目可以结合各个公链的支付体系,相对来说更加灵活,而且可以满足用户和开发者特定的隐私需求。分布式资本合伙人黄凌波此前前接受 Odaily 星球日报的采访中更直言隐私层项目将在 2020 年迎来大爆发。

目前在以太坊上知名的隐私项目有 NuCypher,Aztec Protocol 和 Zether 。

去年,Odaily 星球日报曾对 NuCypher 做过专访报道:《专访 | YC 孵化、比特大陆投资的 NuCypher 能做什么?》今天,我们将着重介绍一下主网刚刚宣布上线的 Aztec Protocol (以下简称:Aztec)。

Aztec 于 2018 年 11 月 29 日获得 210 万美金的种子轮投资,由 ConsenSys 领投。跟投的有著名英国风投机构 Samos Invetment 和 Entrepreneur First。除此之外还有著名天使投资人 Jeffrey Tarrant 和 Charlie Songhurst。2 月 1 日,Aztec 宣布启动基于以太坊主网的隐私网络。

使用「零知识 Note」进行保密转账

所谓「隐私」,并非绝对,而是介于完全公开及完全隐私之间。

作为以太坊隐私领域的先驱,Aztec 运用一系列零知识证明 (zero-knowledge proofs) 及同态加密 (homomorphic encryption) 来处理数值,并可对这些加密资料做特定逻辑运算。于是用户可以存取这些加密讯息至区块链,对其做运算验证,而不会透露出它们真正的值。

Aztec 不会像传统的余额形式那样直接显示出「价值」,不会直接将持有者身份和它们的持有数量映射在一起,而是用「票据(note)」的方式来体现。

这些 note 在以太坊网络上是可见的,包括每个 note 的所有者,但是除了 note 所有者之外,note 上存储的金额数量对其他所有人而言都是隐藏的。

Aztec 提供了一种名为 ZKAsset 的资产,在系统里面我们称它为「票据 (note)」,你可以用任意数量的 ERC20 代币转换任一数量的票据,举个例子,我们可以把 10,000 DAI 转换成一张票据,而这张票据就是等值的 10,000 DAI (DAI 是由 MakerDAO 创造的锚定美元的稳定币),此时这张票据的价值是有被记录在区块链上的。

Vitalik Buterin 赞许的 Aztec 如何增强以太坊隐私功能?

上图这一组乱码是用 Aztec 协议进行的转账记录,其实这组乱码就是 DAI (由 MakerDAO 创造的锚定美元的稳定币),这时你可能会感到很奇怪,通常 DAI 会包含一组以太坊地址,及表示该地址持有 DAI 数量的数字;明显上面的不是常规的 DAI 。

当你发送这笔交易时,你的以太坊地址( zac.creditmint.eth )变成了这笔 DAI 的持有者;但值得注意的是,没有人能够具体知道你拥有多少 DAI。和其他 DAI 持有者不同,你的 DAI 余额是经过加密的,并以 Aztec 票据的零知识证明形式展现。你可以随意地将这些 DAI 发送到不同地址,同时没有人能看到你究竟发出去多少。

当你使用 Aztec 票据的零知识证明技术进行交易时,智能合约中不会存储任何的余额信息,仅仅存储椭圆曲线点(密码学上的概念,可以简单地理解为零知识证明机制的组件),而椭圆曲线点对于没有私钥进行解密的第三方来说都只是计算噪声。

Aztec 票据可以被切割成任意数量

Aztec 票据的持有者能以一种合并——拆分(join-split)私密交易的形式花掉他们的票据。

上文提到额的 ZKAsset 的票据是可以切割成任意数量的,而切割时每张票据的价值此时就不是可见于区块链上了,所以当我们把这个票据传给另外一个账号时,只有票据的拥有者可以利用 Aztec 的工具得知这张票据的价值是多少。

而这张票据也可以将任意数量的 ERC20 代币转换出来使用,直到这张票据里面的 ERC20 代币用完。而票据跟票据也可以合并,这样的话里面到底包含多少数量的 ERC20 就会更无法预测。

听了原理你可能还是有些迷糊,这边我们假设一个使用情境来解释:一间公司想要保密的支付每个员工的薪水。这样的情境下,要如何使用 Aztec 来达成呢?

首先公司先把 100,000 DAI 转成一张票据 A,此时这张票据价值 100,000 DAI 是公开的。

Vitalik Buterin 赞许的 Aztec 如何增强以太坊隐私功能?

发薪水时,公司把票据 A 切成两份,分别价值 90,000 DAI 和 10,000DAI 的两张票据 A1,A2。

Vitalik Buterin 赞许的 Aztec 如何增强以太坊隐私功能?

接着把 A2 传送给员工,此时这两张票据的价值并不会公开的记录在区块链上,但是拥有者依然可以透过 Aztec 的工具来验证其价值。

Vitalik Buterin 赞许的 Aztec 如何增强以太坊隐私功能?

员工收到代表 10,000 DAI 的票据后,当需要用钱时可以将此票据中一部分的 DAI 如 1,000 DAI 从隐藏价值的 note 切分出来,一部分变成公开的 DAI,另外一部分仍是隐藏价值的 note,此时区块链上可以知道此员工换出了 1,000 DAI,但是不知道他还剩下多少 DAI,此员工也可以一直重复这个步骤把钱领出。

Vitalik Buterin 赞许的 Aztec 如何增强以太坊隐私功能?

如果下份薪水进来后,此员工还可以把他原本的两张票据合并或切分,让实际还有多少钱更难被推敲出来。

Aztec 如何解决互操性问题?

在公有链上的资产都有一定的互操性,但是如果通过目前这些零知识系统进行加密,这些资产将不再有互操性。

Aztec 为了解决互操性问题,能够让 DApp 之前通过零知识证明进行资产交互,Aztec 设计了全新的零知识系统。所有 Aztec 上的资产共享同一个零知识证明所需要的公共信任设置,且所有的状态有同一个智能合约进行管理,这个智能合约在系统中被称为 Aztec Cryptography Engine (ACE)。

ACE 主要有两个功能,一是将验证证明委托给特定的验证合约,二是对成功的验证证明在 Note Registry 中进行状态更新。

Aztec 的整个设计是为了给 DApp 开发者提供各种隐私模块,开发人员可以将这些模块结合在一起来搭建自己的 DApp 而不需要懂这些复杂的加密学内容。目前 Aztec 提供 7 个模块,这些模块在原理上是通过 Sigma 协议来证明输入和输出票据之间的关联。

Aztec 目前提供的模块有 Join Split (普通的匿名转账), Bilateral Swap (针对两类不同资产之间的交易), Dividend Proof (针对具有分红功能产品), Mint (针对会增发的产品), Burn (针对会销毁产品),Private Range (证明资产金额从而发起有规则的交易), Public Range (与 Private Range 类似) 。

通过 Aztec 进行交易其 Gas 成本随 Join-Split 中输入和输出票据的数量而定。对于完全机密的 j 交易(带有 2 个输入注释和 2 个输出注释),成本约为 900,000 gas。目前正在提案的 EIP-1108 能够大大降低这些交易的成本,减少到大约 200,000-300,000 gas。目前其竞争对手 Zether 的转账成本在 6,000,000 gas 左右,通过 EIP-1108 能够将其降至 1,000,000 gas 左右,在单纯交易费上 Aztec 有一定的优势。

获得 Vitalik 称赞的新证明机制:PLONK

虽说 Aztec 使用的「零知识 Note」证明比 ZK-Snarks 更易于使用,但仍需预信任机制。所以,Aztec 也在探索拥有其他新生解决方案的预信任机制。

Aztec 的 CTO Zac Williamson 和 Protocol Labs 的 Ariel Gabizon 在去年 8 月推出了一种全新的 ZK-SNARK 结构 ——PLONK。虽然 PLONK 仍旧像其他 Zcash SNKARs 一样的可信设置(Trust Setup)过程,但是其可信设置是通用且可更新的。这意味着所有程序都可以重用此单个设置而不必对每个程序进行单独设置。 由于 PLONK 对 Gas 费要求不高,所以非常适合在以太坊上使用,对以太坊而言更有实用价值。

Aztec 首席执行官 Tom Pocock 相信,PLONK 可以被用来编写复杂的逻辑语句,同时保持完美的隐私。

就连 Vitalik 都曾在推特上公开称赞 PLONK 将降低创建零知识证明的复杂性,使更多人能够更容易使用它,「这意味着成千上万的人将很容易参与进来。」

以太坊 2.0 研究员 Justin Drake 称,「PLONK 是一种全新的零知识证明系统,支持通用或可更新的可信设置(trusted setup),而且相比 Sonic 有显著的性能提升。这将会是在真实环境中使用零知识证明的一个巨大进步,并且不会由于可信设置而产生信任问题。」

前段时间,Aztec 宣布通过对 PLONK ZK-SNARK 的增压版本 TurboPLONK 进行一些早期基准测试,最终发现通用 SNARK 可匹敌(在某些情况下)甚至可超过单电路 Groth16,具体来说,基准测试中 PLONK 比 MiMC 上的 Groth16 快 2.5 倍,这意味着 Aztec 在实现基于以太坊可扩展隐私的宏伟目标迈进了重要一步。

参考资料:

《干货 | 隐密交易的到来:深入 AZTEC 协议》

《Aztec Protocol: ConsenSys 领投的隐私设施》

Medium:《Confidential transactions have arrived, a dive into the AZTEC Protocol》

Medium:《AZTEC 保密傳輸協議 — Devcon5 見聞》

来源链接:www.odaily.com