科普 | 千层蛋糕:Layer-2 指南

来源/以太坊爱好者

哈咯。

我是 Zac,Aztec 团队的 CEO。我们发明了通用型 ZK-SNARK 技术 Plonk 和 zk.money,这是世界上第一个主打隐私的 rollup 实例,也是新近部署到以太坊区块链上的新型 Layer-2 实例之一。

Layer-2 的世界正变得让人目眩神迷,因为许多团队都在稳步将理想化为现实并启动自己的产品。

不过,如果你并不是扎根于这个生态的人员,想必你也需要一些导航才能穿过这片丛林。

令人失望的是,许多在向大家解释 Layer-2 技术的人都有利益相关,并且对某些技术怀有偏见(没错就是他们自己在用的那种!)。

那我跟他们有什么不同吗?没有!我也一样有偏见,但我会事先告诉你,而不会假装公正,你觉得如何?

我会尽我所能给你一个相对平衡的视角。基于区块链的 密码学/扩展方案 的世界很小,每个开拓其边界的团队都值得我们尊敬。所以我们来好好研究一下吧!

什么是 “Layer-2 方案”,有何意义?

以太坊 1.0 的事务吞吐量是很有限的,这也导致了发送事务的代价异常高昂。

以太坊事务的主要代价来源于:

状态存储项变更的成本

事务数据的成本

计算成本

Layer-2 方案则把上述的一项或多项外包给一个依赖于以太坊的次级网络。

一般来说大家把 Layer-2 方案分为两类,各有各的安全要求和取舍:optimistic rollup和zk rollup。Aztec 正在定义第三种类别:private rollup。

Optimistic Rollup

Optimistic rollup 就像是以太坊区块链的缩影。它有自己的一个网络,也承载智能合约和事务。

Optimistic rollup 方案会定期广播其事务区块到 Layer-1 的某个智能合约中。这些 “区块” 包含且仅仅包含该 Optimistic rollup 系统中发生的事务的数据。这个位于 Layer-1 的智能合约也不执行任何计算或更新存储项。这就大幅降低了发布一个区块的开销。

之所以称作 “optimistic”,是因为这样的系统假设了发布出来的 L2 区块中的每一笔事务都是有效的 —— 智能合约不会直接检查它们的有效性。

相反,如果某个用户认为某笔事务是不正确的(例如导致了多重支付),他们可以发布一条 “欺诈证明(fraud-proof)”。Layer-1 上的智能合约可以使用该 rollup 已经发布的数据来验证被指控的事务的有效性。

欺诈证明本身的开销是很大的,但只需要在疑似发生恶意行为的时候才需要执行。

如果恶意行为被坐实,那么发布了这个 optimistic rollup 区块的主体(一般来说称为 “验证者”)就会损失他们事先锁定的密码学货币。

Optimistic rollup 依赖于这种经济学的共识来保证事务都是正确的。

从 Optimistic rollup 中取款的时间一般比较长(例如 1 周)。这是因为事务被公开以后,用户要等待看是否有人指控发生了恶意行为。(有点像婚礼上牧师会问 “是否有人反对这门亲事……” 然后大家陷入尴尬的沉默)

- 等待欺诈证明会大幅拖慢取款的速度 -

在 Optimistic rollup 上执行事务的主要成本来自于要把这些事务的数据发到底层链上的成本。这一数据可得性问题是所有 rollup 都共有的,既包括 optimistic,也包括其他类型的。为了防止资金被冻结,用户必须能够访问到一个 rollup 自始至终的所有事务数据。要么这些数据要发到 layer1 上,要么用户就需要额外的信任(例如,相信侧链会公开这些数据)。

在本文撰写之时,如果你所在的 rollup 不会公开你的事务数据到链上,那你就得寄希望于中心化的服务商不要冻结你的资金了。(译者注:这种说法有点莫名其妙,如果一个 optimistic rollup 不发布事务数据到链上,那它就不叫 optimistic rollup,叫 Plasma。)

优点:

功能丰富。可以复制 Eth1.0 的架构并支持智能合约

相比 zk-rollup 更容易开发和部署

缺点:

资金退出的时延较长。从事务被公开到事务获得终局性需要等待约 1 周的时间。

资金退出时间长的不便可以用承销商来缓解(就是收取少量费用给你提供 L1 资金的流动性提供者……)

ZK Rollup

计算和状态存储都由二级网络来承担。

L2 将事务数据连带相关的有效性证明一起广播到 L1 主网上。所谓 “有效性证明”,就是这些事务有效性的数学证明。一批的 L2 事务都被汇总(roll up)成一笔发往 L1 某个智能合约的事务。

“ZK” 这个前缀指的是 “零知识证明(zero knowledge)”,不过,zk rollup 往往不能保护隐私 —— 所有的事务都会默认公开,就像 Optimistic rollup 一样。使用 “zk” 这个前缀是因为这些系统所依赖的有效性证明往往是用零知识证明系统来生成的(例如 ZK-SNARK 或者 ZK-STARK)。

这种方案的好处在于,存储项更新和计算的开销都从以太坊主链上移除了,而且,也不需要乐观地假设广播出来的事务是正确的,只要证明是有效的,你就知道这些事务是有效的。

这也意味着,取款时间可以比 Optimistic rollup 类的系统快得多,所需的信任假设也更少。

但房间里的大象是,零知识证明给一笔事务附加了惊人的计算开销。

为一段计算生成一个零知识证明的计算开销大约是直接运行这段计算的 100 万倍!这是一个粗略的估计,实际情形可能因原计算本身的特点而有很大差别,但对于 Solidity 智能合约类型的计算程序来说,(这个估计)是大体准确的。

ZK rollup 系统的应对方法是将建构证明的任务委托给拥有大量计算资源的第三方,称为 “rollup 供应商”。用户要依赖这些第三方服务来为他们创建交易。Rollup 供应商可以审查或者抢跑这些事务,就像以太坊的矿工可以做的那样。所需的计算力越多,有能力充当供应商的主体就越少,所以我们必须从协议架构上充分考虑审查问题。

巨大的计算开销也给智能合约的移植带来了一些问题。完全兼容 EVM 是我们的目标,那就必须处理这 100 万倍的减速效果。EVM 对 SNARK 极度不友好,因为其字长是 256 位的,而且原生支持 SHA3 和其它对 SNARK 不友好的哈希算法。即使能够把生成证明的计算开销外包给拥有大量计算资源的主题,可能也是不够的。一种可能的办法是把 zkSNARK 的证明器算法直接写到 FPGA 硬件或者 ASIC 中。那么提供商就需要这种硬件来建构证明。

- 零知识证明的建构比起运行一个普通程序要慢得多。我们的 Plonk 和 Pollkup 研究已经把 SNARK 的速度提高了一个量级,但 zk rollup 相比 optimistic rollup 仍然面临性能瓶颈。-

一般来说,SNARK 和 STARK 的编程语言都不得不适应底层证明系统的低效率。这些语言在实现变长的循环和动态内存访问(比如动态的数组和向量)时都会遇到困难。我们最新的 Plookup 研究缓解了某些问题,也还谈不上解决了所有问题。

这就意味着 zk rollup 需要开发者把他们的合约移植成定制化的编程语言(比如 Starkware 的 Cairo)。

对于不以完全兼容 EVM 为目标的 zk rollup 来说,好处是转账变得更便宜。如果无需遵循 EVM 的语义,就可以降低基本转账的广播数据量。Hermes network 就是这样做的。

优点:

交易的代价可能比 optimistic rollup 更便宜

不需要欺诈证明,取款更快

缺点:

比之 optimistic rollup,增加功能更慢

依赖于使用定制化硬件的第三方

可能需要功能更优先的定制化编程语言。

Private rollup

Aztec 已经在 2021 年 3 月推出了隐私 rollup。你可以把你的 ETH 封装到一个 privacy shield 中,并使用我们的在线隐私钱包 zk.money 来发送隐私交易。

隐私 rollup 使用与 zk rollup 非常相似的技术,但特点完全不同。隐私 rollup 的架构是为了给 L2 的每一个用户提供强大的隐私保证。用户都是匿名持有资金。在运行交易的时候,发送者和接收者都是匿名的,而且转账金额也是加密的。

我们使用的是最先进的零知识证明系统 Plonk。我们在 2019 年发明了 Plonk,它很快就在使用零知识证明并在区块链上做开发的团队间成了行业标准。

在设计上就保证隐私性需要与 zk rollup 截然不同的 rollup 架构。我们采用了隐私优先的路径,因为我们知道,有了一个公开的 L2,再想植入可编程的隐私性,就往往需要牺牲用户体验或激进地重构整个协议。

当前基于以太坊的隐私解决方案是混币器(mixer)。混币器能够匿名化用户的资金数额,但除此之外用户有限。我们的完全版本的隐私型 layer-2 能做得更多:

完全可编程的隐私型智能合约。隐私货币因此有更高级的交易逻辑

NFT 的隐蔽所有权

NFT 的属性可以完全隐蔽,仅对所有者可见

反洗钱和 KYC 检查可以直接编程到隐私 token /dApp 中(例如 KYC token —— 你可以跟可信的对手方交易,而无需知道他们的真实身份)

隐私性 DeFi!这是个很大主题,需要专门写一篇文章来说(在写了在写了……)

只有一开始就把隐私放在首位,才有可能获得这些好处。协议的事务和状态模式也必须设计成与隐私特性相兼容。

优点:

交易是隐蔽的。用户的金融活动不会暴露给第三方

Rollup 供应商也不能审查或者抢跑交易。对他们来说,每一笔交易就像一个随机数字的列表

不需要欺诈证明,取款很快

用户可以单方面取款,无需第三方协助执行计算

缺点:

比公开透明的 L2 更贵(但比主网便宜),直至 数据可得性方案/ Eth 2.0 推出

用户必须在本地构建隐蔽交易的零知识证据。无法委托给第三方。所用的零知识证明系统必须快如闪电

相比 zk rollup 和 optimistic rollup,增加功能更慢,因为客户端的证据构建性能限制。可编程性可以实现,但完全的 EVM 兼容仍需努力

状态模式有所不同。价值必须表示为像比特币 UTXO 那样的 “支票(note)”,而无法使用以太坊的账户模式。当然在应用层可以抽象掉。

在喧嚣中分辨真知

L2 的世界充满竞争,赶在同行前推出产品并获得用户要承受巨大的压力。

压力之下,人们可能会偷工减料或增加额外的信任假设,毕竟用户很难感知到这些。

现在,最大的挑战是数据可得性(data availability)。

如果 L2 不把事务数据发布到区块链上,L2 的控制者就可以冻结用户的资金。

每个开发 L2 方案的团队都希望开拓这类技术的边界。虽然值得钦佩,但他们也可能用技术黑话来掩盖协议的缺陷。

如果你在考虑使用某个 L2 产品,其开发者们应该能充分地回答这些问题:

这种 L2 如何实现数据可得性?如果其交易成本比普通的 ETH 转账低 20 倍以上,他们很可能没有把交易的数据公开到区块链上

用户可不可以仅凭自己在以太坊区块链上获得的信息,就发起单方面的取款呢?

这个产品有无公开的技术描述,可供第三方来验证呢?

此外,对 zk rollup 方案和隐私 rollup 方案,你还应该问下来问题:

链上的数据是否可证明是有效的?所有数据都会作为公开输入,放到 rollup 的电路中吗?

该 L2 是否依赖于中心化的计算集群来生产 rollup?如果是的话,开发团队有无防范审查和抢跑的方案?如果是完全去中心化的,可能会有多少供应商?

证明构建的算法是否公开、可审计?

未来的形状

接下来的 12 个月可能是 L2 世界里最激动人心的时刻。无数的协议将正式启动,奏响整个行业连年的深入研究和工程的强音。

作为 Aztec,我们的目标是开发出可编程的隐私智能合约方案。我们的旗舰 Plonk 编程语言 Noir,可以将高级程序编译成高度优化的 ZKSNARK 电路,这些电路快到能够在浏览器里构造证明。这一技术回事我们的 Aztec 3.0 rollup 架构的里程碑,用户将能使用 Noir 来自定义电路。

结合可编程的隐私性和可扩展性,我们正为 web3 技术范式的普及补上最后一块评图。至少,web3 将能跟传统的 web2 技术在同一个平台上竞争。我们希望隐私密码学货币的 NFT 能够以保护隐私的形式与 DeFi 协议和更传统的金融服务交互,从而培育起丰富的生态。

我们已经用 zk.money 证明了,这并不是什么幻想。我们已经开发出了远大前景所需的关键技术,现在我们要脚踏实地实现我们的愿景。

科普 | 千层蛋糕:Layer-2 指南

扫一扫手机访问

科普 | 千层蛋糕:Layer-2 指南

发表评论