「共享有效性排序」新方向:实现rollup间的原子互操作性

原文来源:umbraresearch

原文作者:@pumatheuma(CEO,SuccinctLabs)、 @0xShitTrader(Cofounder,EllipsisLabs)、@jtguibas (CTO,SuccinctLabs)

原文标题:SharedValiditySequencing

编译:Yvonne,MarsBit

介绍

以太坊扩展的未来是一个拥有数千个Rollup的世界。目前,占主导地位的rollup是optimistic rollup,大多数rollup即服务公司也在构建optimistic rollup。

然而,目前optimistic rollup在设计上存在两个主要问题:

rollup依赖于中心化排序器,这是软审查(soft censorship)和MEV集中化的一种方式。

没有很好的解决方案来实现optimistic rollup之间的原子互操作性。由于optimistic rollup安全模型中有7天的挑战期,如果不等待防欺诈窗口通过,optimistic rollup无法验证另一方状态。因此,现有的跨rollup桥接和互操作性(任意消息传递)设计本质上是中心化和异步的。

共享的、去中心化的排序器集已被提出,作为分散rollup排序器角色的一种方法。但是现有的设计只执行交易排序,因此它们只解决第一个问题,而没有解决原子性的跨rollup的互操作性。

在本文中,我们提出了一个共享的排序器结构,它支持原子级的跨rollup互操作性。共享有效性排序解锁了一个统一的原生资产层,可以服务于整个rollup生态系统。

背景

设想两个optimistic rollup A和B。这个设计可以推广到N个rollup,但为了清晰起见,我们用2个rollup来描述该系统。

在当前环境中,A和B的两个排序器独立地对这两个rollup的交易排序。目标是在 A 和 B 之间实现原子跨链操作。具体而言,只有当 B 上对应的交易 bj ​被包含并成功(不回滚)时,A 上的交易 ai 才能被包含并成功。

上述原语的典型示例是在两个rollup之间进行共享代币的销毁和铸造。用户将共享代币从rollup A桥接到rollup B时,要求只有在rollup B上的铸造交易成功时,侧链A上的销毁交易才能成功。否则,资金可能会丢失(例如,如果销毁成功但铸造失败)或错误铸造(例如,如果销毁由于用户资金不足而回滚,但铸造仍然被包含)。

请注意,如果不执行交易 a i,就无法知道交易是否能够成功执行,或者其成功是否需要满足跨域条件。如果没有某种程度的排序器级别的执行,可能不可能启用跨rollup原子性。

现有的共享排序器设计不要求排序器执行交易,因此它们只能通过条件包含来实现一种弱形式的互操作性。非执行共享排序器提供的原子交易包含无法实现代币的原子桥接,因为代币的铸造/销毁不变量无法像底层欺诈证明机制一样具有相同的安全性。总的来说,原子条件交易执行比原子交易包含更具表达性。

共享有效性排序

在这里,我们描述了共享有效性排序,这是一种共享排序器设计,可以实现optimistic rollup之间的原子跨链互操作性。该设计有三个关键组成部分:

共享排序器接受跨链操作的方法

共享排序器的区块构建算法来处理这些跨链操作,同时尊重原子性和条件执行保证

在涉及到跨链操作时,通过共享欺诈证明来强制执行涉及到这些跨链操作的保证。

为简单起见,我们概述了一个系统,该系统在两个rollup之间启用原子销毁和铸币操作:当且仅当rollup B上相应的铸币操作成功时,rollup A上的销毁操作才会成功。稍后,我们将该系统推广到任意的跨rollup消息传递。

系统合约的跨链操作

现在的rollup已经包含了实现特定rollup功能的系统合约,例如L1和L2之间的双向消息传递,以及其他特殊的预编译。我们建议添加一个系统合约,允许其他智能合约触发跨链操作。

以太坊

该合约的副本存于两个rollup上,并用于原生代币的原子桥接。在rollup A上,burnTree包含所有包含的销毁动作。在rollup B上,mintretree包含所有包含的铸币操作。期望的不变量是A上的burnTree与B上的mintretree相同,或者它们的Merkle根相等。

以太坊

具有共享有效性排序的区块构建

在这种设计下,rollup A和rollup B共用一个排序器。这个共享排序器负责将交易批次和声明的状态根发送到L1。共享的排序器可以是中心化排序器,就像今天生产中的rollup排序器一样,也可以是去中心化的排序器网络中的领导者。

我们提出的唯一要求是,共享排序器必须将交易批次和两个rollup的声明状态根发布到同一交易中的L1。虽然不同的rollup可以为交易排序和区块构建选择不同的方法,但我们对区块构建器的修改应该与大多数排序机制兼容。

共享排序接收交易并为 A 和 B 构建区块。对于 A 上的每个交易,排序执行该交易并检查它是否与 MintBurnSystemContract 交互。如果交易成功执行并与 burn 函数交互,则共享排序尝试在 B 上执行相应的 mint 交易。如果 mint 交易成功,则共享排序包括 A 上的 burn 和 B 上的 mint;然后,如果 mint 交易失败,则共享排序器排除这两个交易。

上述区块构建修改是对现有区块构建算法的简单扩展。它只要求共享排序器为两个rollup构建区块,并且排序器执行交易并将有条件触发的交易从一个rollup插入到另一个rollup。

共享欺诈证明

optimistic rollup中最重要的部分是有效的、无需许可的欺诈证明;这就是rollup从底层L1继承安全性的方式(目前,Optimism没有欺诈证明,而Arbitrum已将欺诈证明列入白名单)。我们已经描述了共享排序器如何有条件地包括它同时排序的两条链上的交易。现在我们描述如何通过欺诈证明来强制执行条件包含。

欺诈证明是L1上的一种机制,用于确保rollup sequencer诚实地处理交易并更新状态。有一种简单而优雅的方法可以扩展现有的防欺诈机制,以确保排序器诚实地处理跨链操作,并正确地包括这些条件交易。

上面描述的MintBurnSystemContract在一个rollup上维护所有burn交易的Merkle树,并在另一个rollup上维护相应的mint交易。只有当且仅当交易成功时,条目才会进入Merkle树。因此,为了确保rollup A上的所有burn交易在rollup B上都有相应的mint,只需检查A上burnTree的Merkle根与B上mintretree的Merkle根匹配即可。

只需要对现有的rollup A和B的欺诈证明机制进行略微更改。如果A上的burnTree的根与B上的mintretree的根不匹配,则认为这是不正确的排序,负责排序的人可能会受到惩罚。

一种实施跨链原子性保证的替代机制是,对于接受rollup交易批次的L1智能合约来说,它还需要Merkle证明,证明A上的burnTree的根与B上的mintretree的根匹配,而不是批提交时声称的状态根。

超越铸币和销毁的普适性

我们已经概述了只使用mint和burn函数的共享有效性排序。但它很容易被推广到任意的消息传递和多个rollup之间的条件性交易执行。一个跨rollup的动作可以被调用,其中强制的不变因素是,要么所有被触发的合约调用成功并被包括在内,要么没有一个成功。

以太坊

共享有效性排序的特性

与单一链的比较

通过共享有效性排序支持原子跨rollup交易的一组rollup在逻辑上可以被认为是一个具有多个分片的大链。与单一的rollup相比,有以下优点:

为每个单独的rollup提供原生费用市场。

锁集的定价机制:跨Rollup 操作有效地获取了对两个链的锁。

开箱即用的分片:可以选择信任某些分片并验证其他分片。

支持不同的执行环境,例如具有针对特定用例进行优化的runtimes的应用链。

这些都是相较单一rollup的差异化因素。与Solana这样的高性能基础层(支持并行执行和弱形式的原生收费市场)相比,最大的区别在于对不同执行环境的原生支持以及与以太坊路线图的兼容性。然而,在共享有效性排序(Shared Validity Sequencing)下,多个rollup组合成一个分片状态机,相对于设计用于从第一天开始就支持并行性的基础层来说,这是一个粗放且低效的实现。吞吐量、费用和完成时间将始终受到以太坊的限制。

排序器和节点需求

与不执行交易的共享排序器设计相比,共享有效性排序将更多的负载放在共享排序器上。共享排序器需要执行所有交易,以访问当前状态并确定它们是否应该触发其他交易的执行。注意,在默认情况下,跨不同rollup的执行仍然可以进行分片。

rollup A的全节点操作者也必须运行rollup B的全节点,因为A的有效性不仅取决于A的有效状态转换,还取决于跨rollup状态(A + B)的有效性。为了验证A的有效性,节点操作者还必须验证跨rollup状态(A + B)的有效性,这需要验证B的有效性。

主权

该模型将rollup A和B的有效性联系在一起,因为它们各自状态的有效性现在取决于彼此。这是rollup为了可组合性而做出的主观决定。它们的应用程序比在单一链上部署要更具主权,但比应用链要少。我们将在以后的文章中探讨这些模型之间的权衡。

以太坊

ZK Rollup应用

ZK rollup具有开箱即用的异步互操作性,因为它们可以直接验证彼此的ZK证明。但是原子互操作性仍然有好处,包括更好的用户体验和同步可组合性。

虽然共享有效性排序的这种设计是为optimistic rollup构建,但可以稍微修改一下以适用于ZK rollup。MintBurnSystemContract和排序器区块构建算法保持不变。共享的欺诈证明被提议的替代机制所取代,其中L1智能合约接受批量交易并验证rollup状态转换的ZK证明,现在还必须验证rollup A上的burnTree的根与rollup B上的mintretree的根是否匹配。

使用这种设计下的ZK rollup, A的全节点操作者不需要为B运行全节点。为了验证跨rollup不变量,它可以简单地验证B的状态转移证明,并使用Merkle证明来获得B的MintBurnSystemContract状态。

结论

在本文中,我们描述了共享有效性排序(Shared Validity Sequencing),这是一种共享排序器设计,它支持rollup之间的原子互操作性。在这种设计下,排序器除了对交易进行排序外,还负责执行交易,允许强制执行跨链不变性,同时增加了排序器和节点操作者的负载。通过选择与其他rollup共享有效性,rollup获得原子互操作性及其相关的好处(例如,统一的原生资产层)。该系统可推广到多个rollup,包括ZK rollup。

共享有效性排序及其权衡可能对某些rollup生态系统有意义。要与我们合作,请联系[email protected]。

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年6月25日 下午7:18
下一篇 2023年6月25日 下午7:19

相关推荐

「共享有效性排序」新方向:实现rollup间的原子互操作性

星期日 2023-06-25 19:18:59

介绍

以太坊扩展的未来是一个拥有数千个Rollup的世界。目前,占主导地位的rollup是optimistic rollup,大多数rollup即服务公司也在构建optimistic rollup。

然而,目前optimistic rollup在设计上存在两个主要问题:

rollup依赖于中心化排序器,这是软审查(soft censorship)和MEV集中化的一种方式。

没有很好的解决方案来实现optimistic rollup之间的原子互操作性。由于optimistic rollup安全模型中有7天的挑战期,如果不等待防欺诈窗口通过,optimistic rollup无法验证另一方状态。因此,现有的跨rollup桥接和互操作性(任意消息传递)设计本质上是中心化和异步的。

共享的、去中心化的排序器集已被提出,作为分散rollup排序器角色的一种方法。但是现有的设计只执行交易排序,因此它们只解决第一个问题,而没有解决原子性的跨rollup的互操作性。

在本文中,我们提出了一个共享的排序器结构,它支持原子级的跨rollup互操作性。共享有效性排序解锁了一个统一的原生资产层,可以服务于整个rollup生态系统。

背景

设想两个optimistic rollup A和B。这个设计可以推广到N个rollup,但为了清晰起见,我们用2个rollup来描述该系统。

在当前环境中,A和B的两个排序器独立地对这两个rollup的交易排序。目标是在 A 和 B 之间实现原子跨链操作。具体而言,只有当 B 上对应的交易 bj ​被包含并成功(不回滚)时,A 上的交易 ai 才能被包含并成功。

上述原语的典型示例是在两个rollup之间进行共享代币的销毁和铸造。用户将共享代币从rollup A桥接到rollup B时,要求只有在rollup B上的铸造交易成功时,侧链A上的销毁交易才能成功。否则,资金可能会丢失(例如,如果销毁成功但铸造失败)或错误铸造(例如,如果销毁由于用户资金不足而回滚,但铸造仍然被包含)。

请注意,如果不执行交易 a i,就无法知道交易是否能够成功执行,或者其成功是否需要满足跨域条件。如果没有某种程度的排序器级别的执行,可能不可能启用跨rollup原子性。

现有的共享排序器设计不要求排序器执行交易,因此它们只能通过条件包含来实现一种弱形式的互操作性。非执行共享排序器提供的原子交易包含无法实现代币的原子桥接,因为代币的铸造/销毁不变量无法像底层欺诈证明机制一样具有相同的安全性。总的来说,原子条件交易执行比原子交易包含更具表达性。

共享有效性排序

在这里,我们描述了共享有效性排序,这是一种共享排序器设计,可以实现optimistic rollup之间的原子跨链互操作性。该设计有三个关键组成部分:

共享排序器接受跨链操作的方法

共享排序器的区块构建算法来处理这些跨链操作,同时尊重原子性和条件执行保证

在涉及到跨链操作时,通过共享欺诈证明来强制执行涉及到这些跨链操作的保证。

为简单起见,我们概述了一个系统,该系统在两个rollup之间启用原子销毁和铸币操作:当且仅当rollup B上相应的铸币操作成功时,rollup A上的销毁操作才会成功。稍后,我们将该系统推广到任意的跨rollup消息传递。

系统合约的跨链操作

现在的rollup已经包含了实现特定rollup功能的系统合约,例如L1和L2之间的双向消息传递,以及其他特殊的预编译。我们建议添加一个系统合约,允许其他智能合约触发跨链操作。

以太坊

该合约的副本存于两个rollup上,并用于原生代币的原子桥接。在rollup A上,burnTree包含所有包含的销毁动作。在rollup B上,mintretree包含所有包含的铸币操作。期望的不变量是A上的burnTree与B上的mintretree相同,或者它们的Merkle根相等。

以太坊

具有共享有效性排序的区块构建

在这种设计下,rollup A和rollup B共用一个排序器。这个共享排序器负责将交易批次和声明的状态根发送到L1。共享的排序器可以是中心化排序器,就像今天生产中的rollup排序器一样,也可以是去中心化的排序器网络中的领导者。

我们提出的唯一要求是,共享排序器必须将交易批次和两个rollup的声明状态根发布到同一交易中的L1。虽然不同的rollup可以为交易排序和区块构建选择不同的方法,但我们对区块构建器的修改应该与大多数排序机制兼容。

共享排序接收交易并为 A 和 B 构建区块。对于 A 上的每个交易,排序执行该交易并检查它是否与 MintBurnSystemContract 交互。如果交易成功执行并与 burn 函数交互,则共享排序尝试在 B 上执行相应的 mint 交易。如果 mint 交易成功,则共享排序包括 A 上的 burn 和 B 上的 mint;然后,如果 mint 交易失败,则共享排序器排除这两个交易。

上述区块构建修改是对现有区块构建算法的简单扩展。它只要求共享排序器为两个rollup构建区块,并且排序器执行交易并将有条件触发的交易从一个rollup插入到另一个rollup。

共享欺诈证明

optimistic rollup中最重要的部分是有效的、无需许可的欺诈证明;这就是rollup从底层L1继承安全性的方式(目前,Optimism没有欺诈证明,而Arbitrum已将欺诈证明列入白名单)。我们已经描述了共享排序器如何有条件地包括它同时排序的两条链上的交易。现在我们描述如何通过欺诈证明来强制执行条件包含。

欺诈证明是L1上的一种机制,用于确保rollup sequencer诚实地处理交易并更新状态。有一种简单而优雅的方法可以扩展现有的防欺诈机制,以确保排序器诚实地处理跨链操作,并正确地包括这些条件交易。

上面描述的MintBurnSystemContract在一个rollup上维护所有burn交易的Merkle树,并在另一个rollup上维护相应的mint交易。只有当且仅当交易成功时,条目才会进入Merkle树。因此,为了确保rollup A上的所有burn交易在rollup B上都有相应的mint,只需检查A上burnTree的Merkle根与B上mintretree的Merkle根匹配即可。

只需要对现有的rollup A和B的欺诈证明机制进行略微更改。如果A上的burnTree的根与B上的mintretree的根不匹配,则认为这是不正确的排序,负责排序的人可能会受到惩罚。

一种实施跨链原子性保证的替代机制是,对于接受rollup交易批次的L1智能合约来说,它还需要Merkle证明,证明A上的burnTree的根与B上的mintretree的根匹配,而不是批提交时声称的状态根。

超越铸币和销毁的普适性

我们已经概述了只使用mint和burn函数的共享有效性排序。但它很容易被推广到任意的消息传递和多个rollup之间的条件性交易执行。一个跨rollup的动作可以被调用,其中强制的不变因素是,要么所有被触发的合约调用成功并被包括在内,要么没有一个成功。

以太坊

共享有效性排序的特性

与单一链的比较

通过共享有效性排序支持原子跨rollup交易的一组rollup在逻辑上可以被认为是一个具有多个分片的大链。与单一的rollup相比,有以下优点:

为每个单独的rollup提供原生费用市场。

锁集的定价机制:跨Rollup 操作有效地获取了对两个链的锁。

开箱即用的分片:可以选择信任某些分片并验证其他分片。

支持不同的执行环境,例如具有针对特定用例进行优化的runtimes的应用链。

这些都是相较单一rollup的差异化因素。与Solana这样的高性能基础层(支持并行执行和弱形式的原生收费市场)相比,最大的区别在于对不同执行环境的原生支持以及与以太坊路线图的兼容性。然而,在共享有效性排序(Shared Validity Sequencing)下,多个rollup组合成一个分片状态机,相对于设计用于从第一天开始就支持并行性的基础层来说,这是一个粗放且低效的实现。吞吐量、费用和完成时间将始终受到以太坊的限制。

排序器和节点需求

与不执行交易的共享排序器设计相比,共享有效性排序将更多的负载放在共享排序器上。共享排序器需要执行所有交易,以访问当前状态并确定它们是否应该触发其他交易的执行。注意,在默认情况下,跨不同rollup的执行仍然可以进行分片。

rollup A的全节点操作者也必须运行rollup B的全节点,因为A的有效性不仅取决于A的有效状态转换,还取决于跨rollup状态(A + B)的有效性。为了验证A的有效性,节点操作者还必须验证跨rollup状态(A + B)的有效性,这需要验证B的有效性。

主权

该模型将rollup A和B的有效性联系在一起,因为它们各自状态的有效性现在取决于彼此。这是rollup为了可组合性而做出的主观决定。它们的应用程序比在单一链上部署要更具主权,但比应用链要少。我们将在以后的文章中探讨这些模型之间的权衡。

以太坊

ZK Rollup应用

ZK rollup具有开箱即用的异步互操作性,因为它们可以直接验证彼此的ZK证明。但是原子互操作性仍然有好处,包括更好的用户体验和同步可组合性。

虽然共享有效性排序的这种设计是为optimistic rollup构建,但可以稍微修改一下以适用于ZK rollup。MintBurnSystemContract和排序器区块构建算法保持不变。共享的欺诈证明被提议的替代机制所取代,其中L1智能合约接受批量交易并验证rollup状态转换的ZK证明,现在还必须验证rollup A上的burnTree的根与rollup B上的mintretree的根是否匹配。

使用这种设计下的ZK rollup, A的全节点操作者不需要为B运行全节点。为了验证跨rollup不变量,它可以简单地验证B的状态转移证明,并使用Merkle证明来获得B的MintBurnSystemContract状态。

结论

在本文中,我们描述了共享有效性排序(Shared Validity Sequencing),这是一种共享排序器设计,它支持rollup之间的原子互操作性。在这种设计下,排序器除了对交易进行排序外,还负责执行交易,允许强制执行跨链不变性,同时增加了排序器和节点操作者的负载。通过选择与其他rollup共享有效性,rollup获得原子互操作性及其相关的好处(例如,统一的原生资产层)。该系统可推广到多个rollup,包括ZK rollup。

共享有效性排序及其权衡可能对某些rollup生态系统有意义。要与我们合作,请联系[email protected]。