为什么我们认为Optimistic Rollup优于ZK Rollup?从两者的全方位对比分析说起

资讯 2年前 (2022) 123huobi
0 0
为什么我们认为Optimistic Rollup优于ZK Rollup?从两者的全方位对比分析说起

原标题:《Optimistic Rollups:以太坊扩容的现在和未来》

当下大家常听见很多关于ZK Rollup 如何被认为是通用智能合同系统未来的谈论。而我们不同意——这篇文章解释了原因。它借鉴了我们从运行一个开放、安全、与EVM兼容的L2链中学到的实践经验教训,该链拥有数百个dapp、数十万用户和数百万笔交易。

我们构建了Arbitrum作为 Optimistic Rollup (OR),因为我们认为OR是满足用户对安全、无条件信任、与EVM兼容的L2的现实需求的最佳方式。我们选择Optimistic Rollup而不是ZK,因为系统固有的可伸缩性和成本优势;我们今天仍然会做出同样的选择。如果你想了解原因,请继续阅读。

迈克尔约翰逊——最初以苹果和橙子的形式发布到 Flickr——他们不比较,CC BY 2.0,https://commons.wikimedia.org/w/index.php?curid=4289506)

等等!这个帖子有多长?

是的,这个帖子很长,在有些地方具有一定技术性。人们希望从链上得到的很简单,但谈论提供这些优势所需的技术需要我们深入研究一些细节。我们希望技术界理解我们的观点。

如果你不想阅读整篇文章,这里有一个简要大纲。

1、人们想要一条可以无条件信任的链提供安全、保证进度、可见性和快速性的属性——并且他们想要低成本并与现有工具兼容。

2、与ZK Rollup 相比,我们深入研究了如何使用Optimistic Rollup来提供这些属性的细节。

3、由于ZK的链下成本非常高,Optimistic可以以更低的成本提供用户想要的属性。

4、由于ZK证明非常昂贵,充分参与ZK协议可能需要特殊用途的硬件和/或大规模并行性,使网络有效地更加集中。

5、ZK声称的优势要么也适用于Optimistic Rollup系统,要么需要牺牲重要的安全性或可用性功能。

6、Optimistic Rollup 在操作成本上大获全胜,因为执行代码比计算复杂的加密证明要便宜得多。

从头开始

我们先从以太坊开始。以太坊用户创建一笔交易以部署或与智能合同交互。你可以用几种不同的方式看待以太坊交易。一方面,可以将其视为不透明的数据。但如果看看它的内容,交易当然远不止于此;它是一个请求,要求智能合同做一些事情:记录一些信息,移动一些资产等。

当交易发布在以太坊时,会发生两件重要的事情。首先,它被包括在内,以太坊就一套有序交易达成了共识。其次,以太坊执行这些事务并计算由此产生的状态更新。

Rollup :Optimistic和ZK的共同点

让每个以太坊节点执行每笔交易都很昂贵,Rollup是一类扩容解决方案,可以显著减轻此负载。交易的实际执行不是在以太坊完成的,而是转移到第2层(“L2”)区域。

但等一下—— Rollup 应该由以太坊来保证。这意味着我们需要以太坊以某种方式保证交易执行的正确性,即使它发生在L2上。那么,以太坊如何将其批准印章授予 Rollup 状态呢?

总之,答案是:证明。Rollup 使用专有证明向以太坊证明其正确性,即使不执行交易,也可以验证其正确性。

Rollup :Optimistic和ZK的不同之处

这些证明似乎相当神奇:允许以太坊在不实际执行的情况下验证 Rollup 状态。你可能想知道这些证明是什么样子的,以及它们在实践中是如何实现的。这就是各种Rollup与众不同的地方。

ZK Rollup使用有效性证明。ZK依赖于某方发布简洁的加密证明,该证明确定该方知道以特定状态结尾的有效链。这要求验证方执行链,以便知道如何构建验证,然后通过执行一系列复杂的加密操作来构建验证。证明由链上的L1合同检查。ZK证明很简洁,验证成本足够便宜,可以通过以太坊交易完成。

Optimistic Rollup使用不同类型的证明:欺诈证明。顾名思义,Optimistic Rollup是乐观的,当他们向以太坊发布更新的状态时,他们根本不用发布任何证明。任何人都可以发布一个 Rollup 块,其中包含关于执行某些交易的正确结果的索赔。其他节点执行相同的事务,如果他们不同意第一个节点的主张,可以发布挑战。有效的争议协议可以解决任何分歧,保证正确的一方将赢得挑战。各方有强烈的动机只发布正确的索赔,而不是质疑错误的索赔,因此在通常情况下,所有节点都只是执行所有交易,并且永远不需要调用证明代码。整个过程由L1合约管理。

好吧,那么哪种类型的 Rollup 更好呢?在接下来,我们将在几个维度上比较ZK和Optimistic Rollup,并解释为什么我们认为未来是Optimistic的,而像Arbitrum这样的Optimistic Rollup本质上更具有可扩展性。

Optimistic Rollup与ZK:成本

也许Optimistic Rollup和ZK之间最重要的区别是成本。

Optimistic Rollup要求节点简单地执行合约。例如,如果合约执行添加操作,节点将执行该添加操作。

另一方面,ZK需要生成一个复杂的加密证明,该证明需要数百或数千个昂贵的椭圆曲线操作,才能将添加操作包含在证明中。ZK为每份合约中的每项指令承担这笔费用。需要对每个指令生成复杂的加密证明,而不仅仅是执行指令,这对ZK来说是一个固有的成本劣势——而且是一个很大的成本劣势。

ZK倡导者有时认为,只需要一方当事人才能创建证明,而Optimistic Rollup要求系统有很多节点。但是,如果你运行的是大型链,无论你使用哪种验证系统,它都会有很多节点。真正的链需要许多节点来服务非变异调用事件日志,向用户显示交易数据,为用户提供将资金撤回到L1所需的数据,等等。Optimistic Rollup链的安全依赖于这些节点做他们已经需要做的事情——执行交易和跟踪链的正确状态。

另一方面,ZK构建昂贵的椭圆曲线证明是一个非常大的额外成本。你需要特殊用途的硬件设备或大规模并行性——或两者兼而有之,才有可能用ZK进行大规模证明,但这很贵。

结论:Optimistic Rollup系统具有固有的、巨大的成本优势。

Optimistic Rollup与ZK:EVM兼容性

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

我们已经运行开放的、与EVM兼容的链(包括测试网)一年多了,我们已经了解了真正兼容是多么具有挑战性。前95%的兼容性并不难,但这在实践中还不够好,做得更好既需要大量的努力,也需要一个不会妨碍的产品架构。

ZK系统在兼容性方面运行范围很广。有些人将其视为遗留工具,并鼓励人们学习他们的自定义语言。

但一些ZK系统没有试图兼容。当然对于不在乎兼容性的开发人员和用户来说,这很好。

我们并没有争辩EVM客观上是有史以来最好的。我们认为的是,考虑到已经与EVM配合使用的开发人员、代码和开发人员工具的数量,EVM具有很多实际优势。考虑一个部署在以太坊上的项目,该项目如果希望扩展到 Rollup ,必须用新语言重写代码,委托进行新的安全审计,并维护多个代码库,这既麻烦又容易出错。但即使对于尚未编写任何代码的新项目,EVM兼容性也是一个很大的优势,因为它允许这些项目利用围绕EVM存在的代码、工具和人才库。

一些ZK项目正在努力实现与EVM兼容的版本,但尽管它们的声明含糊不清,但我们不知道迄今为止发布的任何代码允许人们在ZK Rollup 时运行EVM合同。现有的初步的系统存在严重的不兼容性。例如,一个声称EVM兼容性的ZK系统未能实现ADDMOD、SMOD、MULMOD、EXP、SELFDESTRUCT和CREATE2操作码;正在考虑删除对XOR、AND和OR的支持;不支持标准事务格式;不支持任何预编译;并可能限制事务中的合约调用次数。与ZK模型似乎存在根本性的不兼容,这保证了即使在最好的情况下,ZK EVM兼容性也会附带详细的打印页面,而不支持Optimistic Rollups实现的完全兼容性。

值得澄清的是,今天存在几个特定于应用程序的ZK系统的示例(例如Zcash,ZKSync 1.0,循环)。事实上,其中一些系统运行良好。核心区别在于,这些只是微调的,并针对非常适合ZK实现的特定应用程序进行了特别优化。今天不存在的是通用编译器,允许人们以兼容的方式实现从EVM到ZK转换。虽然有一些团队声称正在研究它,但没有可用的公共代码或用户定义的ZK-EVM合同的证明成本的基准。根据我们的知识和所有公开的数据,我们认为它们的成本高得令人望而却步。

结论:只有Optimistic支持完全的EVM兼容性,成本最低。

Optimistic Rollup与ZK:无条件信任的可见性和压缩性

我们在设计Arbitrum时的关键属性之一是无条件信任的可见性。简而言之,无条件信任的可见性意味着任何人都可以在无中心化的情况下看到或获取链上的内容。重要的是,这不仅意味着每个人都能看到状态快照;还意味着每个人都能看到链上的完整历史——它是如何达到当前状态的。实用链允许任何人运行一个节点,该节点可以支持非变异调用、搜索事件历史记录并查看每个事务——而无需依赖集中数据提供商。无法信任的可见性使这成为可能。

坦率地说,一些ZK系统在可见性方面有所减弱,并试图围绕它们没有提供完整的区块链功能这一事实进行交谈。当你听到关于“压缩”的谈论时,请好好听一听:他们是否说他们正在更有效地编码链上的内容(Arbitrum这样做了,并将在我们的Nitro版本中做得更好)?还是他们说,除非集中数据提供商稍后愿意与你共享,否则链上历史记录的部分永远不会可用?

回想一下,ZK证明只证明证明人知道有效的链。证明没有告诉你该链是什么,即使你有足够的数据来验证证明,你可能也没有足够的数据来重建链的历史。

例如,假设Alice连续向Bob提交 1 ETH的交易,Bob连续向Charlie提交 1 ETH的交易。稍后,你验证了爱丽丝比以前少1个ETH的证明,Bob的余额没有改变,Charlie比以前多1个ETH。

但发生了什么事?爱丽丝付钱给鲍勃了吗?Bob付钱给Charlie了吗?也许爱丽丝直接付钱给查理。也许爱丽丝烧掉了一个ETH,Charlie是由别人支付的。也许戴安娜是中介,不是鲍勃。Bob指望区块链寻找证明,但一些ZK Rollup 无法提供链式可见性,他无法分辨区别。

许多智能合同应用程序需要的不仅仅是偶尔知道一个检查站。它们需要了解链上——知道发生了什么以及如何达到最终状态。ZK Rollups有时吹嘘比Optimistic Rollups有更好的“压缩”,但事实上是隐藏了链的数据,以便只有证明人知道它不是压缩——它删除了重要数据。如果ZK提供商表示他们“不需要”发布链上历史记录,他们真正说的是,他们不能保证链可见性。放弃链式可见性保证不是我们愿意做出的妥协。

结论:Optimistic Rollup系统以最低的成本提供无条件信任的可见性。

Optimistic Rollup与ZK:无条件信任、及时的结局

考虑 Rollup 时的一个关键要求是它是否提供了无条件信任、及时的最终结果。简而言之,这意味着在你提交交易后,你应该迅速、确定地向你和其他人知道该交易的结果,任何人都不应更改或撤销它。

我们认为,实现及时终结的最佳方法是将交易的顺序与其执行分开。排序生成一个最终的拟议事务序列,执行尝试执行该序列中的事务。如果事务的执行是确定性的,就像在仲裁上一样,那么完成事务的顺序就足以最终确定结果,因为结果是事务序列的确定性函数。如果每个人都知道交易顺序,那么每个人都可以轻松确定结果。

最终确定序列需要将序列发布到L1链中,并包含足够的信息,以便任何人都可以自己执行交易,以便无条件信任地了解结果。理想的 Rollup 是尽可能频繁地将序列交易数据发布到L1链。

在Optimistic Rollup系统中,发布到L1链的开销最小,事实上,Arbitrum通常每隔1分钟左右都会向L1链发布序列化的交易数据,为用户提供快速的最终结果,并保证没有人可以撤销他们的交易。大约每小时都会做出新的Optimistic Rollup结果断言,但由于序列已经完成,并且执行是确定性的,这不会减慢最终结果。

原则上,ZK系统可以以类似的方式运行;即将交易顺序(可以经常发布到L1)与稍后进行的验证分开,偶尔会提供有效性证明。然而,以这种方式运行的ZK Rollup 要求将基本与Optimistic Rollup系统发布的数据发布到L1链上;上面讨论的(所谓的)“压缩”技术都不会可用。为了使这些“压缩”技术发挥作用,每次发布一批L2交易时,在同一笔L1交易中,必须实时验证一系列L2交易的有效性。

因此,寻求使用吹捧的“压缩”技术的ZK Rollup 留有两种选择:

1) 每一分钟左右发布序列交易以及执行证明:这保留了快速性,但要求每分钟在链外生成ZK-Proof并在L1链上验证。根据实施情况,在链上发布ZK证明的成本估计在50万至500万的gas之间。

2) 每小时发布顺序交易和证明:这使ZK证明检查成本合理,但将最终时间延长到一小时。在用户向ZK运营商提交交易到发布在链上的几个小时内,用户甚至不能保证他们的交易将被包括在内,而只是信任运营商的消息。

如果我们正在构建ZK系统,我们会发现这两个选项不可接受——第一个太昂贵,第二个没有提供及时的最终结果。因此,我们最终会使用与Optimistic Rollup版本相同的序列器,并在ZK版本的Arbitrum中在线发布基本相同的数据。

如果你听到有人吹嘘ZK可以将数小时的数据压缩到一个时间节点,请小心。如果他们只在很长一段时间结束时发布单个数据点,那么这意味着他们在此期间没有提供终结。

结论:出于实际的考虑迫使Optimistic Rollup和ZK系统以同样的方式及时处理终结。

Optimistic Rollup与ZK:无条件信任的活力

无条件信任的活力意味着任何人都可以迫使系统取得进展。(无条件信任的安全属性确保了这一进展是正确的。)

优化的 Rollup 允许任何节点声明正确的执行。提出索赔只需要节点执行链上交易,然后存入股份,该股份可以在协议确认索赔后退还。

在ZK系统上,进度要求任何节点都可以创建和发布推进链状态所需的ZK证明之一。这必须使用任何人都可以随时可用的硬件和软件。因此,它绝不能要求构建或购买特殊用途硬件,也不能进行大规模并行计算。必须有在普通设备上构建合适的ZK证明的途径。不提供此服务的ZK提供商,或未发布为其系统生成证明的代码,不提供无条件信任的进展,系统也没有活力保证。他们的系统是集中的,因为只有拥有特殊装备的各方才能迫使进步。(目前还不清楚领先的ZK Rollup 提供商是否会使证明对普通用户可行。)

结论:在一个Optimistic Rollup系统中,更容易有无条件信任的进步。

ZK vs.Optimistic Rollup:桥接

ZK Rollup 确实具有优势的一个领域是与以太坊的桥梁。Optimistic Rollup系统预计将资金从 Rollup 到L1将延迟一周,而ZK Rollup 允许在ZK证明发布到L1后立即架起。在实践中,这并没有那么大的差异,因为Optimistic Rollup用户可以利用快速桥接服务,将L2资金换成低延迟的L1基金。因此,ZK的优势主要是其用户可以避免支付桥接服务收取的小额费用(这些服务在价格上相互竞争)。这不只是理论上的:今天有很多实时快速桥接服务,可以提供从Arbitrum的即时提款。

重要的是,ZK Rollups的桥接优势相当狭窄:它仅适用于从L2到以太坊的桥接。从前(大约2019年),许多人认为Rollups将提供一两个实时dapp的缓慢推出。在这样里的世界里,Rollup用户会不断发现自己在L1和L2之间来回切换。但那不是我们所处的世界。Arbitrum拥有一个蓬勃发展的生态系统,数百个dApp遍布Defi的每个角落,许多用户正在与Arbitrum建立桥梁,并长期停留在那里。此外,由于用户跳过多个链,他们不仅仅是去以太坊。它们也会使用其他L1和侧链,对于这种直接桥接,ZK Rollups没有比Optimistic Rollups的优势。

结论:ZK系统在与L1桥接方面略有优势,但由于快速桥接和多链使用模式,它在实践中很大程度上被消解了。

总结

将Optimistic Rollup和ZK系统相比,我们认为Optimistic Rollup系统显然是赢家。Optimistic便宜得多,与EVM和现有工具完全兼容,在实践中唯一真正的缺点是,如果没有快速桥接服务,L1桥接速度会更慢。ZK的其他假设优势需要牺牲链的可见性或快速性,我们认为这不是用户想要的权衡。

这些都不太可能有改变。ZK证明与EVM兼容的合约执行仍将比Optimistic Rollup执行昂贵得多,实现保证进展、链式可见性和分散化的要求也将保持不变。虽然如果情况发生变化,我们总是愿意将Arbitrum切换到基于ZK的执行,但我们认为他们不会。

最后,我们谨慎地进行总结。人们倾向于将Arbitrum今天提供的内容与ZK系统表示的未来提供内容进行比较。但这种比较毫无意义,因为如果我们比较当今存在的系统,像Arbitrum这样的 Optimistic Rollup 是唯一支持开放部署一般智能合约的系统。或者,如果我们比较未来的系统,那么我们应该比较未来的Arbitrum和未来的ZK系统。我们正在不断改进Arbitrum——例如,我们即将发布的Nitro版本包括降低成本和更好地优化链上数据的无损压缩。我们正在不懈努力改进Arbitrum,并将成本降至理论极限。正如我们在这篇文章中表明的那样,我们认为,当考虑当今存在的系统及其各自的理论限制时,Optimistic Rollup显然是赢家。

DAOrayaki DAO研究奖金池:

资助地址: DAOrayaki.eth

投票进展:DAO Committee 2/0 通过

赏金总量:120 USDC

研究种类:DAO, Optimistic Rollups, ETH Scaling

原文作者:offchain labs

贡献者:Believer@DAOrayaki

原文: Optimistic Rollups: the present and future of Ethereum scaling

暂无评论

暂无评论...