币安区块链快讯

Optimistic Rollups:以太坊扩容的现状与未

作者: 币安app官方 日期:2024-11-11 05:33

撰文:Offchain Labs

编辑:南风

我们听到了很多关于 ZK Rollups 如何被认为是通用智能合同系统的未来的讨论。但基于我们从运行开放、安全、EVM 兼容的 L2 链中获得的实践经验,且该 L2 链包含数百个 dapps、数十万个用户和数百万个交易,我们对此不予苟同,这篇文章将对此进行解释。

我们将 Arbitrum 构建为一个 Optimistic Rollup 网络,因为我们相信 Optimistic Rollup 是满足用户对安全、无须信任、EVM 兼容的 L2 网络这一现实需求的最佳方式。我们选择 Optimistic Rollup 系统而不是 ZK Rollup,是因为 Optimistic Rollup 系统固有的可扩展性和成本优势;鉴于此,如果让我们再次做出选择,我们依然会选择 Optimistic Rollup。欲了解其中缘由,请继续往下读。

等等!这篇文章的篇幅有多长?

是的,这篇文章很长,而且有些地方很技术性。人们想从他们选择的链中得到什么很简单,但谈到提供这些优势所需的技术,我们需要详细说明。我们希望技术社区能够理解我们的观点。如果你不想读完整篇文章 (这无可厚非!),这里有一个简短的概要:

  • 们想要一个可靠地提供安全、进展保证、可见性和快速敲定的区块链网络——他们希望这条链的使用成本很低并且兼容于现有的工具。

  • 通过与 ZK Rollup 进行比较,我们深入研究了 Optimistic Rollup 如何提供上述这些属性的细节方面。

  • Optimistic Rullup 能够以较低的成本提供用户想要的这些属性,因为构建 ZK 证明有着非常高昂的链下成本。

  • 由于 ZK 证明的构建成本如此高昂,因此完全参与到 ZK 协议中可能需要专用的硬件设备和/或大规模并行性,从而导致 ZK Rollup 网络实际上更加中心化。

  • ZK Rollup 所声称的那些优势,要么同样适用于 Optimistic Rollup,要么要求牺牲重要的安全性或可用性特性。

  • Optimistic Rollup 在操作成本上赢得了很大的胜利,因为执行其代码比计算复杂的加密证明要便宜得多。

让我们从头开始

让我们从以太坊开始讲起。以太坊用户需要通过创建交易来部署智能合约或与智能合约进行交互,你可以通过几种不同的方式来看待以太坊交易:一方面,你可以将其视为一个不透明的数据块,但如果你查看其内容,你会发现交易显然并不只是数据块;它是一个请求,请求智能合约做某件事情,比如记录一些信息,转移一些资产等等。

当一笔交易被发布到以太坊时,会发生两件重要的事情:首先,交易会被打包,以太坊会对一组经排列的交易达成共识;其次,以太坊执行这些交易,并计算由此产生的状态更新。

Optimistic Rollups 与 ZK Rollups 的共同之处

让每个以太坊节点执行每笔交易的代价很高 (容易造成网络拥堵和交易成本高昂),而 Rollups 是一类可以显著减轻这种负载的可扩展性解决方案,可以显著减轻这种负载。通过这种方案,交易的实际执行不是在以太坊上完成的,而是转移到第2层 (L2),也即 Rollups 网络中。

但等等——Rollups 应该是由以太坊保护的。这意味着 Rollups 需要以太坊以某种方式担保交易执行的正确性,即使交易发生在 L2 领土中。那么以太坊如何对 Rollups 的状态批准盖章呢?

简言之,答案就是:通过使用证明 (proofs)。Rollups 通过使用专门的证明 (proofs) 来向以太坊证明其正确性,该证明允许以太坊在不执行交易的情况下验证其正确性。

Optimistic Rollups 与 ZK Rollups 的不同之处

这些证明看起来非常神奇:允许以太坊在无需实际执行交易的情况下验证 Rollups 的状态。你可能想知道这些证明是什么样子的,以及它们在实践中是如何实现的。这正是不同的 Rollups 的相互区别之处。

ZK Rollups 使用有效性证明 (validity proofs):ZK Rollups 依赖于某一方发布简洁的密码证明,该证明可以表明该发布者知道这条以特定状态结尾的区块链的有效性。这要求该证明方需要执行这条链,从而才能知道如何构建该证明,然后通过一系列复杂的密码操作来构造该证明。该证明通过一个链上 L1 合约进行检查。ZK Rollups 的有效性证明是简洁的,而且验证成本足够便宜,可以通过一笔以太坊交易来完成。

Optimistic Rollups 使用一种不同类型的证明:欺诈证明 (fraud proofs)。顾名思义,Optimistic Rollups 网络是“乐观的”,因为当 Optimistic Rollups 将更新的状态发布到以太坊上时,它们不会发布任何证明。在 Optimistic Rollups 网络中,任何人 (节点) 都可以发布一个 Rollup 区块,其中包含了有关执行了某些交易之后的正确结果的声明,其他节点在执行这些相同的交易时,如果不同意该节点的主张就可以提出挑战。一个有效的争议协议会解决任何分歧,保证正确的那一方将会在该挑战中获胜。这些参与方 (节点) 有很强的动机只发布正确的主张,而不是去挑战不正确的主张,因此在通常情况下,所有节点就是简单地执行所有的交易,而证明代码永远不需要被调用。这整个过程都是由一个 L1 合约管理。

那么哪种类型的 Rollup 更好呢?在本文的其余部分,我们将从几个维度比较 ZK Rollups 和 Optimistic Rollups,并解释为何我们认为未来是属于 Optimistic Rollups,以及像 Arbitrum 这样的 Optimistic Rollups 本质上有着更好的可扩展性。

Optimistic Rollups 对比 ZK Rollups:成本

也许 Optimistic Rollups 和 ZK Rollups 最关键的不同之处就是成本

Optimistic Rollups 网络需要其节点简单地执行合约。比如,如果某个合约执行添加操作,那么网络中的节点就执行该添加操作。

另一方面,ZK Rollups 需要生成一个复杂的密码证明,需要成百上千次昂贵的椭圆曲线运算来将该添加操作包含进证明中。在 ZK Rollups 中,每个合约中的每个指令都会产生这种成本。由于需要对每个指令都生成一个复杂的密码证明,而不是仅仅执行指令,因此对于 ZK Rollups 而言这是一个固有的成本劣势,而且这是一个很大的劣势。

ZK Rollups 的支持者有时会争辩说,该解决方案只需要一方创建“证明”,而 Optimistic Rollups 则要求系统有许多节点。但是,如果你正在运行一条规模较大的区块链,无论你使用哪种证明系统,它都会有很多节点。真正的区块链需要很多节点来服务各类活动,比如非变异调用、搜索事件日志、向用户显示交易数据、为用户提供将资金提取回 L1 (主链) 所需的数据等等。Optimistic Rollups 的安全性依赖于这些节点做它们已经需要做的事情——执行交易并追踪区块链的正确状态。

另一方面,在 ZK Rollups 中构建昂贵的、基于椭圆曲线的证明是一个非常大的附加成本。如果想要大规模地证明 ZK Rollups,将需要专用硬件设备或者大规模并行——或者两者都需要。这都是非常昂贵的。

小结:Optimistic Rollups 系统有着巨大的固有成本优势。

Optimistic Rollups 对比 ZK Rollups:EVM 兼容性

当我们在构建 Arbitrum 时考虑的一个重要因素是其与 EVM (以太坊虚拟机) 的兼容性。Arbitrum 完全兼容于 EVM;它具有相同的 RPC 接口,并接受与 EVM 相同的字节码。这意味着在实践中,任何为以太坊编写的代码都可以在 Arbitrum 上开箱即用

我们已经运行开放的、兼容 EVM 的链 (包括测试网) 一年多时间了,我们已经了解到真正兼容于 EVM 多么具有挑战性。最初的 95% 的兼容性并不难实现,但这在实践中还不够好,而要做到更好则不仅需要大量的努力工作,还需要一个不碍事的产品架构。

就 EVM 兼容性而言,ZK Rollups 系统运行的范围很广。一些 ZK Rollups 认为 EVM 兼容性是是老派的工具,并鼓励人们学习使用它们自定义的语言。一些 ZK Rollups 系统并不试图兼容于 EVM,当然这对于那些不关心这种兼容性的开发者和用户来说,这也没什么问题。

我们并不是说,在一个全新的世界里,EVM 兼容性是客观上最好的东西。但考虑到已经使用 EVM 的开发者、代码和开发者工具的数量,我们认为 EVM 具有很多实际的优势。想象一下,某个已经部署在以太坊上的项目想要扩展到一个 Rollup 网络中,如果需要使用一种新的语言重写代码,委托新的安全审计,并维护多个代码库,那么这将是非常繁琐且容易出错。但即使对于尚未编写代码的新项目而言,EVM 兼容性也是一个巨大的优势,因为这允许这些项目使用围绕 EVM 的现有代码、工具和人才库。

一些 ZK Rollups 项目正在致力于实现兼容 EVM 的版本,尽管其声明含糊其辞,我们还不知道迄今为止有发布任何代码允许人们在 ZK Rollup 上运行 EVM 合约。当前已经存在的主要 ZK Rollups 系统有着显著的 EVM 不兼容性。比如,一个声称兼容于 EVM 的 ZK Rollup 并不能实现 ADDMOD、SMOD、MULMOD、EXP、SELFDESTRUCT 和 CREATE2 操作码;正在考虑取消对 XOR、AND 和 OR 的支持;不支持标准交易格式;不支持任何预编译;且可能会限制单笔交易中的合约调用次数。而且,ZK 模型似乎存在根本性的 EVM 不兼容性,即使在最好的情况下,ZK 的 EVM 兼容性也无法像 Optimistic Rollups 那样支持完全的兼容性。

值得说明的是,目前存在几个特定于应用程序的 ZK Rollup 系统的例子,例如 Zcash、ZKSync 1.0、Loopring。事实上,其中一些系统运行良好。其核心区别在于,它们经过了微调,并针对非常适合 ZK Rollup 实现的特定应用程序进行了特别优化。当前还不存在一个通用的编译器,以允许人们以兼容的方式从 EVM 过渡到 ZK Rollup。虽然有一些团队声称正在对此进行研究,但对于用户定义的 ZK-EVM 合约,当前没有可用的公共代码或证明成本的基准。根据我们了解的情况和所有可公开获得的数据,我们认为这会非常昂贵。

小结:只有 Optimistic Rollups 以最小的成本支持完全的 EVM 兼容性。

Optimistic Rollups 对比 ZK Rollups:无须信任的可见性和压缩

在设计 Arbitrum 时,我们考虑的一个关键属性是无须信任的可见性 (trustless visibility)。简单来说,无须信任的可见性意味着任何人都可以在无需某个中心化的参与方的帮助下查看或获取区块链的内容。重要的是,这不仅意味着每个人都可以看到偶尔的状态快照,还意味着每个人都可以看到区块链的完整历史——即它是如何到达当前状态的。一个实用的区块链链可以让任何人运行一个节点,它可以支持非突变调用、搜索事件历史记录和查看每一笔交易——而不需要依赖一个中心化的数据提供商。无须信任的可见性使之成为可能。

坦率地说,有些 ZK Rollups 系统在可见性方面走了捷径,并试图回避它们没有提供完整区块链功能的事实。当你听到“压缩”这个词时,请小心弄清楚:他们是否说他们正在更有效地编码链的内容 (这正是 Arbitrum 所做的,并且将在我们的 Nitro 版本发布中做得更好)?或者,他们是在说,部分区块链历史根本就不会被提供给你,除非一个中心化的数据提供商愿意稍后与你共享?

回想一下,ZK Rollups 证明其实只证明了“证明者”知道的有效链,但“证明”本身不会告诉你那条链是什么,即使你有足够的数据来验证该“证明”,可能也没有足够的数据来重建区块链的历史。

举个例子,假设 Alice 提交了一笔支付给 Bob 1 ETH 的交易,很快又出现了 Bob 提交了一笔支付给 Charlie 1 ETH 的连续交易。接下来,你需要验证一个证明:Alice 比以前少了 1 ETH,Bob 的余额没改变,而 Charlie 比以前多了 1 ETH。

但是具体发生了什么?Alice 付钱给 Bob 了吗?Bob 付钱给 Charlie 了吗?也许是 Alice 直接付钱给 Charlie,也许是 Alice 销毁了 1 ETH,而 Charlie 所获得的 1 ETH 是由其他人支付的,也许这个“其他人”名叫 Diana,而不是 Bob。如果我们从区块链中寻找 Bob 的支付证据,但对于一些不提供区块链可见性的 ZK Rollups 来说,根本无法区分并找到 Bob 支付的交易。

许多智能合约应用程序所需要的不是仅仅知道某个偶然的检查点,而是需要了解整条链——了解发生了什么以及如何达到最终状态。ZK Rollups 有时吹嘘自己有着比 Optimistic Rollups 更好的“压缩”,但它们会隐藏区块链的数据,这样只有“证明者”知道这并不是压缩,而是删除了重要的数据。如果 ZK Rollup 提供商表示他们“不需要”发布整条区块链的历史,其实他们真正的意思是他们无法保证区块链的可见性,而放弃区块链可见性保证并不是 Optimistic Rollups 愿意做出的妥协。

小结:Optimistic Rollups 以最小的成本提供无须信任的可见性。

Optimistic Rollups 对比 ZK Rollups:无须信任的、及时的最终性 (finality)

在评估某个 Rollup 网络时,我们需要确定一个关键要求,即该 Rollup 是否提供无须信任的、及时的最终性 (finality)简单来说,这意味着在你提交交易后,你和其他所有人都应该及时且确定地知道该交易的结果,并且没有人能够篡改或撤消该交易。

在我们看来,实现及时的最终性的最佳方法是将交易排序与交易执行分开。排序就是对被提交的交易生产一个敲定的顺序,执行就是试图以该顺序来执行这些交易。如果交易执行是确定的 (正如在 Arbitrum 上那样),那么敲定交易排序就足以敲定结果,因为这些结果就是交易顺序的确定性函数。如果每个人都知道交易的顺序,那么每个人都可以轻松确定结果。

敲定一个交易顺序需要将该顺序发布到 L1 链上,并包含足够的信息以允许任何人自己执行这些交易,以便以无须信任的方式知晓其结果。理想的 Rollup 是尽可能频繁地将排序的交易数据发布到 L1 链。

在 Optimistic Rollups 系统中,发布到 L1 链的成本最低,实际上 Arbitrum 通常会在每一分钟左右将排序的交易数据发布到 L1 链,为用户提供快速的最终性 (finality) 并保证没有人可以撤消他们的交易。此外,Arbitrum 还会每隔一小时左右就产生一个新的 Optimistic Rollup 结果主张 (result assertion),但由于拍下已经被敲定,且执行是确定性的,因此完全不会减慢最终敲定的速度。

原则上,ZK Rollups 系统也可以按照类似的方式运行;即将交易的排序 (可以频繁发布到 L1)与稍后进行的验证以及偶尔的有效性证明分开。然而,与 Optimistic Rollups 系统发布数据一样,以这种方式运行的 ZK Rollups 需要将基本相同的数据发布到 L1 链上,但对于上文中讨论的 (所谓) “压缩”技术并不支持这么做。ZK Rollups 为了让“压缩”技术起作用,必须在同一笔 L1 交易中实时证明一系列 L2 交易的有效性,而且每次发布一批 L2 交易时都必须这么做。

因此,寻求使用备受吹捧的“压缩”技术的 ZK Rollups 只有两个选择:

1) 每分钟左右发布排序交易和执行证明:这可以保持快速的最终性 (finality),但需要每分钟在链下生成 ZK 证明并在 L1 链上进行验证。根据实现情况,在区块链链上发布 ZK 证明的成本估计在 500,000 gas 到 500 万 gas 之间。

2) 每小时发布排序交易和证明:这种做法虽然可以使 ZK 证明的检查成本变得略微合理,但将最终性 (finality) 的时间会延长到一个小时。在用户向 ZK Rollups 运营者提交交易和其发布到链上之间的时间里,用户无法保证他们的交易是否会被打包在内,而且只能相信 ZK Rollups 的运营者。

如果你正在构建一个 ZK Rollup 系统,会发现上述两个选项其实都是不可接受的——第一个成本太昂贵,第二个无法提供及时的最终性。因此,如果你最终会使用与我们在 Optimistic Rollup (即 Arbitrum) 中使用的相同类型的定序器 (sequencer),并在一个 ZK Rollup 版本的 Arbitrum 中发布基本上相同的数据。

如果你听到有人吹捧某个 ZK Rollup 可以将数小时的数据压缩为一个点,要务必谨慎。如果他们只在很长一段时间结束时发布单点数据,那么这意味着他们在这段时间内没有提供最终确定性。

小结:出于实际考虑,ZK Rollups 系统不得不以与 Optimistic Rollups 相同的方式来实现及时的最终性。

Optimistic Rollups 对比 ZK Rollups:无须信任的活性

无须信任的活性 (trustless liveness) 是指任何人都可以推进系统进程 (无须信任的安全属性可以确保这种进程的正确性)。

Optimistic Rollups 允许任何节点声明正确的交易执行。提出该声明只要求节点执行该链的交易,然后存入一笔质押金 (stake),当该声明被协议确认之后可以退还该质押金。

在 ZK Rollups 系统上,进展要求任何节点都可以创建并发布推进区块链状态所需的 ZK 证明,但这必须是通过使用任何人都可以获取的硬件和软件就能实现,因此必须不能要求构建或购买独特的专用型硬件,也不能要求进行大规模并行计算。必须有一条在普通的设备上就能构建一个合适的 ZK 证明的途径。如果某个 ZK Rollup 提供商无法做到这一点,或者没有发布用于生成系统证明的代码,那么该 ZK Rollup 就无法提供无须信任的活性,该系统也就没有活性保证。他们的系统是中心化的,因为只有拥有专用设备的参与方才能推进系统进程。(目前还不清楚的是那些领先的 ZK Rollups 提供商是否将让证明对普通用户可行。)

小结:Optimistic Rollups 系统更容易提供无须信任的活性。

Optimistic Rollups 对比 ZK Rollups:桥接

ZK Rollups 的优势领域是与以太坊 L1 的桥接。Optimistic Rollups 系统在将资金从 Rollup 取款至 L1 方面有一个为期一周的延迟,而 ZK Rollups 则允许在 ZK 证明发布至 L1 之后立即实现桥接。在实践中,这并不是一个很大的差异,因为 Optimistic Rollups 用户可以使用快速桥接服务,从而实现将资金从 L2 撤回至 L1 的低延迟。因此,ZK Rollups 在这方面的优势主要是,其用户可以避免支付桥接服务收取的小额费用 (这些服务在费用上将会相互竞争)。这并不是理论上的:制剂室,当前有许多上线的桥接服务,提供从 Arbitrum 即时取款的服务。

需要强调的是,ZK Rollups 在桥接方面的优势非常狭窄:仅限于从 L2 桥接回以太坊 L1。从前 (大约是2019年),许多人认为 Rollups 的推出将很缓慢,且只会有一到两个上线的 dApps,在这样的情况下,Rollup 用户将会经常发现自己在 L1 和 L2 之间来回桥接。但我们并不处于这样的世界中。Arbitrum 拥有一个蓬勃发展的生态系统,其中包含了数百个 dApps,范围覆盖了整个 DeFi 领域,且许多用户正在桥接至 Arbitrum 并长期留在这个网络中。此外,在某种程度上,用户不仅仅是去以太坊,而是跨越多条链。他们也在前往其他 L1 链和侧链,且对于这种直接桥接,ZK Rollups 对比 Optimistic Rollups 并没有什么优势。

小结:ZK Rollups 系统在桥接至 L1 方面有一点优势,但由于快速桥接服务和多链使用模式,因此在实践中这种优势在很大程度上被减弱。

写在最后

通过对比 Optimistic Rollups 和 ZK Rollups,我们认为 Optimistic Rollups 系统是明显的赢家。Optimistic Rollups 更便宜,拥有完全兼容 EVM 和现有的工具,且在实践中唯一的缺点是在没有快速桥接服务的情况下桥接至 L1 较为缓慢。ZK Rollups 的其他优势需要牺牲链的可见性或最终性时间,我们认为这并不是用户想要的。

对于 ZK Rollups 系统来说,这些都不太可能改变。兼容于 EVM 的合约执行的 ZK 证明将保持着比 Optimstic Rollups 的执行更加昂贵,且实现无须信任的活性、链可见性和去中心化的要求也将保持不变。虽然如果情况发生变化,我们也愿意将 Arbitrum 切换到基于 ZK Rollup 的执行,但我们认为不会。

我们将以一个警告结束。现在有一种趋势是,人们将 Arbitrum 今天提供的东西与 ZK Rollups 系统说他们将来会提供的东西进行比较。但这种比较没有什么意义。如果我们将现有的系统进行比较,就会发现只有像 Arbitrum 这样的 Optimistic Rollups 支持通用智能合约的开放部署。或者,如果我们在比较未来的系统,那么我们应该将 Arbitrum 的未来与未来的 ZK Rollups 系统进行比较。

我们正在不断改进 Arbitrum——例如,我们即将发布的 Nitro 版本包含更低的成本和更好优化的链上数据无损压缩。我们正在孜孜不倦地改进 Arbitrum ,将成本降低到理论极限。正如我们在这篇文章中所展示的,我们相信,当考虑到这两种系统的现状以及它们各自的理论局限性时,Optimistic Rollups 显然是赢家

区块链最新消息