从灵活性、可扩展性、安全性等角度对比 ZK Rollup 和 Optimistic Rollup 这两种备受关注的以太坊二层扩容方案。

原文标题:《一文读懂 ZK Rollup 和 Optimistic Rollup: 以太坊重要的扩展方向》(Optimistic vs. ZK Rollup: Deep Dive)
撰文:Alex Gluchowski
翻译:JOKO

多年来,扩展性一直困扰着公链。关于扩展性的解决方案有的在概念论证中,有的在研发中。Optimistic Rollup 和 Zk Rollup 也是扩展性的解决方案,并引起了加密社区的浓厚兴趣。那么,到底什么 Optimistic Rollup 和 ZK Rollup?哪一种技术路线会赢得以太坊扩展的未来?不管道路如何曲折,之前的努力是否有用(如 plasma 等技术解决方案),但以太坊的扩展之路一直在前进,满足主流场景并非遥不可及。本文作者 Alex Gluchowski,由蓝狐笔记社群的「JOKO」翻译。


Optimistic Rollup 是一种很有希望在短期内扩展以太坊上通用智能合约的技术。如果构建足够快,它能够提供可以轻松迁移现有 dApp 和服务的方法,且能合理权衡安全和可扩展性。这将使得 ETH1.0 能够满足不断增长的需求。

ZK Rollup 是一种更加复杂的技术。它如今可以用于代币转移和特定应用。然而,要在通用智能合约上实现还需要更长一些时间,并且要想高效地将 EVM 包裹于 ZKP 中甚至还需要更多的研究工作。(蓝狐笔记:ZKP 是指零知识证明)

不过,一旦 ZK Rollup 完全开发出来,所有现有的以太坊 dApp 和服务都能够平滑且轻松地迁移过去。

ZK Rollup 将会解决 Optimistic Rollup 上的几个基本问题:

  • 消除让人讨厌的尾巴风险:通过复杂但可行的攻击向量盗取资金;
  • 将提取资金时间从 1-2 周减少至几分钟;
  • 支持快速交易确认并以无限制的数量退出;
  • 默认引入隐私。

Optimistic Rollup 对 ZK Rollup 来说是个好消息。向 Layer 2 扩展的过渡要求对钱包、预言机、dApp、用户习惯的重大改变。Optimistic Rollup 有助于为这一行动做好生态系统的准备,将扩展性带入这些尚不能基于 ZK Rollup 构建的 dApp。这给予 ZK Rollup 足够的时间发展成熟,并使其实现完全无缝的采用,与此同时维持以太坊的增长势头。

Rollup 101

什么是 Rollup?

Rollup 是类似于 Plasma 的 Layer-2 扩展性解决方案:单个主链合约持有所有资金,并对较大的「侧链」状态(通常是账户、余额及其状态的 Merkle 树)进行简洁的加密承诺。侧链状态由用户和运营商链下维持,且不依赖于 Layer 1 的存储(这是最大的扩展性胜利的源头)。

将 Rollup 和 Plasma 区分开来的是它解决了 Plasms 的巨大问题:数据可用性,其方式是通过 Layer 1 网络为每笔交易发布一些数据(在以太坊,专门为此目的使用 tx CALLDATA)。

因此可以在单个 Rollup 区块中将数千个交易捆绑在一起。尽管此方法的成本严格地呈线性增长(交易数量的 O(n) ),但它在吞吐量上实际可提升 100 倍,因为 CALLDATA 比 Layer 1 存储和计算要便宜。

Rollup 已经被 Vitalik Buterin 反复认可为其最喜欢的 Layer 2 可扩展性解决方案。根据如何确保状态转换的正确性,有两种 Rollup 方式:ZK Rollup 和 Optimistic Rollup。

什么是 ZK Rollup?

在 ZK-Rollup 中,运营商必须为每个状态转换生成一个 SNARK (蓝狐笔记:简洁非互动的知情证明,Succinct Non-interactive ARgument of Knowledge),并由主链上的 Rollup 合约进行验证。此 SNARK 证明存在一系列由所有者正确签名的交易,这些交易以正确的方式更新了账户余额,并使得 Merkle root 从旧到新。因此,运营商不可能提交无效或操纵的状态。

什么是 Optimistic Rollup?

在 Optimistic Rollup 中,新状态根由运营商发布,且无需每次都由 Rollup 智能合约检查。相反,每个人都希望状态转换是正确的。但是,如果发布了不正确的状态转换,其他运营商或用户(必须观察在 Layer 1 Rollup 合约中的情况,执行每个单笔交易)将能够指出错误的交易,并还原错误的区块,消减恶意运营商的押金。Optimistic Rollup 的概念最初由 John Adler 提出的。

接下来,让我们比较一下 ZK Rollup 和 Optimsitc Rollup。

灵活性: 通用计算

Optimistic Rollup

尽管 Optimistic Rollup 可用于特定的应用,但是 Plasma Group 最重要的创新是 OVM (Optimistic Vitual Machine)。OVM 支持任意智能合约逻辑的实现。

几乎任何在以太坊上能实现的同样可以在 OVM 上实现,这其中包括智能合约的可组合性。它基于 EVM,EWASM 或任何其他虚拟机。关于 OVM 的好处是,如果它与 EVM 一起使用,它将支持用 Solidity 编写代码。因此,大部分现有的代码库都可以轻松移植到 Optimistic Rollup 上。

如果 OVM 可以直接重用现有的 EVM 字节码,那会是理想的选择,但这可能不是那么简单。正确的实现方式将要求更改交易数据(CALLDATA)格式,并要求复杂的 Truebit/Plasma Leap 风格的挑战 / 响应协议的实现,以提供欺诈证明。

这可能会导致与 EVM 产生分歧,从而导致无法正确处理边缘情况,这意味着仍然需要做一些工作才能适应当前的 OVM 合约。实施的另外一个挑战在于,大型区块的欺诈证明可能需要比 Layer 1 区块 gas limit 所允许的更多的 gas。那么,这些欺诈证明必须被分解为多个 ETH 交易。

ZK Rollup

迄今为止,所有现有的 ZK-Rollup 实现聚焦于特定的操作,例如代币转移或原子交换。这其中有几个主要原因。

首先,没有一种有效的技术可用于针对不同 ZKP 的简洁递归证明组合,这需要将不同智能合约的执行汇总到一个区块中。我们最好的方法是在椭圆曲线的循环上使用 Groth16 (由 Coda 使用),这需要在较长的字段上进行计算,并且对于大型计算完全没有效率。

其次,即使我们的字段较短,Groth16 也会为每个智能合约和每个新版本要求一个单独可信的设置仪式。显然,这绝对是不现实的。无须可信设置的唯一有效的 ZKP 技术是基于 FRI 的 STARKs。但是,验证程序仅对有限的一类问题(可以表示为简洁的算术电路)是简洁的。

STARK 验证程序必须对被证明的计算语句的每个约束至少执行一次,这意味着我们无法迭代异构智能合约的集合。

随着 SNORKs 的出现,一切都发生改变。SNORK 是基于稍微不同的一组加密原语(著名的多项式承诺方案)的新一代 ZKP。由 Sean Bowe 在 Sonic 中率先开发,在 2019 年夏季 PLONK 和 Marlin 紧跟其后。所有这些都有一个共同点:尽管依然需要可信设置,但现在它是通用且可更新的。完成一次之后,它可以随时将其重用于任何数量的不同程序。

然而,在这些证明系统中使用的 Kate 多项式承诺方案依然需要高效的椭圆曲线循环来进行递归,而目前尚不可用。这就是我们为什么对最新的完全简洁和透明(无可信设置)的证明系统感到兴奋,例如 Halo、SuperSonic、Fractal,以及 Matter Labs 团队最近在折腾的让人兴奋的事情。

长话短说:在 ZKP 上构建通用智能合约的障碍现在已经被移除。ZK Rollup 完全能够支持与 EVM 相同的编程模型,包括无缝可组合性和可互操作性。尽管 Solidity 开发者的学习曲线不会超过一天,但最初的合约可能需要专用的 DSL。最终,鉴于 ZKP 证明者技术的当前发展步伐,我们期望所有的现存 ETH (甚至 EWASM)合约都能以最小的努力有效地移植过来。

可扩展性 & 交易成本

Optimistic Rollup

  • 根据 John Adler 的说法,在 EIP2028/ 伊斯坦布尔之后,目前的估算是每笔转账 tx 大约 4k 的 gas。
  • 这意味着,相当于大约 100 tps。
  • 使用 BLS 聚合签名,此数字最多可以上升到大约 500 tps (为了不破坏 EVM 兼容性,tx 参数将可能会保留很长时间)。
  • 如果 EVM 兼容性遭到破坏,则理论上吞吐量可能会增长到 ZKP 的极限。

实际吞吐量上限(代币转移):500 tps

目前可能还不错。

ZK Rollup

  • 在 Matter Testnet 中每笔转移 tx 的公共数据成本当前是 16bytes,这将在 EIP2028/ 伊斯坦布尔后花费 272 gas 费用。
  • 此外,将会有证明的摊销费用,预计大约为 30 万 gas。
  • 即使我们假定最坏的情况,需要 100 万 gas 证明成本,但估算的转账上限仍将超过 2140 tps。
  • 在一些讨论中,可以听到人们争论说 ZKP 会产生大量的计算开销,由此价格昂贵。实际上,与 gas 成本相比较,计算成本可以忽略不计,这是真正的瓶颈,因为抗审查的分散化。我们也期望这个因素会随时间的推移而显著下降。

实际吞吐量上限(代币转移):超过 2000 tps —— 类似于 Visa 的规模。

但是,在许多用例中,ZK Rollup 将节省更多,因为可以从公共数据中省略大块部分(通过将它们移至 ZK 电路证明),而无须重构状态转换增量。

核心见解是:尽管 Optimistic Rollup 始终要求用户发布完全的交易输入,而在 ZK Rollup 中,我们可以灵活地在如下两者间选择:1)交易输入减去不影响状态转换的见证人 2)仅交易输出。可以非常优雅地实现这一选择,而无须太多复杂性。

著名的例子:

  • 在多签钱包,具有 Argent 风格账户抽象的钱包或去中心化交易所,用户需要提交签名以获得合约的验证。这些签名对于状态增量更新是非必需的,可以从公开数据中省略。
  • 像 Gnosis 的 Dfusion Dutch DEX 这样的合约要求大量的数据集输入,这些输入不会直接影响存储,但仅用于验证计算结果。

ETH 2.0 之后

由于任何 Rollup 将位于单个分片中,因此,CALLDATA 的成本(以及 Rollup 交易成本)不太可能发生很大的变化,除非带宽通常变得更便宜。

元交易

两种类型的 Rollup 都非常适合支持元交易和账户抽象。

安全

Optimistic Rollup

与支付通道不同,Rollup 中的所有资金都由单个智能合约持有。既然 Rollup 是最有希望的扩展方向,我们应该看到大量的用户迁移其中,且很多价值集中于这类合约。持有数千万上亿(甚至数十亿)美元价值的资产,对于知名黑客来说,Rollup 合约正变成非常有吸引力的蜜罐,如果攻击有机会,那么,无论多么复杂,都有可能会尝试进行。

Optimistic Rollup 的安全模型基于两个假设:

  1. 至少在 n 个节点中有 1 个诚实节点执行所有 Optimistic Rollup 交易,并且在无效状态转换发布时提交欺诈证明;

  2. 底层 Layer 1 网络有强大的抗审查性

N 个节点中至少有一个诚实节点参与者

对于第一点,现实的期望是,只有 Rollup 的运营商才会实际监控和执行交易。普通用户既没有动力也没有技术能力来处理高负载的交易(如果他们可以,扩展来源于哪里?)幸运的是,运营商自然地有动力去检查彼此区块的正确性,因为基于无效区块上搭建区块会被消减资产。

有足够的可信参与者,N 个节点中有 1 个诚实节点运营商是合理的假设。但是,既然活跃参与者的数量有限(几百个?),一些复杂的攻击可能包括:针对所有运营商的基础设施(非常困难但并非不可行),贿赂 / 勒索开发工程师秘密安装恶意代码,针对 Rollup 软件的更新分发渠道等,当然,还可能是这些攻击的组合。

这些攻击很难实现,但应该积极防御,但比起用同样的方式攻击以太坊矿工,这些攻击要更加现实,尤其是因为对 Optimistic Rollup 的成功攻击直到完成后才会被注意到。

强大的 Layer 1 抗审查性

第二个假设是棘手的假设。实际上,以太坊的设计提供了经济机制,它对抗普通审查非常有效。但是,在出现反机制时,这些机制会停止起作用。攻击者可以创建完全自动的贿赂机制来协调矿工的 51% 攻击,这会阻止诚实矿工将欺诈证明包含在其区块中。

有趣的是,对于参与的矿工来说,此次攻击的直接成本为零,如果可以明确地归因于审查,则不计入由愤怒社区反应所产生的社会成本。这部分也很棘手,因为该机制为攻击的参与者提供了合理的可否认性:「鉴于攻击者多数的可信承诺,如果我不参与,我的区块会被抛弃,所以,我必须这么做,不是为了利润,而是为了避免损失。」

不幸的是,在 PoW 下,这种攻击非常现实。没有什么有效的方法来惩罚参与其中的匿名矿工。在转向 PoS 后,社区将可以通过消减矿工的质押权益来惩罚他们,如果达成广泛的社会共识。

毕竟,这样的审查攻击可以被视为对整个网络的侵略,尽管也可以说,矿工只是简单地诚实地遵循协议,且没有义务以违背其最佳经济利益方式行事。

但是,在 DAO 分叉后,至少可以说,这将是非常有争议的讨论,其结果无法预测。在 Vitalik 最近进行的一次社区民意测验中,无论遇到什么程度的攻击,63% 的投票者反对对不可变的区块链进行任何人工干预来救助用户。不用说,要清除即使一个验证者的权益(蓝狐笔记:此处是指质押资金)也非常困难,更不用说清除大多数验证者的权益。

最近发布了更多关于串通合谋的研究,以及针对 PoS 环境中欺诈证明的新攻击,这表明在 PoS 中 Optimistic Rollup 的审查攻击风险至少与 PoW 一样高。__

抵抗这种攻击的更现实的方法是在 UASF (用户激活的软分叉)中社区的快速动员,以迫使矿工将某些交易包括进来。从工程和社会的角度看,这种场景都是复杂的,且将肯定要求相对长的挑战期窗口,以提供欺诈证明,至少一周,最好两周。

同时,鉴于主要的 DeFi 运营商在决定这种分叉的结果时处于有利位置,且避免吵闹的干扰事件符合其最大利益。所以,他们的最佳选择可能只是静静地遵循攻击者(这将使以太坊保持最长链,并产生比成功软分叉更少的争议)。

总的来说,欺诈证明审查的风险相对较低,但不可忽略。

由于存在 1-2 周的欺诈证明挑战期,并且没有太多资金的利害关系,Optimistic Rollup 可能是没有问题的:运营商 / 矿工合谋将不值得麻烦和冒风险。但是,如果 rollup 中的价值升高,潜伏的黑天鹅将会变得越来越让人担忧。

ZK Rollup

在 ZK Rollup 中,在其变为有效之前,每个状态转换都通过 Rollup 智能合约进行验证。严格来说,运营商无法盗取资金或破坏 Rollup 状态。ZK Rollup 依赖于 Layer 1 的抗审查性,只是为了其活性,而不是为了安全性。无须任何人来监控 ZK Rollup,在区块验证后,用户资金总是保证最终能被收回,即使运营商拒绝合作。

因此,ZK Rollup 更充分地体现了加密世界的基本理念:通过密码学和博弈理论激励机制来取代可信方,以实现弹性。但是,为了完整起见,我必须提到 ZK Rollup 特有的一些潜在风险。

可信设置

如果在 ZK Rollup 中使用的 ZKP 需要通用的可信设置,则我们将得出「N 分之一」诚实参与者的假设。根据参与者的数量和质量,这可能是可接受的风险,也可能是不可接受的风险。但安全是安全的,这就是为什么我对高效无须信任的 SNARKs 最新进展感到非常兴奋的原因,尤其是 Matter Labs 正在进行构建上。

密码学

与 Groth16 相比,最新一代的 SNARKs 正在使用的是更多经过实践检验的加密原语。Matter Lab 的工作基于 FRI,因此甚至可以说是具有后量子的安全性。但是,要完全冷静下来,应该应用两种缓解策略:

  • 与 RSA 挑战类似,必须以比实际产品版本更低安全参数来部署大量奖金。如果发现了实际攻击,研究者会在产品代码被破坏数年前克服挑战。
  • 所有状态转换必须仅由 ZKR 的运营商发送,而 ZKR 的运营商实质上充当双重验证的保护层。

延迟(达成可验证最终性所需的时间)

Optimistic Rollup

由于上面安全性部分提到的问题,仅在 1-2 周欺诈证明的挑战窗口期内 Optimistic Rollup 才能是安全的。在这段时间过去之前,任何交易都不能认为是最终的,内部 Rollup tx 和退出都不是最终的。

不幸的是,对于最终用户来说,检查交易是否具有最终性,没有比通过整个上一次挑战期执行所有交易更快的方法了。需要特别注意的是,用户无法单纯依赖博弈理论来保证区块的最终性,因为单个运营商节点中的漏洞或(黑客入侵)仍可能导致还原。

最终性的时间(PoW 下):2 周

最终性的时间(PoS 下):1 周

ZK Rollup

当前 ZKP 计算上很密集。目前,对于 1000 tx 的区块,我们可以在普通服务器硬件上有 20 分钟证明生成时间。正在进行的 GPU 证明程序实现(Matter Labs 和 Coda 实施)有望将 tx 速度提高至少 10 倍。在不远的将来,专用硬件可能会拥有更高的计算能力。最终,我们期望看到在一分钟内完成区块的最终性。

最终性时间(现在):20 分钟

最终性时间(未来):1 分钟内

Rollup 交易内部的快速确认

在这两种类型的 Rollup 中,通过存入一定的安全保证金(如果交易没有包含进承诺的区块,保证金会被消减),运营商都可以向用户签发即时交易确认。这为最终性提供了经济保证。

这种方法有局限。它对于可互换代币的转移运转良好,但不适合于 NFT 和通用合约请求。该 NFT 可能没有市场价值,或者当这些资产的所有者不想在任何情况下立即「出售」它。通用合约请求不适用是因为如果链上的某些之前交易被还原,不容易准确量化货币价值。简单的例子:为接受稳定币预言机价格广播的最终价格,运营商应该质押多少资金合适?

快速提取资金

快速退出类似于快速内部 Rollup 确认。运营商可以与流动性提供商合作,以将可互换代币即时提取给用户,而无须等待退出交易在 Rollup 中成为具有最终性的交易。这要求大量的抵押品,这跟最终性达成的时间成正比。假设对 Optimistic Rollup 来说,不久将来的现实的最终性时间为 1 周,而 ZK Rollup 为 5 分钟,那么,Optimistic Rollup 将需要 2000 倍于 ZK Rollup 的抵押品才能支持每周相同的提款量。

隐私

Optimistic Rollup

Optimistic Rollup 可以支持 Layer 2 以太坊 (混合器等)上的任何可用的隐私解决方案。既然 Optimistic Rollup 本身也是 Layer 2,在其上实现的任何隐私解决方案将作为 Layer 3。这可能导致隐私服务更加分散,并导致较小的匿名集,这使得隐私的实用性非常低(我们甚至可以在 zcash 上观察到,默认情况下交易不会隐藏)

ZK Rollup

为了获得真正的隐私,系统必须默认支持它。从技术的角度看,ZK Rollup 可以在某种情况下默认轻松支持在协议层面代币转移的隐私交易,也可以区分公共和私人智能合约。

同时,构建完全匿名的 zcash 风格交易(即不仅隐藏金额,也隐藏交易的参与者),它将要求改变 ZK Rollup 的存储模型,从基于账户模型变为基于 UTXO 模型,这会产生很多问题,且不太可能发生。

结论

Optimistic Rollup 目前处于 PoC 阶段。(蓝狐笔记:PoC 是指概念证明阶段。从长远和落地角度,蓝狐笔记更看好 ZK Rollup)我们希望很快会实现产品级实施。如果证明它移植现有代码相对容易,那么,项目将逐渐开始采用它并构建新的基础架构:Layer 2 支持将在钱包中出现,预言机将开始广播到 Optimistic Rollup 等。

ZK Rollup 在特定应用方面已经更加成熟(例如 ERC20 代币的转移),但会逐步向完全通用的智能合约方向发展。最终,移植任何基于 EVM 和 WASM 的智能合约到 ZK Rollup 也是可能的,在当前的技术发展速度下,这可能耗费数年时间即可完成。

对于这两种类型的 Rollup,类似的基础设施改变会发生在钱包、预言机以及其他智能合约组件中。这要求大量的工作,随着更多项目对 Layer 2 扩展技术感兴趣,这些工作会加速。既然 Optimistic Rollup 承诺比 ZK Rollup 更早实现通用化的基于 EVM 的智能合约,它将极大地推动社区采用 Layer 2 的动机。

对于用户和 dApp,从一个 Rollup 跳到另外一个 Rollup,将会比从 ETH 最初迁移到 Layer 2 更容易。桥接会让这一过程更加顺畅。由于这种切换的简易,这种解决方案在 UX 方面会取得显著优势,从长远看,很可能会成为唯一的赢家。

不管结果如何,这都会是非常重要且让人兴奋的发展。无论如何,最终的赢家都是以太坊社区。

来源链接:medium.com