来源:OffchainLabs
编译:James,链捕手
ZKRollups会是通用智能合约系统的未来吗?关于这个问题的讨论,我们似乎已听到太多。但是,根据我们从运行数百个DApp、数十万用户、数百万笔交易的开放、安全、与EVM?兼容的Layer?2中实践经验来看,ZK?Rollups?不会成为通用智能合约系统,至于原因,本文会做详细解释。
我们将Arbitrum构建为OptimisticRollup(OR)扩容解决方案,因为我们相信OptimisticRollup是满足用户对安全、去信任、与EVM兼容L2的现实需求最佳方式。我们选择了OptimisticRollup而不是ZKRollups,因为OptimisticRollup系统具有固有可扩展性和成本优势;时至今日,如果再让我们做一次选择,答案依然是OptimisticRollup,想知道为什么吗?请继续读下去。
内容概要:
1、人们想要一条能够提供安全性、有保证进度、可见性和快速确定性的去信任区块链——他们希望这条区块链上的交易成本更低且能与现有工具兼容。
2、在提供上述服务和功能的时候,与?ZKRollup?相比,我们深入研究了如何使用OptimisticRollup的具体细节。
3、OptimisticRollup可以以较低的成本提供用户想要的功能,因为构建ZKRollup?证明的链下成本非常高。
4、由于?ZK证明非常昂贵,因此完全参与ZK协议可能需要专用硬件和/或大规模并行性,从而使网络变得更加中心化。
5、ZKRollup所谓的“优势”,要么?OptimisticRollup也可以支持,要么需要牺牲重要的安全性或可用性功能。
6、总之,OptimisticRollup在操作成本上占据优势,因为执行代码比计算复杂的密码证明要“便宜”得多。
让我们从头开始
首先,肯定要先谈以太坊。以太坊用户创建交易以部署智能合约或与智能合约交互,你可以通过几种不同的方式来考虑以太坊交易。一方面,您可以将其视为不透明的数据区块,但如果你查看数据内容,就会发现一笔交易当然远不止这些;所谓交易,其实应该是一个请求,要求智能合约做某事,比如:记录一些信息,移动一些资产等。
当交易在以太坊区块链上发布时,会发生两件重要的事情——
第一件事:一旦某笔交易被包含在区块链内,以太坊则会根据有序交易集达成共识。
第二件事:以太坊执行这些交易并计算结果状态更新。
Rollups:OptimisticRollup和ZKRollup都有什么共同点?
如果让每个以太坊节点执行每笔交易,成本势必会非常高,而Rollups其实是一类可以显着减轻网络负载的扩展解决方案,交易实际执行并不是在以太坊区块链上完成的,而是转移到Layer?2上。
但是等一下?–?Rollups应该由以太坊保护,不是吗?的确,这些扩容解决方案的安全性离不开以太坊,这意味着即使交易发生在Layer?2上,我们仍然需要以太坊用某种方式来保证交易执行的正确性。那么,以太坊如何才能对?Rollups状态给予批准呢?
答案就是:证明。Rollups使用专门的证明来向以太坊证明自己的正确性,即使不执行交易,以太坊也可以验证其正确性。
Rollups:OptimisticRollup和ZKRollup都有什么不同点?
这些“证明”看起来很神奇:允许以太坊在不实际执行交易的情况下验证Rollups?状态。您可能想知道这些证明是什么样子,以及它们在实践中是如何实现的——而这,就是各种Rollups?风格与众不同的地方。
ZKRollups使用有效性证明,它依赖于某一方发布简洁的密码证明,这个“证明”可以确定该方知道以特定状态结尾区块链的有效性。也就是说,“提供证明的那一方”需要执行区块链交易才能知道如何构造证明,然后通过一系列复杂的密码操作来构造“证明”。这些“证明”将由Layer1链上合约进行检查。ZKRollups的“证明”比较简洁,而且验证交易也相对比较便宜,因此可以直接通过以太坊交易来完成。
OptimisticRollups使用不同类型的证明:欺诈证明。顾名思义,OptimisticRollups是“积极、乐观”的,因为当他们将更新的状态发布到以太坊区块链时,他们根本没有发布任何“证明”。任何人都可以发布一个Rollup区块,其中包含关于执行某个交易正确结果的声明,其他节点执行相同交易时,只要不同意第一个节点的主张就可以提出挑战。有效的争议协议可以解决任何分歧,保证正确的一方将赢得挑战。各方有强烈的动机只发布正确的主张,而不是质疑不正确的主张,因此在常见情况下,所有节点都会“简单地”执行所有交易,并且永远不需要调用证明代码——整个过程都由Layer1合约负责管理。
好的,那么哪种类型的Rollup?更好?在本文的其余部分,我们将在几个维度上比较?ZKRollup?和OptimisticRollup,并解释为什么我们认为未来是属于OptimisticRollup的,而且本质上来看,像Arbitrum这样的OptimisticRollup可扩展性显然更好。
OptimisticRollupvs.ZK?Rollup:成本
OptimisticRollup和?ZKRollup?之间最重要的一个区别可能就是成本。
OptimisticRollup要求节点简单地执行合约,例如,如果合约执行添加操作,则节点执行该添加操作。
相比之下,ZKRollup?需要生成复杂的密码证明,需要进行成百上千次椭圆曲线运算才能将加法运算包含在证明中,因此成本很高。更重要的是,ZKRollup会导致每个合约中的每条指令产生成本,由于需要对每条指令生成复杂的密码证明,而不仅仅是执行指令,因此给?ZKRollup?带来了一个固有成本劣势——而且是一个很大的劣势。
ZKRollup的支持者有时会争辩说,该解决方案只需要一方创建“证明”,而OptimisticRollup则要求系统有许多节点。但是,如果你正在运行一个规模较大的区块链,无论你使用哪种证明系统,它都会有很多节点。真正的区块链需要很多节点来服务各类活动,比如非变异调用、搜索事件日志、向用户显示交易数据、为用户提供将资金提取回Layer?1所需的数据等等。OptimisticRollup区块链的安全性依赖于这些节点做他们已经需要做的事情——执行交易并追踪区块链的正确状态。
另一方面,使用?ZKRollup,就会导出出现昂贵的、基于椭圆曲线的证明,而这会造成非常大的附加成本。为了希望大规模证明ZKRollup,要么需要专用硬件设备,要么需要支持大规模并行——或者两者兼而有之,这些都是非常昂贵的。
结论:OptimisticRollup系统具有巨大的固有成本优势。
OptimisticRollupvs.ZK?Rollup:EVM兼容性
我们在构建Arbitrum时的一个重要考虑因素,就是与以太坊虚拟机的兼容性。Arbitrum完全兼容EVM,而且具有相同的RPC接口并接受与EVM相同的字节码,这意味着为以太坊编写的任何代码都可以在Arbitrum上“即插即用”。
OptimisticRollup已经运行开放的、与?EVM兼容的区块链一年多了,我们了解到真正兼容以太坊非常具有挑战性。最初阶段?95%的兼容性并不太难,但在实践中还不够好,只有付出大量努力和构建不会妨碍产品的架构才能让兼容性表现的更好。
在兼容性方面,ZKRollup?系统运行的范围很广。但有些人认为?ZKRollup?是个“老派”工具,因为他们还在鼓励人们学习他们的自定义语言。此外,一些?ZKRollup?系统并不试图兼容以太坊,当然,对于那些不关心以太坊兼容性的开发人员和用户来说,也不错。
客观上来说,EVM算是有史以来最好的链上工具。我们认为,考虑到已经与EVM配合使用的开发人员、代码和开发人员工具的数量,EVM本身具有非常大的实际优势。考虑一个部署在以太坊上的项目,如果该项目想要扩展到?Rollup,那么开发人员就必须用新语言重写他们的代码、委托新的安全审计、并且维护多个代码库,这些工作不仅繁琐且容易出错。但即使对于尚未编写任何代码的新项目,EVM兼容性也是非常重要,因为兼容EVM?意味着这些项目可以充分利用围绕EVM存在的代码、工具和人才库。
也一些?ZKRollup?项目正在努力实现EVM兼容版本,但声明含糊不清,我们也不知道迄今为止发布的代码是否允许在ZKRollup上运行EVM合约,一些系统仍然不具备EVM?兼容性。举个例子,一个声称与EVM兼容的ZKRollup?系统真实兼容性并不太好,该系统——
未能实现ADDMOD、SMOD、MULMOD、EXP、SELFDESTRUCT和CREATE2操作码兼容;正在考虑取消对XOR、AND和OR的支持;不支持标准交易格式;不支持任何预编译;可能会限制交易中的合约调用次数。似乎看起来?ZKRollup?模式从根本上就不兼容EVM,这显然与OptimisticRollups实现的完全兼容性有很大差距。
需要澄清的是,目前依然存在多个特定于应用程序的?ZKRollup?系统示例。事实上,这些系统运行良好,但核心区别在于,它们针对非常适合ZKRollup实现的特定应用程序进行了微调和专门优化。虽然有团队声称在研究一种通用编译器,允许以兼容方式“打通”?EVM到ZKRollup,但并没有可用公共代码或基准来说明用户定义的ZK-EVM合约的证明成本,根据现有掌握的知识和所有公开可用的数据,我们认为这个成本会非常高。
结论:只有?OptimisticRollups以最低的成本支持完全的EVM兼容性。
OptimisticRollupvs.ZK?Rollup:去信任可见性和压缩
在设计交易套利时,OptimisticRollups的关键属性之一是去信任可见性。简而言之,去信任可见性意味着任何人都可以在没有中心化组织帮助的情况下查看或获取区块链的内容。更重要的是,这不仅意味着每个人都可以偶尔看到状态快照——也意味着每个人都可以看到链的完整历史——它是如何达到当前状态的。一个实用的区块链让任何人都可以运行一个节点,同时节点也可以支持非变异调用、搜索事件历史记录并查看每笔交易——无需依赖中心化的数据提供者,而无信任的可见性使这成为可能。
坦率地说,一些?ZKRollup?系统在可见性方面似乎走了捷径,并试图谈论他们没有提供完整的区块链功能的事实。当您听到谈论“压缩”时,请仔细想想看——他们是不是说他们正在更有效地编码链的内容?或者他们是说区块链历史的某些部分根本不可用,除非中心化数据提供者愿意稍后与您共享?
回想一下,ZKRollup?证明其实只证明了“证明者”知道的有效链,但“证明”本身不会告诉你那个链是什么,即使你有足够的数据来验证“证明”,可能也没有足够的数据来重建区块链的历史数据。
举个例子,假设?Alice提交了一笔支付给?Bob的1ETH交易,很快又出现了Bob提交了一笔支付给?Charlie的1ETH连续交易。接下来,你需要验证一个证明,即:Alice比以前少了1ETH,Bob的余额没有改变,而Charlie比以前多了1ETH。
但是发生了什么?Alice付钱给Bob?了吗?Bob?付钱给Charlie?了吗?也许是Alice直接付钱给Charlie,也许是?Alice销毁了一个ETH,而Charlie所获得的1?ETH?是由其他人支付的,也许这个“其他人”名叫Diana,而不是?Bob。如果我们从区块链中寻找?Bob的支付证据,但对于一些不提供区块链可见性的ZKRollup?来说,根本无法区分并找到Bob?支付交易。
许多智能合约应用程序所需要的不是仅仅知道几个检查点,而是需要了解整个链条——了解发生了什么以及如何达到最终状态。?ZKRollups有时吹嘘比OptimisticRollups更好的“压缩”,但它们隐藏了区块链的数据,这意味着只有“证明者”知道数据不是压缩,它们甚至有可能删除依稀重要数据。如果ZK提供者说他们“不需要”发布整条区块链的历史,其实他们真正的意思是他们无法保证区块链的可见性,而放弃区块链可见性保证并不是?Optimistic?Rollup?愿意做出的妥协。
结论:OptimisticRollup系统能以最低成本提供去信任的可见性。
OptimisticRollupvs.ZK?Rollup:去信任,及时终结
在评估Rollup时,我们需要确定一个关键要求,即:Rollup是否需要提供去信任的、及时的终结。简单来说,这意味着在您提交交易后,你和其他所有人都应该及时且确定地知道该交易的结果,并且没有人能够更改或撤消这个交易。
在我们看来,实现及时终结的最佳方法是将交易的顺序与交易执行分开。排序产生一个最终的提议交易序列,并且尝试按该序列执行交易。如果交易的执行是确定性的,因为它是基于Arbitrum的,那么确定交易的顺序就足以确定结果,因为结果是交易顺序的确定性函数。如果每个人都知道交易的顺序,那么每个人都可以轻松确定结果。
完成一个序列需要将序列发布到?Layer?1链,并包含足够的信息以允许任何人自己执行交易,以便无需信任地了解结果。理想的汇总是尽可能频繁地将排序的交易数据发布到Layer?1链。
在Optimistic?Rollup?系统中,发布到?Layer?1链的成本最低,实际上Arbitrum通常会在每一分钟左右将排序的交易数据发布到Layer?1链,为用户提供快速确定性并保证没有人可以撤消他们的交易。此外,Arbitrum?还会每隔一小时左右就产生一个新的Optimistic?Rollup?结果主张,但由于序列已经最终确定并且执行是确定性的,因此完全不会减慢最终确定的速度。
原则上,ZKRollup?系统也可以按照类似的方式运行;即,将交易的顺序与稍后进行的验证与偶尔的有效性证明分开。然而,与?Optimistic?Rollup?系统发布数据一样,以这种方式运行的ZKRollup需要将基本相同的数据发布到Layer?1链上,但对于上文中讨论的“压缩”技术并不支持这么做。ZK?Rollup?为了让“压缩”技术起作用,必须实时证明一系列Layer?2交易的有效性,在同一个Layer?1交易中,而且每次发布一批Layer?2交易时都必须这么做。
因此,虽然所谓的“压缩”技术备受ZK?Rollup?吹捧,但在遇到上述情况时,他们不得不做两个选择:
1)每分钟左右发布排序交易以及执行证明:这可以保持快速确定性,但需要每分钟在情况链外生成ZK证明并在Layer?1链上进行验证。根据实施情况,在区块链链上发布ZK证明的成本估计在500,000到500万?gas?之间。
2)每小时发布排序交易和证明:这种做法虽然可以使ZK证明检查成本变得略微合理,但将最终确定时间会延长到一个小时。在用户向ZKRollup?运营者提交交易和其发布到情况链上之间的时间里,用户无法保证他们的交易是否会被包括在内,而且只能相信?ZK?Rollup?的运营者。
如果你正在构建一个?ZKRollup?系统,会发现上述两个选项其实都是不可接受的——第一个成本太昂贵,第二个无法提供及时的终结。因此,如果最终会使用相同类型的序列器,就需要在Arbitrum的ZKRollup?版本中发布与我们的?Optimistic?Rollup?版本基本相同的数据。
如果您听到有人吹捧?ZKRollup?可以将数小时的数据压缩为一个点,请不要担心。如果他们只在很长一段时间结束时发布单点数据,那么这意味着他们在这段时间内没有提供最终确定性。
结论:出于实际考虑,ZKRollup系统不得不以OptimisticRollup?相同的方式处理实时终结。
OptimisticRollupvs.ZK?Rollup:去信任活性
去信任活性意味着任何人都可以迫使系统取得进步。
Optimistic?Rollup?允许任何节点声明正确执行交易,提出该声明只需要节点执行链的交易,然后存入一笔可以在协议确认声明后退还的质押即可。
在?ZKRollup?系统上,进程要求任何节点都可以创建并发布推进区块链状态所需的ZK证明,但并不是每个人都可以使用普通硬件和软件就能实现的。因此,如果要完成ZK?证明就必须构建或购买特定的专用硬件而且还要进行大规模并行计算。即便是在普通设备上,也需要构建合适的ZK证明的路径,不提供此功能或未发布为其系统生成证明的代码的ZK提供者就无法提供去信任进程,系统也就没有任何活性保证。也就是说,ZK?Rollup?的系统是中心化的,因为只有拥有特殊设备的证明者才能推动进程。
结论:在OptimisticRollup系统中更容易提供去信任进程。
OptimisticRollupvs.ZK?Rollup:桥接
当然,ZKRollup?并非一无是处,它在一个领域里具有较大优势,即:以太坊跨链连接。在资金转移到Layer?1时,Optimistic?Rollup?系统会比预期延迟一周,而ZKRollup?允许在ZK证明发布到Layer?1后立即建立桥接。但从本质上来看,这两种方式其实并没有太大的区别,因为?Optimistic?Rollup?也可以让用户快速利用桥接服务,以低延迟将Layer?2资金交换为Layer?1资金。所以ZK的优势主要是用户可以避免支付跨链桥接服务所收取的小额费用。但在实际应用中,Optimistic?Rollup?的表现其实也不错,因为目前已经有许多实时快速跨链桥提供从Arbitrum的即时提款服务。
需要强调的是,ZKRollups的桥接优势其实并不是非常大:因为它只能用于从Layer?2桥接回以太坊。曾几何时,许多人认为以太坊扩容解决方案不会那么快出现,也许只会有一两个DApp?缓慢推出。但在实际应用中,Rollup?用户会发现自己需要在Layer?1和Layer?2?之间来回切换,而这其实是ZK?Rollup?无法支持的,相比之下,Arbitrum拥有一个蓬勃发展的生态系统,数百个DApp遍布在?DeFi领域里的每个角落,许多用户正在连接到Arbitrum并长期留在那里。此外,在为用户提供跨链支持方面,Arbitrum?不仅仅支持以太坊,也会和其他Lauer?1和侧链对接,对于这种直接桥接,ZKRollups的优势就没有?OptimisticRollups那么大了。
结论:ZKRollup?系统在桥接到Layer?1方面略有优势,但在快速桥接和多链使用模式下,ZKRollup的实际应用并没有预期的那么好。
总结
在全面比较Optimistic?Rollup?与?ZKRollup?系统之后,我们认为?Optimistic?Rollup?系统显然是赢家。Optimistic?Rollup?成本更低,与EVM和现有工具完全兼容,实践中唯一真正的缺点是在没有快速跨链桥接服务的情况下,Layer?1的桥接速度较慢。ZKRollup?的许多假定优势需要牺牲区块链可见性或终结时间,我们认为这不是用户想要的。
不仅如此,ZK?Rollup?想要做出改变似乎也不太可能。与?EVM兼容的合约执行的ZK证明仍将比?Optimistic?Rollup?执行要昂贵得多,并且?ZK?Rollup?也很难实现有保证的进度、区块链可见性和去中心化的要求。如果情况发生变化,我们愿意将Arbitrum切换到基于ZKRollup?的交易执行,但我们认为它们不会做出优化改变。
最后要说的是,人们倾向于将Arbitrum当前提供的内容与ZK系统声称他们将在未来提供的内容进行比较,但这种比较其实毫无意义,因为我们要比,就拿现有系统作对比。像Arbitrum这样的OptimisticRollup扩容解决方案是唯一支持通用智能合约的开放部署系统。或者,如果要比较未来的系统,那么我们就应该将未来的Arbitrum与未来的ZK系统进行比较。
我们正在不断改进Arbitrum,举个例子,在我们即将发布的Nitro版本里,将会为用户提供更低的交易成本和更好的链上优化无损压缩数据,不仅如此,我们正在不知疲倦地工作以改进交易套利并将成本降低到理论极限。正如我们在这篇文章中所分析的那样,我们相信,当考虑到目前存在的两个系统以及它们各自的理论限制时,OptimisticRollups显然是真正的赢家。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。