转发给 SS 的交易将被排序,然后在 L1 上最终确定之前发回 Rollup 的执行者和证明者。SS 还将提交给区块信息连同用于验证该块的仲裁证书一起发送到其 L1 排序器合约。这允许 L1 Rollup 合约将 Rollup 状态更新证明与被证明为共识输出的区块提交的信息进行比较。
交易流程的完整视图:
跨链原子性
正如 Espresso 帖子中所述,SS 可以提供一些关于跨链原子性的令人兴奋的用例:
跨多个 Rollup 共享的排序层有望使跨链消息传递和桥接更便宜、更快、更安全。消除为另一个链的排序器构建轻客户端的需要,节约了成本。通过消除给定 Rollup 与其他 Rollup 的共识保持实时独立的需求,交叉 Rollup 桥接也可以进一步节省成本。共享排序器还为桥接提供了安全优势:共享排序器可以保证当且仅当事务在另一个 Rollup 中完成时,它才能在一个 Rollup 中完成。
此外,共享排序器增强了用户表达跨不同 Rollup 的事务之间的原子依赖性的能力。按照惯例,Alice 将独立于 Bob 的 Rollup-B 交易 t' 签署和发布她的 Rollup-A 交易 t'。在这种情况下,Alice 的交易可能会在 Bob 的交易之前很久就被排序,从而给 Bob 留下一个长期的选择来中止。这种可选性不平衡通过共享排序器得到缓解,Alice 和 Bob 可以将两个交易作为一个签名包一起提交(即,排序器必须将这两个交易视为一个交易)。
这对跨链 MEV 产生了影响,因为链上活动最终会增长。典型的例子是「原子套利」。同一种资产在两个不同的链上以两种不同的价格进行交易。搜索者希望在没有风险的情况下同时执行两笔交易来实现套利。例如:
- Trade 1 (T1 ) - 在 Rollup 1 (R1 ) 上以低价购买 ETH
- Trade 2 (T2 ) - 在 Rollup 2 (R2 ) 上以高价卖出 ETH
对于原子套利 ,要么两笔交易都被成交,要么都没有成交。如果两个 Rollup 都选择了同一个 SS,那么它可以为搜索者实现这种原子套利。这里的 SS 可以保证:
- T1 包含在 R1 的指令流中,当且仅当:
- T2 也包含在到 R2 的指令流中
假设 Rollup 虚拟机按顺序执行各自流中的所有事务(即,不存在无效指令,只是一些指令可以抛出错误而不影响状态),那么我们还可以保证:
- T1 在 R1 上执行,当且仅当 :
- T2 也在 R2 上执行
但是,这仍然不是你在共享状态机(例如,完全在以太坊 L1 上)上进行交易时的保证。如前所述,SS 不持有这些 Rollup 的状态,它们不执行交易。你不能完全保证其中一项交易(在 R 1 或 R 2 上)不会在执行时恢复。
直接在这个基础上构建更高级的原语是有问题的。例如,如果你尝试在此 SS 之上构建一个即时销毁和铸造的跨链桥接,它会在完全相同的区块高度同时执行以下操作:
- 销毁 R1 上的输入
- 在 R2 上生成输出
你可能会遇到以下情况:
- R1 上的销毁可能会抛出意外错误,但
- R2 上的输出不会因任何原因而失效,因此它会完全执行。
这将是一个大问题。
在某些情况下,只要这两个事务都包含在输入流中并被执行,你就可以确定这两个事务的预期结果,但通常情况并非如此。
- 保证:T1 和 T2 将包含在它们各自的流中,并且(可能)都将执行。
- 不保证:成功执行交易和由此产生的期望状态。
这些「保证」可能足以满足原子套利之类的需求,其中搜索者已经拥有在每条链上执行这些交易所需的资产,但这显然不是共享状态机的同步可组合性。对于像跨链闪电贷这样的东西,它本身并不能提供足够的保证。
与其他跨链消息传递协议结合使用时,可能仍然有用。让我们看看与交叉 Rollup 消息传递协议一起使用时如何促进 NFT 跨链原子交换:
- T1 在 R 1 上将 ETH 从 U1 (用户 1)转移到 SC1 (智能合约 1)
- T2 在 R2 上将 NFT 从 U2 (用户 2)转移到 SC2 (智能合约 2)
- SC1 当且仅当它收到来自 SC2 的确认 NFT 已存入的消息时,才允许 U2 提取 ETH
- SC2 当且仅当它收到来自 SC1 的确认 ETH 已存入的消息时,才允许 U1 提取 NFT
- 两个智能合约都实现了一个时间锁,这样如果任何一方失败,双方都可以收回他们的资产
此处的 SS 允许两个用户在步骤 1 中以原子方式提交。然后,你使用某种形式的跨链消息传递来验证彼此的结果状态并解锁资产以执行交换。
如果没有 SS 以原子方式进行,两方可以就价格达成一致。但随后 U1 可以提交交易,然后 U2 可以等待并决定是否要中止交易。有了 SS,他们就会被锁定在交易中。
这几乎是 SS 跨链原子性用例的边缘。总结:
- 此处提供的保证的精确强度和实用性仍未得到证实
- 这对于跨链原子套利可能非常有用,同样可能对其他应用程序有用,例如跨链交换和 NFT 交易
- 提供额外的加密经济担保(例如,提供债券作为抵押品)来承保某些类型的跨链交易可能会有所帮助
- 但是,你永远无法无条件地保证交易结果(你可以通过在共享状态机上以原子方式一起执行交易来获得)
关于跨链原子性的其他有趣主题,我建议查看:
- Optimism's Superchain - 探索了 SS 在 OP 链中的使用。
- Anoma - Heterogeneous Paxos 和 Typhon 是非常不同的方法。
- 前面提到的 Kalman 的 Cross Rollup Forced Transactions。
共享排序器总结
总而言之,SS 的基本思想是:
显然这幅图并不科学,一切都是高度主观的,并且非常依赖于确切的构造。TLDR 如下:
- 中心化排序器 - 如果你完全控制系统,通常很容易实现你想要的任何功能。然而,预确认能力有次优的保证,强制退出可能是不可取的,活性是次优的等。
- 去中心化的 L2 排序器:具有分布式质押排序器的 Rollup 相对于只有单个排序器的 Rollup 更具稳健性。但是,不同设计方案在诸如延迟之类的事情上需要进行权衡(例如,如果许多 L2 节点现在需要在确认 Rollup 区块之前进行投票)。
- 在 L1 排序:最大程度保证去中心化、抗审查和活性等。但是,它缺乏快速预确认、数据吞吐量限制等功能。
- 共享排序器:拥有去中心化排序器的功能,不需要引导你自己的 排序器集。然而,与 L1 排序相比,这种方案在 L1 最终确定之前的过渡时期有较弱的保证。此外,共享层可以将许多 Rollup 的委员会、经济安全等聚合到一个地方(可能比单个 Rollup 都有自己的委员会更强大)。
一旦 L1 最终确定,所有 Rollup 都会达到 100% L1 安全性。在获得 L1 结算的完全安全和保障之前,大多数排序器设计只是试图提供好用功能,但削弱了在过渡期间的保证。
SUAVE
去中心化构建器与共享排序器
当我们谈论这些试图处理许多其他链的交易的共享层时,差异可能会让人非常困惑。特别是当 SUAVE 通常被称为「排序层」或者其他术语时,例如「用于 Rollup 的去中心化区块构建器」。需要明确的是,SUAVE 与上述 SS 设计有很大不同。
让我们观察一下 SUAVE 如何与以太坊交互。SUAVE 不会以任何方式被嵌入以太坊协议。用户只需将他们的交易发送到其加密内存池中。SUAVE 执行者的网络然后会为以太坊(或类似的任何其他链)输出一个区块(或部分区块)。这些区块将与传统的集中心化以太坊构建者的区块竞争。以太坊提议者在它们之间做出选择
同样,SUAVE 不会取代 Rollup 选择区块的机制。例如,Rollup 可以实现一个 PoS 共识集,其运作方式与以太坊 L1 的运作方式大致相同。然后,这些排序器 / 验证器可以选择 SUAVE 为它们生成的区块。
这与上面描述的 SS 非常不同,在 SS 中,Rollup 可以完全消除去中心化排序器的需要。他们通过选择 Metro 或 ESQ 等来外包排序功能,并且他们可以选择继承 SS 的分叉选择规则。Ethereum、Arbitrum、Optimism 等不会因为选择 SUAVE 交易排序而改变分叉选择规则。
SUAVE 不关心你的链的分叉选择规则是什么或者你的区块是如何选择的。它可以为任何链提供最有利可图的排序。请注意,与前面描述的 SS 节点不同,SUAVE 执行程序通常拥有完全状态(尽管它们也可能满足某些不需要状态的偏好)。他们需要模拟不同交易的结果以创建最佳排序。
为了解差异,让我们考虑一个用户想要运行原子跨链套利的示例。提交给 SUAVE 与提交给 SS,他们可以获得的保证有何区别:
SUAVE + 共享排序器
现在考虑一下,SUAVE 如何与 Rollup 排序交互?甚至可能与 SS 交互?Espresso 似乎确实相信 SUAVE 与 ESQ 兼容。ESQ 旨在与私有内存池服务兼容,例如可以充当构建器的 SUAVE。它看起来类似于我们在以太坊上使用的 PBS,现在:
- 共享提议者= 共享排序器
- 共享构建者= SUAVE
与 PBS 一样,构建者可以获得提议者(此处为排序器)的盲目提交,以提议给定的区块。提议者只知道从提议区块中获得的总效用(构建者的出价),而不知道内容。
综上所述,我们再回过头来看一个想做跨链套利的搜索者。SUAVE 本身可以构建并发送到两个不同的 Rollup:
- Block 1 (B1 ) 其中包括 Trade 1 (T1 ) - 在 Rollup 1 (R1 ) 上以低价购买 ETH
- Block 2 (B2 ) 包括交易 2 (T2 ) - 在 Rollup 2 (R2 ) 上以高价出售 ETH
但很有可能 B1 赢得了拍卖而 B2 输了(反之亦然)。如果将这两个 Rollup 选择到同一个 SS 中会发生什么。
SS 节点不知道交易实际上在做什么,所以它们需要有人(比如 SUAVE,或其他 MEV-aware 构建者)为它们构建一个完整的区块,如果它们想要高效的话。好吧,SUAVE 执行者可以将 B1 和 B2 都提交给 SS,条件是两个区块都被填充或杀死(原子地执行或删除两者)。
现在你可以在整个过程中获得非常好的经济保证:
- SUAVE = 共享构建者 = 可以向你保证,如果 B1 和 B2 都包含并以原子方式执行,会发生什么状态。
- SS =共享提议者 = 可以向你保证 B1 和 B2 都包含在内并以原子方式执行。
重新质押 Rollup
我最近在 Flashbots 论坛上发了一篇关于 SUAVE 的潜在经济安全模型的帖子。简而言之, 我讨论了为什么从长远来看,Rollup 对于 SUAVE 来说可能是比重新质押更好的选择。
Hasu 也对重新质押和 Rollup 之间的权衡做出了一些非常深思熟虑的回应。以下是他回应的概要:
- Rollup 通过 L1 保证安全性 / 抗审查 / 活性,但 SUAVE 并没有像大多数链那样从中受益,因为 SUAVE 链不适合普通用户。事实上,Flashbots 正在研究如何主动限制用户将资金桥接到 SUAVE 的需求。理想情况下,链只需要搜索者 / 构建者在那里保留足够的运营资金。这可能比为用户存储大量资金而构建的传统 Rollup 的要求要低得多。此外,与普通用户相比,在这条链的上下文中,通过 L1 强制状态转换对于搜索者 / 构建者来说可能没有那么有价值。
- DA 很昂贵,至少今天是这样。我们将看到 EIP-4844 的影响,以及随后对 DA 需求可能的增长。我会注意到,对于代币持有者来说,重新质押可能更「昂贵」(即,如果费用收入较低,并且需要对 ETH 重新质押者进行通胀激励以获得足够的经济安全)。一种对用户来说更贵,而另一种对代币持有者来说更贵。
- SUAVE 需要将状态转换从其他域报告回主链(因此可以解锁对执行者的有条件付款)。关于 Rollup 从以太坊 L1 和其他 Rollup 读取状态的能力,它们具有很好的信任最小化属性。
这里有一个新想法:两者都做怎么样?这就是重新质押 Rollup。
这样并没有解决 Hasu 提到的所有问题,但它仍然是一个非常有趣的新选择,尤其是从长远来看。
Rollup 可以使用这些 EigenLayer 重新质押者来实现本地共识,而不仅是提供安全,但是链随后汇总到以太坊(向以太坊发布数据和证明)。
如前所述,Rollup 可以决定实施他们自己的本地共识,以便在真正的 L1 最终确定之前为短期预确认和重组阻力提供更有力的保证。好吧,为什么我们不让 Rollup 共识集成为一组以太坊重新质押者呢?现在你有两个选择: