# Optimistic vs ZK Rollup: 深入探讨

By [白开水](https://paragraph.com/@baikaishui) · 2022-05-20

---

![](https://storage.googleapis.com/papyrus_images/8d4f299ee3b6c230d4ea4061e7266716526df1b8429d438cb0be78fe6731dd78.png)

**2021 年重大更新：** ZK rollups现在可以支持 [EVM 兼容性](https://medium.com/matter-labs/zksync-2-0-roadmap-update-zkevm-testnet-in-may-mainnet-in-august-379c66995021)！！！

简要总结
----

Optimistic Rollup 是一种很有前途的技术，可以在短期内扩展以太坊上的通用智能合约。如果构建得相对较快，它可以提供一种简单的方法来迁移现有的 dapps 和服务，并具有合理程度的安全性/可扩展性权衡。这将使 ETH 1.0 能够跟上不断增长的需求。

ZK Rollup 是一种更复杂的技术。[它](http://demo.matter-labs.io/)可用于当今的代币转移和专门的应用程序。但是，实现通用智能合约需要更长的时间，并且需要更多的研究工作才能有效地将 EVM 包装在零知识证明中。但是，一旦 ZK Rollup 完全开发完成，所有现有的以太坊 dapp 和服务都将能够毫不费力地顺利迁移到它。

ZK Rollup 将修复 Optimistic Rollup 的几个基本问​​题：

*   消除令人讨厌的尾部风险：通过复杂但可行的攻击媒介从 OR 盗取资金；
    
*   将退出时间从 1-2 周减少到几分钟；
    
*   以几乎无限的交易量实现快速交易确认和退出；
    
*   默认情况下引入隐私。
    

Optimistic Rollup 对 ZK Rollup 来说是个好消息。向 L2 扩展的过渡需要对钱包、预言机、dapps 和用户习惯进行重大改变。Optimistic Rollup 可以帮助生态系统为这一举措做好准备，为那些目前还不能在 ZK Rollup 上构建的 dapp 带来规模。这将使 ZK Rollup 有时间成熟并使其完全无缝采用，同时保持以太坊的增长势头。

**Rollup 101**
--------------

什么是Rollup？
----------

Rollup 是类似于 Plasma 的第 2 层扩展解决方案：单个主链合约持有所有资金和对更大“侧链”状态（通常是账户、余额及其状态的 Merkle 树）的简洁加密承诺。侧链状态由链下用户和运营商维护，不依赖 L1 存储（这是最大的可扩展性胜利的来源）。

Rollup 与 Plasma 的不同之处在于它解决了 Plasma 的巨大问题——数据可用性——通过 L1 网络发布每笔交易的一些数据（在以太坊中，专门为此目的使用了 tx CALLDATA）。因此，可以将数千个交易捆绑（汇总）在一个汇总块中。虽然这种方法在成本（事务数量的 O(n)）方面严格线性增长，但它提供了实际 100 倍的吞吐量提高，因为 CALLDATA 比 L1 存储和计算便宜得多。

Rollup 多次被 [Vitalik Buterin](https://www.trustnodes.com/2019/08/22/vitalik-buterin-is-more-and-more-pessimistic-about-scaling-through-second-layers) 认可为他最喜欢的 Layer-2 扩展解决方案。

根据如何保证状态转换的正确性，有两种 Rollup 风格：ZK Rollup 和 Optimistic Rollup。 [这里](https://medium.com/@kimiwu/zk-rollup-optimistic-rollup-70c01295231b)很好地介绍了这两种解决方案的简要历史。

什么是 ZK-Rollup (ZKR)？
--------------------

在 ZK-Rollup 中，操作员必须为每个状态转换生成一个简洁的零知识证明 (SNARK)，并由主链上的 Rollup 合约进行验证。这个 SNARK 证明存在一系列交易，由所有者正确签署，以正确的方式更新账户余额，并从旧的 Merkle 根引导到新的。因此，操作员不可能提交无效或被操纵的状态。

更多技术细节可以在[这里](https://ethresear.ch/t/on-chain-scaling-to-potentially-500-tx-sec-through-mass-tx-validation/3477)和[这里](https://medium.com/matter-labs/introducing-matter-testnet-502fab5a6f17)找到。您可以[试用 Matter Labs 的 ERC-20 代币传输 ZK Rollup 的现场演示](https://demo.matter-labs.io/)。

什么是Optimistic Rollup (OR)？
--------------------------

在[Optimistic Rollup](https://medium.com/plasma-group/ethereum-smart-contracts-in-l2-optimistic-rollup-2c1cef2ec537)中，新的状态根由操作员发布，而无需每次都被 Rollup 智能合约检查。相反，每个人都希望状态转换是正确的。但是，如果发布了不正确的状态转换，其他运营商或用户（必须观察 L1 Rollup 合约中发生的事情，执行每笔交易）将能够指向无效交易并恢复不正确的区块，从而削减恶意运营商.

OR 的想法最初是由 [John Adler](https://ethresear.ch/t/minimal-viable-merged-consensus/5617) 提出的。读者可以在[关于 Optimistic Rollup的 AMA 会话](https://docs.google.com/document/d/17f9JeeSW_M3PrMmvMsmArTDEqOkSKEZQySNKfpewIP4/edit)中找到更多详细信息。感谢 Plasma Group 的出色工作！

让我们比较一下！
========

灵活性：通用计算
--------

2021 年重大更新：本节已过时。ZK 汇总现在可以[支持 EVM 兼容性](https://medium.com/matter-labs/zksync-2-0-roadmap-update-zkevm-testnet-in-may-mainnet-in-august-379c66995021)！

**Optimistic Rollup**

尽管 Optimistic Rollup 可用于专门的应用程序，但[Plasma Group](https://plasma.group/)最重要的创新是 OVM：[Optimistic Virtual Machine](https://medium.com/plasma-group/introducing-the-ovm-db253287af50)。OVM 可以实现任意智能合约逻辑。几乎所有在以太坊中可能发生的事情在 OVM 中也是可能的，包括智能合约的可组合性。它可以基于 EVM、EWASM 或任何其他虚拟机。

OVM 的好处在于，如果与 EVM 一起使用，它将支持在 Solidity 中编写代码。正因为如此，现有代码库的大部分都可以轻松移植到 OR 上。

如果 OVM 可以直接重用现有的 EVM 字节码，那将是理想的，但它可能没那么简单。正确的实施将需要更改交易数据 (CALLDATA) 格式和复杂的 Truebit/Plasma Leap 风格实施的挑战/响应协议以用于欺诈证明。这可能会导致 EVM 出现分歧以正确处理边缘情况，这意味着仍然需要一些工作来调整现有的 OVM 合约。

实施的另一个挑战在于，大块的欺诈证明可能需要比 L1 块气体限制所允许的更多的气体。然后必须将这些欺诈证明分解为多个 ETH 交易。

**ZK-Rollup**

迄今为止，ZK-Rollup 的所有现有实现（包括您真正的实现）都只专注于专门的操作，例如代币转移或原子交换。这有几个主要原因。

首先，对于不同的零知识证明 (ZKP)，没有有效的递归证明组合技术，这需要在单个区块中聚合不同智能合约的执行。我们拥有的最好的[是椭圆曲线循环上的](https://arxiv.org/abs/1803.02067)[Groth16](https://eprint.iacr.org/2016/260.pdf)（由 Coda 使用），这需要在长场上进行计算，并且对于大型计算完全没有效率。

其次，即使我们有更短的字段，Groth16 也需要为每个智能合约和每个新版本进行单独的[可信设置仪式](https://github.com/matter-labs/awesome-zero-knowledge-proofs#multi-party-ceremony-mpc-for-trusted-setup)。显然，这绝对是不现实的。

在没有可信设置的情况下，我们唯一有效的 ZKP 技术是[基于 FRI 的 STARKs](https://github.com/matter-labs/awesome-zero-knowledge-proofs#fri-starks)。然而，验证者只对有限的一类问题（可表示为简洁的算术电路）简洁。一个 STARK 验证者必须至少执行一次被证明的计算语句的每个约束，这意味着我们不能迭代异构智能合约的集合。

[随着SNORKs](https://github.com/matter-labs/awesome-zero-knowledge-proofs#snorks)的出现，所有这一切都开始发生变化，SNORKs 是基于一组略有不同的密码原语的新一代 ZKP——最值得注意的是多项式承诺方案。_Sonic_由 Sean Bowe 首创，2019 年夏季_PLONK_和_Marlin_紧随其后。它们都有一个共同点：虽然仍然需要受信任的设置，但它现在将是通用的和可更新的。一次完成，它就可以在任何时候重复用于任意数量的不同程序。

然而，在这些证明系统中使用的 Kate 多项式承诺方案仍然需要有效的椭圆曲线循环来进行递归，而这目前尚不可用。这就是为什么我们对最新的、完全简洁和透明（无可信设置）的[证明系统](https://github.com/matter-labs/awesome-zero-knowledge-proofs#starks)感到非常兴奋，例如 Halo、SuperSonic、Fractal \*\*，\*\*以及Matter Labs 团队目前正在研究的[令人兴奋的东西。](https://twitter.com/the_matter_labs/status/1171698458505416704)

长话短说：现在已经消除了在 ZKP 上构建通用智能合约的障碍。ZK Rollup 完全能够支持与 EVM 相同的编程模型（包括无缝组合性和互操作性）。第一份合同可能需要专门的 DSL，尽管 Solidity 开发人员的学习曲线不会超过 1 天。最终，鉴于 ZKP 证明者技术目前的进步速度，我们预计所有现有的 ETH（甚至 EWASM）合约都能以最小的努力有效地移植。

可扩展性和交易成本
---------

**Optimistic Rollup**

*   [根据 John Adler](https://t.me/plasmacontributors/1831)的说法，在 EIP2028/Istanbul 之后，目前的估计是每次传输 tx 大约 4k gas。
    
*   相当于约 100 TPS
    
*   使用 BLS 签名聚合，这个数字可以达到 ~500 TPS（为了不破坏 EVM 兼容性，tx 参数可能会保持很长）。
    
*   如果 EVM 兼容性被破坏，理论上吞吐量可以增长到 ZKR 的极限。
    

**实际吞吐量上限（令牌传输）：500 TPS。**

目前这可能没问题。

**ZK Rollup**

*   Matter Testnet 中每次传输 tx 的公共数据成本目前为 16 字节，在 EIP2028/Istanbul 之后将花费 272 gas。
    
*   此外，还会有证明的摊销成本，估计约为 300k gas。
    
*   即使我们假设最坏的情况是 1M 的气体证明成本，估计的传输上限仍将超过 2140 TPS。
    
*   在一些讨论中，我听到人们争辩说 ZKP 会产生大量的计算开销，因此很昂贵。实际上，与气体成本相比，计算成本可以忽略不计，这是真正的瓶颈，因为去中心化是抗审查的。我们还预计这一因素会随着时间的推移而显着下降。
    

**实际吞吐量上限（代币转移）：超过 2000 TPS — 类似 Visa 的规模**。

然而，对于许多用例，ZK Rollup 将提供更多显着的节省，因为可以从公共数据中省略大块（通过将它们移动到 ZK 电路见证），而重建状态转换增量不需要这些。核心见解是：虽然 OR 总是要求用户发布完整的交易输入，但在 ZK 中我们可以灵活选择 1）交易输入减去见证不影响状态转换，2）仅交易输出。这种选择可以非常优雅地实现并且没有很多复杂性。

值得注意的例子：

*   在多重签名钱包、具有 Argent 风格账户抽象的钱包或去中心化交易所中，用户需要提交签名以供合约验证。这些信号对于状态增量更新不是必需的，可以从公共数据中省略。
    
*   像 Gnosis 的 Dfusion 荷兰 DEX 这样的合约需要大量的数据集输入，这些数据集不会直接影响存储，而仅用于验证计算结果。
    

**发布 ETH 2.0**

由于任何 Rollup 都将驻留在单个分片中，因此 CALLDATA 的成本（以及 Rollup 交易成本）不太可能发生太大变化，除非带宽通常变得更便宜。

元交易
---

两个汇总同样适用于支持元交易和帐户抽象。

安全
==

**Optimistic Rollup**

与支付渠道不同，Rollup 中的所有资金都由一个智能合约持有。由于 Rollup 是 IMHO 最有希望的扩展方向，我们应该会看到大量用户进入它，并且很多价值都集中在这个合约中。由于价值数千万或数亿（甚至数十亿）美元的资产处于危险之中，Rollup 合约对于知名黑客来说是一个极具吸引力的蜜罐。在这种情况下，如果攻击有很好的机会，无论多么复杂，都可能会尝试。

OR 的安全模型基于两个假设：

1.  至少有 N 个诚实参与者执行所有 OR 交易，并在发布无效状态转换的情况下提交欺诈证明；
    
2.  底层 L1 网络具有很强的抗审查性。
    

**1-of-N 诚实的参与者**

至于第一部分，期望只有 Rollup 的操作员才能真正监控和执行事务是现实的。普通用户既没有这样做的动力，也没有处理高负载交易的技术能力（如果可以，扩展从何而来？）。幸运的是，运营商自然会被激励去检查彼此的区块是否正确，因为在无效区块之上创建一个区块是一种惩罚条件。

N 中 1 的诚实运营商是一个合理的假设，有足够的可信参与者。然而，由于活跃参与者的数量有限（数百？），一些复杂的攻击可能包括：针对所有运营商的基础设施（非常困难但并非不可行），贿赂/勒索 Devops 工程师以秘密安装恶意代码，针对更新分发用于汇总软件等的渠道，当然还有它们的组合。这些攻击很难，应该受到积极的保护，但它们比试图以同样的方式攻击以太坊矿工要现实得多——尤其是因为对 OR 的成功攻击在完成之前不会被注意到。

**L1 具有很强的抗审查性**

第二个假设是一个棘手的假设。事实上，以太坊的设计提供了非常有效地防止普通审查的经济机制。然而，这些机制在存在[反机制](https://slideslive.com/38920016/designing-smart-contracts-with-free-will)的情况下停止运作。攻击者可以创建一个[全自动的贿赂机制来协调矿工的 51% 攻击](https://ethresear.ch/t/nearly-zero-cost-attack-scenario-on-optimistic-rollup/6336/6)，这将阻止诚实的矿工在他们的区块中包含欺诈证明。有趣的是，对于参与的矿工来说，这次攻击的直接成本为零，如果可以清楚地归因于审查制度，这还不包括愤怒社区的反应可能产生的社会成本。这部分也很棘手，因为该机制优雅地为攻击的参与者提供了似是而非的否认：“鉴于攻击大多数人的可信承诺，如果我不参与，我的区块将被放弃，所以我必须这样做不是为了利润，而不是为了避免损失”。

我邀请读者关注[这次攻击的讨论](https://twitter.com/gluk64/status/1184399877146587136)以及 Vitalik Buterin 最近[对 51% 审查攻击的分析](https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363)。下面我将分享一些有趣的见解。

不幸的是，这种类型的攻击在 PoW 下是非常现实的。没有有效的方法来惩罚参与其中的匿名矿工。

在过渡到 PoS 之后，如果就此达成广泛的社会共识，社区将能够通过削减他们的股份来惩罚审查矿工。毕竟，像这样的审查攻击可以被认为是对整个网络的攻击（尽管人们也可以争辩说矿工只是诚实地遵循协议，并且没有义务以任何违背他们最佳经济利益的方式行事）。然而，在 DAO 分叉之后，这将是一个非常有争议的讨论，至少可以说，其结果不可预测。在 Vitalik 最近的一项社区民意调查中，[63% 的人强烈反对](https://twitter.com/VitalikButerin/status/1187854232398917632)无论攻击的程度如何，对不可变区块链进行任何手动干预以救助用户。不用说，即使是消灭一个验证者的股份也很难通过，更不用说消灭大多数人的股份了。

2019 年 11 月 26 日更新：_最近发布了更多_[_关于共谋_](https://vitalik.ca/general/2019/04/03/collusion.html)_的研究，以及_[_对 PoS 环境中欺诈证明的新攻击_](https://ethresear.ch/t/undetectable-censorship-attack-on-fraud-proof-based-layer2-protocols/6492)_，这表明 PoS 中 OR 的审查攻击风险至少与 PoW 中一样高。_

抵御这种攻击的更现实的方法是在 UASF（用户激活的软分叉）中快速动员社区，强制矿工包含某些交易。从工程和社会的角度来看，这种情况都很复杂，并且肯定需要一个相对较长的欺诈证明挑战期窗口——至少 1 周，最好 2 周。同时，鉴于[主要的 DeFi 运营商实际上能够决定这种分叉的结果](https://medium.com/dragonfly-research/ethereum-is-now-unforkable-thanks-to-defi-9818b967738f)，并且避免大声破坏事件符合他们的最大利益，他们最好的选择可能是默默地服从攻击者（这将使以太坊保持在最长的链上并且产生的争议小于一个成功的软分叉）。

总结：欺诈证明审查的风险相对较低，但不可忽略。在 1 到 2 周的欺诈证明挑战期并且没有太多的资金风险的情况下，OR 可能很好：运营商/矿工勾结不值得麻烦和风险。然而，随着汇总值的增长，潜伏的黑天鹅会变得越来越令人担忧，至少对于像你这样偏执的人来说是这样。

**ZK Rollup**

在 ZK Rollup 中，每个状态转换在生效之前都由 Rollup 智能合约进行验证。运营商绝对不可能窃取资金或破坏 Rollup 状态。ZKR 依赖 L1 的抗审查性只是为了它的活跃性，而不是为了它的安全性。ZKR 无需任何人监控：一个区块被验证后，即使运营商拒绝合作，也始终保证用户资金最终可收回。

因此，ZKR 更充分地体现了加密的基本理念：通过用密码学和博弈论激励一致性取代受信任方来实现弹性。

然而，为了完整起见，我必须提到 ZKR 特有的其他几个潜在风险。

**可信设置**

如果 ZK Rollup 中使用的 ZKP 需要一个通用的可信设置，我们最终会得到 N 中 1 个诚实参与者的假设。这可能是也可能不是可接受的风险，具体取决于参与者的数量和质量。但是安全就是安全，这就是为什么我对高效的去信任 SNARK 的最新进展感到非常兴奋，尤其是我们在 Matter Labs 正在研究的结构。

**密码学**

最新一代的 SNARK 使用多个比 Groth16 更可靠和经过实战考验的加密原语。前面提到的 Matter Labs 的工作基于 FRI，因此甚至可以说是后量子安全的。但是，要完全平静，应采用两种缓解策略：

*   必须以比实际生产版本低得多的安全参数来部署大量赏金，类似于 RSA 挑战。如果发现了实际攻击，研究人员将在破解生产代码变得可行之前数年打破挑战。
    
*   所有状态转换必须只能由 ZKR 的操作员发送，这些操作员本质上将充当 2-Factor 保护层。
    

延迟（可验证最终性的时间）
-------------

**Optimistic Rollup**

由于上面安全部分提到的问题，Optimistic Rollup 只能在 1-2 周的防欺诈挑战窗口中安全。在这段时间过去之前，任何交易都不能被视为最终交易——既不是内部 Rollup tx，也不是退出。

不幸的是，对于最终用户来说，没有比在整个最后一个质询期内执行所有交易更快的方法来检查交易是否是最终的。重要的是要注意，用户不能依赖纯粹的博弈论保证块最终确定，因为单个运营商节点中的错误（或黑客攻击）仍然可能导致恢复。

完成时间（在 PoW 下）：2 周。

完成时间（在 PoS 下）：1 周。

**ZK Rollup**

目前 ZKP 的计算量非常大。目前，对于一个 1000 tx 的区块，我们可以在普通服务器硬件上进行 20 分钟的证明生成时间。

正在进行的 GPU 证明器实现（由[Matter Labs](https://github.com/matter-labs/belle_cuda)和[Coda](https://github.com/CodaProtocol/snark-challenge-prover-reference)提供）承诺将 tx 速度至少提高约 10 倍。在不远的将来，专用硬件可能会拥有更高的计算能力。最终，我们预计会在 1 分钟内看到区块确认。

完成时间（现在）：20 分钟。

完成时间（未来）：不到 1 分钟。

Rollup 内交易的快速确认
---------------

在这两种 Rollup 中，运营商都可以通过设置一定的保证金向用户发出即时交易确认，如果交易不包含在承诺的区块中，这些保证金将被削减。这为最终性提供了经济保证。

这种方法有几个限制。它适用于可替代代币的转移，但对于NFT（可能没有市场价值，或者当此类资产的所有者在任何情况下都不想立即“出售”它时）和通用合约调用（因为它是如果链中的某些先前交易被还原，则不容易准确量化货币价值；一个简单的例子：运营商的资金应该有多少风险才能让您接受稳定币预言机价格广播作为最终价格？）

快速取款
====

快速退出类似于快速内卷确认。运营商可以与流动性提供者合作，立即向用户发起可替代代币的提现，而无需等待退出交易在 Rollup 中成为最终交易。

这需要大量的抵押品，这将与最终确定的时间成正比。假设 OR 为 1 周和 ZKR 为 5 分钟的现实近期最终确定时间，OR 将需要 2000 倍以上的抵押品来支持与 ZKR 相同的每周提款量。

隐私
--

**Optimistic Rollup**

Optimistic Rollup 可以支持 L2 以太坊（混合器等）上可用的任何隐私解决方案。由于 OR 本身是 L2，因此在其上实施的任何隐私解决方案都将作为 L3 存在。这可能会导致隐私服务更加碎片化，从而导致匿名集变小，这使得隐私的效用非常低（我们甚至可以观察到 zcash，默认情况下不屏蔽交易）。

**ZK Rollup**

为了实现真正的隐私，系统必须默认支持它。从技术角度来看，ZKR 可以在某些时候轻松地默认支持协议级别的代币传输的机密交易，以及区分公共和私人智能合约（ZK ZK Rollup 风格）。

同时，构建完全匿名的交易 zcash 风格（即不仅隐藏金额，还隐藏交易的参与者）需要将 ZK Rollup 的存储模型从基于帐户更改为基于 UTXO，这将创建太多问题并且不太可能发生。

结论
==

Optimistic Rollup 目前处于 PoC 阶段。我们希望很快就会看到生产级的实施。如果事实证明移植现有代码相对容易，项目将逐渐开始采用它并构建新的基础设施：L2 支持将出现在钱包中，预言机将开始向 OR 广播等。

ZK Rollup 在专业应用（例如[ERC-20 代币转移](http://demo.matter-labs.io/)）方面已经更加成熟，但将通过完全通用的智能合约走更渐进的道路。最终，将有可能将任何基于 EVM 和 WASM 的智能合约移植到 ZK Rollup 中——按照目前的技术发展速度，这不太可能需要数年时间。

对于这两种 Rollup 类型，必须对钱包、预言机和其他智能合约组件进行类似的基础架构更改。这需要大量的工作，随着越来越多的项目对 L2 扩展技术感兴趣，这些工作将会加速。由于 Optimistic Rollup 比 ZK-Rollup 更早地承诺了基于通用 EVM 的智能合约，它将极大地推动社区采用 L2 的动力。

对于用户和 dapps，从一个 Rollup 跳转到另一个 Rollup 将比最初从 ETH 迁移到 L2 更容易。桥梁将使这个过程更加顺畅。由于这种易于切换，我个人的看法是，该解决方案在 UX 方面具有显着优势，从长远来看可能会成为唯一的赢家。

无论结果如何，这将是一个非常重要且令人兴奋的演变。无论如何，最终的赢家将是以太坊社区。

---

*Originally published on [白开水](https://paragraph.com/@baikaishui/optimistic-vs-zk-rollup)*
