无信任的跨 Rollup 互操作性:现状、构建与挑战

进阶9/24/2024, 6:37:40 PM
在本文中,我们通过定义和讨论碎片化 Rollup 生态系统之间的六个互操作性解决方案层级,对无信任的互操作性现状进行了调查。

介绍

以太坊上出现了卷土重来的 Cambrian 爆发。根据 L2Beat 的数据,目前有 91 个活跃的 L2 和 L3 以及 82 个即将上线的项目。因此,在流动性、用户体验和开发工具方面也出现了显著的碎片化。当前的互操作性解决方案仍有很大改进空间,因为它们依赖于第三方桥接、外部包装资产和意图框架的组合,而每种方案都有其自身的问题。

流动性桥通常是最大的加密黑客攻击目标(例如,3.21 亿美元的 Wormhole 桥黑客事件)。外部包装资产并不理想,数据显示,人们在可能的情况下更倾向于持有原生形式的资产(例如,根据 L2Beat,具有规范桥接的资产价值 220 亿美元,而外部包装资产仅有 30 亿美元)。

意图框架依赖于需要非忽略信任的第三方,并附带额外费用以促进跨 Rollup 活动(例如,Degen 链用户因官方桥接非规范而损失超过 80% 的代币)。集中化的意图框架意味着竞争降低,这可能导致定价和性能不佳。

在本文中,我们通过定义和讨论六个碎片化 Rollup 生态系统之间的互操作性解决方案层级,对无信任的互操作性现状进行了调查。我们从从源 Rollup 异步提现到 L1 并手动桥接到目标 Rollup 的默认案例开始,最后结束于假设的跨 Rollup 组合架构,该架构可以在单一交易中实现。我们将探讨每个互操作性层级如何影响用户体验、开发者体验、MEV 潜力以及 Rollup 本身(特别是与基础设施变化相关的方面)。

本文主要关注以太坊及其 L2 的范围,专注于无信任的互操作性。在这种情况下,“无信任互操作性”指的是在协议内的通道,这些通道不需要第三方来促进转移,而只需依赖于大多数 Rollup 已经需要的必要基础设施。

预赛

定义

从根本上讲,无信任的互操作性需要某些共享资源,任何两个希望互操作的协议都必须能够访问这些资源。在以太坊 L1 的情况下,所有智能合约都存在于同一环境中,分享以太坊的完整状态,因此它们将始终具有最高水平的互操作性。然而,L2 仅通过单独的桥接合约共享结算层,因此互操作性受到极大限制。

推动我们在无信任互操作性梯子上进展的关键共享基础设施组件包括共享排序器、超级构建者和共享结算。这些共享层所提供的保障和新功能是相关的,但本质上是正交的。

共享排序器/超级构建者:主要提升速度和用户体验。

共享结算:无需外部包装的资产交换以及协议内消息传递。

首先,我们将定义引言中提到的六个无信任互操作性的层级:

L1 异步互操作性:

→ 通过 L1 进行手动资产转移,Rollup 在该层进行结算。

原子包含:

→ 保证跨 Rollup 包中的所有交易要么都将包含在每个参与包的 Rollup 的下一个区块中,要么都不会包含。

共享结算:

→ 多个 Rollup 通过相同的桥接合约连接到 L1。

原子执行:

→ 保证跨 Rollup 包中的所有交易要么都将包含并成功执行在每个参与包的 Rollup 的下一个区块中,要么都不会执行。成功执行指的是每笔交易在不回滚的情况下被执行,并且在包中每个 Rollup 的更新状态中反映出来。

区块级组合性:

→ 对跨 Rollup 包的下一个区块保证,可以包含依赖交易(Rollup B 上的 tx B 依赖于 Rollup A 上的 tx A 的结果)。

交易级组合性:

→ 智能合约级别的互操作性,只需一笔交易即可在多个 Rollup 上同时引起状态变化(无需捆绑)。在任何 Rollup 上使用任何协议在逻辑上等同于在单一链上使用不同的智能合约。重要的是,这意味着在任何调用之前的状态变化可以在返回时回滚。

为了更深入地理解每个层级,我们将通过以下关键用例演示每个层级的强大功能以及对用户、开发者、Rollup 和 MEV 搜索者的影响。

说明性示例:

  1. 相同代币转移
  2. → 自我发送:在两个 Rollup 之间交换 Eth 为 Eth 或 ERC-20 为 ERC-20。
  3. 代币购买
  4. → 跨 Rollup 限价单:使用来自 Rollup A 的 Eth/ERC-20,在 Rollup B 的 DEX 上购买不同的 ERC-20,并(可选地)发送回 Rollup A。

影响:

以下问题也将得到解答,以进一步了解在任何 Rollup 生态系统中对关键利益相关者的影响:

  1. 用户体验
  2. 实现这一层级的互操作性如何改变用户体验?
  3. 开发者体验
  4. 实现这一层级的互操作性如何改变开发者体验?
  5. MEV 潜力
  6. 如果我们实现这一层级的互操作性,是否会出现新的 MEV 机会?
  7. Rollup 影响
  8. Rollup 是否需要选择加入任何新的基础设施以实现这一点?Rollup 的费用结构会有哪些变化?Rollup 参与这一基础设施可能带来的潜在好处是什么?

高层概述

关键利益相关者变更概述

通向无信任互操作性的六级进展

1. L1 异步互操作性

所需基础设施:

不适用

如定义所示,这指的是当前无信任互操作性的默认模式。所有 Rollup 都被定义为这样的模式,因为它们建立在 L1 作为结算层上,并且只能通过桥接合约访问该 L1,以便定期发布状态更新以确保网络安全。

在这种情况下,执行任何无信任跨 Rollup 活动的唯一规范方式是通过规范桥接从源 Rollup 提取资产,并在 L1 上可用后手动将其存入目标 Rollup。

对于乐观 Rollup,此提现延迟约为 7 天,以考虑故障证明窗口。在 ZK Rollup 中,提现延迟不太确定,但可能在 15 分钟到一天之间,例如 ZkSync 的情况。

此外,使用智能合约进行点对点原子交换是可能的,但这只是一个较小的用例,并且无法有效扩展。

值得注意的是,目前存在的第三方解决方案:

流动性桥

意图框架

我们的两个示例都需要第三方解决方案来促进。

自我发送:

规范方式:

→ 从 Rollup A 提取资产

→ 手动存入 Rollup B

第三方:

→ 流动性桥 / 求解网络

跨 Rollup 限价单:

规范方式:

→ 从 Rollup A 提取资产

→ 手动存入 Rollup B

→ 执行限价单

→ 要发送回去,需要外部包装目标 ERC-20

第三方

→ 跨 Rollup 限价单的新兴解决方案空间

→ 存在关于使用意图来促进这一过程的开放设计

由于这是默认情况,因此不必讨论用户体验、开发者体验、MEV 和 Rollup 的变化。

2. 原子包含

所需基础设施

共享排序器*

原子包含仅保证跨 Rollup 包将包含在下一个区块中。这需要一个共享排序器,但如果两个给定 Rollup 的排序器没有达到最大吞吐量,理论上也可以手动实现(可以简单地将两个交易单独提交给每个 Rollup)。这就是我们在所需基础设施上添加星号的原因。

然而,我们并不假设共享排序器正在运行每个连接 Rollup 的完整节点,因此无法保证一组交易的成功执行。在这种情况下,共享排序器只能保证交易格式正确,并且将被包含在下一个区块中,但不一定保证它们会成功执行。

由于没有执行保证,因此在没有遭受其中一笔交易回滚风险的情况下,无法以任何有意义的方式程序化利用原子包含。因此,我们实际上处于与 L1 异步互操作性完全相同的情况。

考虑仅使用原子包含保证启动简单的跨 Rollup 交换:

跨 Rollup 交换包

→ 交易 1:在源 Rollup 上锁定/销毁代币

→ 交易 2:在目标 Rollup 上铸造代币到用户地址

我们可能在这两个交易确实包含在每个 Rollup 的下一个区块中时获得原子包含保证,但如果第一笔交易回滚而第二笔不回滚,用户将在目标链上错误地分配资金,而在源链上未锁定或销毁这些资金,这将导致双重支出问题。

任何互操作性解决方案,无论是流动性桥、意图框架还是 xERC-20 交换,都将面临这种风险,并且无法减轻这种风险。因此,目前的解决方案要求启动交易必须在源链上成功执行并包含在区块中,然后才能使用中继器传递发出的消息并在目标链上执行第二笔交易。

重要要点:原子包含并未实质性影响互操作性的潜力。

3. 共享结算

所需基础设施:

证明聚合层 // 共享桥接合约

在这一阶段,事情开始变得更加有趣。由于共享桥接合约,所有从 L1 存入 Rollup 生态系统的流动性可以在所有连接的 Rollup 之间自由移动。在此之前,我们无法在 Rollup 之间进行交换,而不通过规范渠道、外部包装资产或使用第三方解决方案。

为什么要构建共享桥接合约?为了理解为什么共享桥接合约使我们能够无信任地在 Rollup 之间移动资产,首先要考虑如果能够在 Rollup A 中持有以太币,烧毁它,然后在 Rollup B 上本地铸造,而不通过 L1 的共享桥接合约,会发生什么。

我们看到,每个 Rollup 将与其主网桥接合约不同步。Rollup B 的桥接合约仍然有 50 个以太币,因此用户无法将他们的 1 个以太币提取到 L1。

为了解决这个问题,构建了外部资产包装协议,它发行在 Rollup 之间的外部包装代币,象征着网络中某处的本地版本。

有了共享结算层,情况就不同了。因为每个连接的 Rollup 的所有流动性都锁定在同一个桥接合约中,所以可以在 Rollup 之间自由移动,因为桥接合约中的总价值保持不变,且始终可以提取。

确实需要在 L1 合约级别更新流动性所在的位置,以允许用户从任何地方提取,但这很简单,因为所有连接的 Rollup 都可以读/写到共享合约。

有了共享结算层,简单的自我发送案例的流程可能如下所示:

自我发送:

用户创建初始交易:

→ Tx 1:在 Rollup A 上提取以太币(附带在 Rollup B 上铸造的消息)

→ 交易被批处理并提交到 L1 合约

→ 它被聚合到交易根中,分组所有共享结算 Rollup

Rollup B 导入这个交易根

中继者提交交易以铸造并附上默克尔证明到 Rollup B

Rollup B 使用默克尔证明和交易根验证烧毁交易

用户在 Rollup B 上获得铸造的以太币

Rollup B 将证明提交到 L1

我们可以将此流程扩展到共享结算生态系统中所有具有合约的 ERC-20 代币。

可以将共享桥接合约视为所有连接 Rollup 之间的协议内消息层,因此理论上此流程实际上可以扩展到任何任意消息标准。

这使我们更接近可组合性,但由于必须聚合证明和在状态变化反映在 L1 之后才中继消息,延迟较高(尽管显著低于 L1 异步案例)。此外,任何复杂的跨 Rollup 活动,如在 Rollup B 上使用 DEX 从 Rollup A 开始进行跨 Rollup 限价单,仍然对用户来说是一个繁琐的过程,因为他们仍需进行自我发送并在目标 Rollup 上手动交换资产。在这种情况下,无法创建原子跨 Rollup 批量交易。

共享结算的另一个重要好处是,对于在多个环境中完成订单的流动性提供者或求解者来说,摩擦更小。因为他们在所有连接的 Rollup 上的流动性都反映在同一个桥接合约中,他们不必等待完整的提取窗口来管理他们的跨 Rollup 流动性。

对利益相关者的影响:

用户:

现在可以以本地形式转移资产,而无需 L1 提取时间。

开发者:

变化仅限于代币发行者,他们现在可以使用协议内消息在所有连接的 Rollup 上发行本地版本的 ERC-20。

MEV 搜索者:

由于这发生在每个 Rollup 的多个区块上,因此没有新的 MEV 潜力。

Rollups:

Rollups 将必须选择使用共享桥接合约,并可能添加预编译以处理跨 Rollup 消息。

重要结论:共享结算允许在所有共享桥接合约和证明聚合层的 Rollup 之间进行非外部包装的资产转移和任意消息传递,但仍会存在不可忽视的延迟(尽管比 L1 异步延迟短得多),并且无法创建跨 Rollup 原子批量交易。

4. 原子执行

所需基础设施:

共享排序器 // 超构建者

原子执行允许我们保证跨 Rollup 捆绑交易的成功执行,但正如我们将看到的,缺少依赖交易的跨 Rollup 捆绑的用例数量小于人们最初可能预期的。

如果捆绑中的任何单个交易回滚,则所有其他交易变为无效并且也必须回滚,因为在跨 Rollup 进行代币的燃烧和铸造时就是这种情况。 在目标 Rollup 上铸造代币依赖于在源 Rollup 上已被燃烧或锁定,因此我们可以说,燃烧和铸造交易的捆绑是依赖交易的捆绑。

没有中间方(例如超构建者)来创建目标交易,我们无法创建此捆绑。

考虑一下,在没有用户之外的另一方的情况下,跨 Rollup 交换捆绑需要满足的条件。 捆绑必须创建以在源 Rollup 上锁定/燃烧资产,并在目标 Rollup 上铸造资产,但我们会遇到问题:

源 Rollup 上的合约只能在锁定/燃烧原始源资产时发出消息,不能调用并在目标 Rollup 上创建交易。

→ 这就是为什么消息协议和中继网络存在。

→ 消息可以用来构建在目标上的调用,但实际上无法创建交易。

在目标 Rollup 上铸造的第二个交易创建:

→ 用户本人无法创建此交易,因为他们没有在 Rollup B 上的铸造权。

→ 即,目标链需要证明已在源链上燃烧/锁定代币,但该证明在初始交易执行后才能获得,这将破坏我们的原子性要求。

→ 任何其他可以创建第二个交易并拥有铸造权的方理论上可以在目标链的任何时候创建“铸造”交易,而无需首先在源链上创建“燃烧”或锁定,这是一种巨大的漏洞。

我们可以看到,即使我们可以保证跨 Rollup 捆绑的执行,但我们在如何构建它们以转移有价值的资产时仍然会遇到困难。

然而,对于没有依赖的跨 Rollup 捆绑,仍然有一些原子执行的用例。其中之一是跨 Rollup 套利:

跨 Rollup DEX 套利与原子执行

由于这些交易之间没有严格的依赖关系,任何人都可以创建这个原子捆绑并提交给共享排序器,以保证原子执行。

然而,为了首先拥有原子执行的保证,Rollup 必须选择加入一个共享排序器和超构建者,这将运行所有连接的 Rollup 的完整节点,因此从原子执行到区块级可组合性的步骤相当小,所有共享排序解决方案都会这样做。 唯一需要更改的是区块构建者或其他第三方必须能够代表用户创建交易,以完成依赖的跨 Rollup 捆绑。

不太可能建立仅允许原子执行而不进一步实现可组合性的基础设施。 鉴于基础设施已经具备原子执行,跳到完全的区块级可组合性的相对收益远远超过实现它的难度。

对利益相关者的影响:

用户:

可能没有变化,尽管第三方促进的解决方案如意图可能是原子的,但具体方式尚不清楚。

开发者:

可能没有变化。

MEV 搜索者:由于原子执行,跨 Rollup 套利更加安全。

Rollups:

Rollups 必须选择使用共享排序器/超构建者提交希望互操作的每个 Rollup 的交易,这可能会改变 Rollup 的收入结构。尚不清楚会如何改变。

-排序市场可能通过允许复杂的构建者购买 ToB 空间来增加 Rollup 的收入。

重要结论:虽然跨 Rollup 捆绑交易保证原子执行,但如果没有超构建者创建捆绑的一部分,尚不清楚这些捆绑将如何构建,因此单靠原子执行不太可能影响互操作性。共享排序器/超构建者默认应构建区块级可组合性。

5. 区块级组合性

所需基础设施:

共享序列器 // 超构建者 // 证明聚合层 // 共享桥合约

(* = 可选)

在关于共享序列器和共享结算层的讨论中,常用的术语是“同步组合性”。

我们对这个术语进行了略微修改,以使其更具描述性。将术语更新为区块级组合性意味着可以在跨链交易的捆绑中,在两个 rollup 之间进行组合,这些交易将被成功包含并执行在下一个区块中。同步组合性可能会与交易级组合性混淆,后者将在下一节中探讨。重要的是,这需要一个中介方(共享序列基础设施),它可以是依赖交易捆绑的指挥者和创建者。

在这个层面上,我们开始看到 rollup 之间真正的组合性,而不仅仅是通过发送到自己来参与另一个 rollup 上的 dapp。

通过添加一个可以创建交易的共享序列器,我们现在能够创建跨 rollup 捆绑,开发者可以在程序上利用这些捆绑。

需要考虑两种情况:

区块级组合性

区块级组合性 + 共享结算层

在这两种情况下,我们可以创建更复杂活动的跨 rollup 捆绑,但在第二种情况下,具有共享结算层时,我们可以使用本地资产,这可能对跨 rollup DEX 活动产生更好的价格影响。

通过区块级组合性,我们既拥有原子执行的优势,又有能力创建依赖交易捆绑。让我们来看看两个说明性示例。

通过 xERC-20 转移相同代币(没有共享结算):

用户持有 ERC-20

用户通过 dapp 创建交易:

→ 将 ERC-20 存入 xERC-20 锁箱以接收 xERC-20 包装版本

→ 销毁 xERC-20

→ 发送消息,向共享序列基础设施表明已启动跨 rollup 转移,并附上相关数据以促进交换

超构建者获取交易并创建跨 rollup 捆绑

→ 交易 1:上述包装和销毁交易

→ 交易 2:在 rollup B 上铸造 xERC-20

超构建者将此跨 rollup 提交给共享序列器

→ 因为超构建者运行着两个连接 rollup 的全节点,他们模拟交易以保证捆绑的成功执行。如果任何交易回滚,整个捆绑将回滚。

共享序列器将包含这两个交易的区块提交给 DA 层,以及执行状态变更的节点

xERC-20 在 Rollup B 上铸造给用户

通过共享结算层,流程甚至进一步简化,因为不需要首先将 ERC-20 包装为 xERC-20 进行交换。

现在让我们检查跨 rollup 限价订单,以用来自 Rollup A 的初始(不同)ERC-20 购买 Rollup B 上的 ERC-20,并将结果 ERC-20 发送回 Rollup A。在这种情况下,我们不假设有共享结算层,尽管在存在共享结算层的情况下有类似的流程。唯一的区别是不需要额外包装资产。

在这种情况下所需的交易有:

在 A 上包装并销毁 ERC-20

在 B 上铸造 xERC-20

在 B 上用初始 xERC-20 交换目标 ERC-20

在 B 上包装并销毁目标 ERC-20

在 A 上铸造 xERC-20

以下是这一流程可能的工作方式:

跨 Rollup 限价订单在区块级组合环境

流程:

用户发起第一个交易:

→ 包装并销毁 xERC-20,发出消息以指定交换参数(目标链、DEX 地址、要交换的 ERC-20、限价订单价格、是否发送回去的布尔值)

超构建者看到交易并创建捆绑:

→ 交易 1:用户创建上述交易

→ 交易 2:在目标链上铸造 xERC-20(超构建者必须拥有铸造权限)

→ 交易 3:使用交易 1 中的数据进行限价订单

→ 交易 4:在 B 上包装并销毁 ERC-20,假设限价订单完全履行,并发出消息以在源链上铸造

→ 交易 5:从源链的交换输出中铸造目标 xERC-20

因为超构建者创建区块并排序交易,所以它可以模拟每个交易,如果任何交易回滚,则省略捆绑。例如,如果发现用户不会在限价订单上获得完全履行,捆绑将在区块执行前被省略。

在没有共享结算层的共享序列基础设施的情况下,必须使用外部包装的 Eth 和 xERC-20,这可能导致 DEX 上由于包装资产流动性池较薄而产生更糟糕的市场条件。在这种情况下,用户可能不得不使用更宽松的限价,并容忍更多滑点,从而可能获得次优价格。一个例外是,如果涉及到 USDC。在没有共享结算的情况下,可能与 Circle 合作,获得跨 rollup 上 USDC 合约的独占权,以促进本地 USDC 的转移和交换。

有了共享结算层,这种外部包装就不是必要的,并且可能由于本地资产交换的流动性池更深而提供更好的价格,但流程本质上是相同的。

乐观信任序列器

Rollups需要乐观地信任共享序列器/超级构建者来创建有效的跨滚动束。这主要是因为这个跨滚动束包含的依赖交易,单个滚动无法在块添加到每个滚动的链并聚合到L1的结算层之后进行验证。一个例子是从源到目标的Eth的初始燃烧和铸造。确保Eth在源链上被燃烧后再在目标链上铸造是至关重要的,否则可能会出现双重支出。

然而,为了在一个块中执行这个完整的束,所有交易必须出现在该块中,即使该交易代表的状态在块本身之前是无效的(例如,如果用户在块之前没有任何Eth,那么在目标链上进行交换时就会出现Eth)。因此,我们必须信任序列器,它确实在跨滚动束中包含了有效的依赖关系。事后可以提交证明来证明每笔交易的有效性。

然而,当使用包装资产时,这一点略显不那么重要,因为它们对存储在L1中的本地流动性没有影响,但仍然必须有备用机制来应对恶意序列器或代码中的漏洞,允许执行具有已回退的依赖交易的交易束的风险。

对利益相关者的影响:

  1. 用户
  2. 允许在一个区块中进行跨 rollup 限制订单的大幅提升用户体验
  3. 开发者
  4. 需要对跨 rollup 活动有所意识,可能会利用自定义预编译。开发者需要考虑捆绑,而不仅仅是交易,但 superbuilder 和自定义 rollup 基础设施可能会抽象掉大部分开发复杂性。
  5. MEV 搜索者
  6. MEV 搜索者在跨 rollup 捆绑上有基本等同于在 L1 策略上使用的机会,但这取决于 PBS(提议者-构建者分离)的实施方式。
  7. → 跨 rollup 捆绑本质上被视为单个交易,因此可以通过前置交易或夹击这些捆绑来发现 MEV,只要它们不会使价格超出容忍滑点范围(否则整个捆绑将回滚,MEV 尝试将失败)
  8. Rollups
  9. 需要选择加入共享排序基础设施(包括 superbuilders),并在共享结算层的情况下允许共享排序者访问 Eth 的燃烧/铸造。
  10. → 可以通过向构建者出售区块空间来内化 MEV

6. 交易级组合性

所需基础设施:

交易级组合性 // 共享结算 // 超构建者

交易级组合性指的是在一个EVM链上,智能合约共享的相同功能级别。在这种情况下,单个交易可以同时更新多个rollup的状态,并确保在调用之前的任何状态更改可以被回滚,如果调用未成功返回。实际上,在块级可组合环境中的原子交易束可以在单个跨rollup和跨虚拟机交易中完成。这需要所有连接的rollup进行虚拟机级别的更改,此外还需要一个共享结算层和超构建者。

我们在这里高层描述一种可能的机制(此构造来自Espresso团队,基于我们的知识)。首先,用户向所有因交易而改变状态的rollup提交一个跨rollup交易,或向可以跨所有相关rollup构建区块的超构建者。超构建者模拟交易并形成输入输出对的列表,为每个参与的rollup指定交易中必要和预期的跨rollup消息(注意,超构建者只有在拥有所有参与rollup的安全排序权利时才能做到这一点)。然后,超构建者将模拟的区块发送给每个rollup的提议者,并附上每个跨rollup交易的预期输入输出对的列表。在执行过程中,每个rollup正常执行其状态转换函数,假设来自跨rollup交易列表的输入是正确的。在结算过程中,输入输出列表可以交叉比较,并在共享结算层的证明聚合阶段中证明安全。具体而言,如果跨rollup交易的任何预期输入与另一个rollup指定的输出不匹配,则结算过程将拒绝整个跨rollup交易。

尽管交易级组合性在闪电贷之外解锁的新功能有限,但创建跨rollup应用的开发者体验可以大大改善。能够创建与所有连接链交互的去中心化应用,而不必考虑跨rollup交易束,将使在多rollup环境中创新变得更加容易。此外,可能会因此出现新的用例和行为。

对于交易级组合性,仍然有许多开放的设计问题。首先,开发者如何选择是否允许跨rollup调用其智能合约需要仔细考虑。允许任意组合而不受限制意味着我们退回到一个单一的rollup。我们认为这里的答案是开发者明确指出在其合约中需要跨rollup组合的地方,例如通过一个Solidity修饰符composable,将合约的某些入口点标记为可跨rollup调用。

对利益相关者的影响

  1. 用户:
  2. 与块级组合性具有相同的影响,同时具备额外的高级功能,如闪电贷
  3. → 用户体验在选择的去中心化应用中与单链使用几乎相同
  4. 开发者:
  5. 开发者体验大幅改善,因为去中心化应用开发者可以原生调用跨rollup合约,并使用这些调用的输出,就像单一rollup调用一样
  6. → 超构建者/排序基础设施仍需将交易放入受跨rollup调用影响的rollup的区块中,但不需要像块级组合性那样构建相同的交易束。
  7. MEV搜索者:
  8. 高MEV潜力,因为跨rollup交易束现在基本上等同于单个链上的交易
  9. Rollups:
  10. 需要进行虚拟机级别的更改,并选择共享排序器和共享结算层
  11. → 在能够通过证明验证状态之前,需要信任其他rollup的输入和输出,涉及额外的信任假设,但惩罚机制可以减少信任负担

总结与生态系统图

在详细探讨了每个定义的互操作性级别的技术细节后,我们可以总结如下:

共享结算允许跨滚动交换,而无需外部包装资产,并在所有连接的滚动之间创建内部协议消息通道。

共享排序/超级构建者允许对跨滚动捆绑的下一个区块执行保证。

区块级可组合性允许创建复杂、快速、依赖的跨滚动捆绑,实现近乎智能合约到智能合约级别的可组合生态系统。

随着共享结算的加入,这些跨滚动捆绑可以在不使用外部包装资产的情况下创建。

交易级可组合性是可能的,虽然新开放的用例可能更适合更复杂的用户,但它有潜力大幅提升跨滚动开发体验。

目前,许多项目正在出现,以创建这些本地互操作的生态系统。以下是该领域的高层次概述:

生态系统地图

生态系统地图

总结

关于本文中提出的框架仍然存在一些技术细节上的开放问题。例如,在区块级可组合生态系统中为跨滚动限价单构建捆绑可能需要更详细的设计,以处理部分履行和市场订单的滑点容忍度。在这里,我们提供了一种潜在解决方案,如果订单没有完全成交,可以撤销跨滚动限价单捆绑,但设计空间仍然开放。

此外,值得将此与当前在该领域逐渐增长的关于应用链的思考联系起来。应用链是长尾的二层(L2),它们可以是通用的或有权限的,目标是在一个L2上将特定相关协议孤立起来。当我们达到区块级可组合性时,应用链环境可能会因所有连接网络之间具有本地可组合性而获得显著的吸引力。

目前,为这些应用链注入流动性仍然困难,但一旦更大链条作为可互操作环境的接入点连接,可能会看到围绕共享基础设施的封闭生态系统。

另一个重要的开放问题是超级构建者的设计空间将如何定型。在这一方面的发展仍处于初期阶段,目前尚不清楚创建一个能够构建跨滚动捆绑的复杂构建者网络的最有效、最有效的方法是什么。跨滚动捆绑应在区块中最佳包含的位置以及对滚动收益的影响仍然是一个开放问题,许多团队正在探索不同的策略。

最终,未来可能涉及在协议内和协议外的桥接解决方案的组合,它们将协同工作,为每个人提供更好的互操作性流程。我们相信,本文中定义的进展可以为开发者和建设者提供指南,帮助他们使跨滚动互操作性对最终用户更加无缝。

同时,也很可能会出现尚未被发现的跨滚动交互的新范式。如果您是一个在扩展这里讨论的主题或未涵盖主题的构建者,请与我们联系(私信开放)。技术终于成熟到足够的程度,可以对解决流动性/生态系统碎片化施加实际压力,我们始终希望与那些敢于冒险构建创造性解决方案的创始人建立联系。

致谢

这篇文章源于1kx在EthCC举办的一个非常有洞察力的滚动互操作性圆桌讨论。特别感谢Noah PravecekEllie DavidsonTerry对早期版本的阅读和反馈,以及MartimteamBo Du在这一主题上进一步的讨论。

声明:

  1. 本文转载自[mirror],转发原标题《Rollups之间的Trustless Interoperability: Landscape, Constructions, and Challenges》,版权归原作者所有[小马歇尔·维莱特尔]。若对本次转载有异议,请联系Gate Learn团队,他们会及时处理。

  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。

  3. Gate Learn 团队将文章翻译成其他语言。除非另有说明,否则禁止复制、分发或抄袭翻译文章。

无信任的跨 Rollup 互操作性:现状、构建与挑战

进阶9/24/2024, 6:37:40 PM
在本文中,我们通过定义和讨论碎片化 Rollup 生态系统之间的六个互操作性解决方案层级,对无信任的互操作性现状进行了调查。

介绍

以太坊上出现了卷土重来的 Cambrian 爆发。根据 L2Beat 的数据,目前有 91 个活跃的 L2 和 L3 以及 82 个即将上线的项目。因此,在流动性、用户体验和开发工具方面也出现了显著的碎片化。当前的互操作性解决方案仍有很大改进空间,因为它们依赖于第三方桥接、外部包装资产和意图框架的组合,而每种方案都有其自身的问题。

流动性桥通常是最大的加密黑客攻击目标(例如,3.21 亿美元的 Wormhole 桥黑客事件)。外部包装资产并不理想,数据显示,人们在可能的情况下更倾向于持有原生形式的资产(例如,根据 L2Beat,具有规范桥接的资产价值 220 亿美元,而外部包装资产仅有 30 亿美元)。

意图框架依赖于需要非忽略信任的第三方,并附带额外费用以促进跨 Rollup 活动(例如,Degen 链用户因官方桥接非规范而损失超过 80% 的代币)。集中化的意图框架意味着竞争降低,这可能导致定价和性能不佳。

在本文中,我们通过定义和讨论六个碎片化 Rollup 生态系统之间的互操作性解决方案层级,对无信任的互操作性现状进行了调查。我们从从源 Rollup 异步提现到 L1 并手动桥接到目标 Rollup 的默认案例开始,最后结束于假设的跨 Rollup 组合架构,该架构可以在单一交易中实现。我们将探讨每个互操作性层级如何影响用户体验、开发者体验、MEV 潜力以及 Rollup 本身(特别是与基础设施变化相关的方面)。

本文主要关注以太坊及其 L2 的范围,专注于无信任的互操作性。在这种情况下,“无信任互操作性”指的是在协议内的通道,这些通道不需要第三方来促进转移,而只需依赖于大多数 Rollup 已经需要的必要基础设施。

预赛

定义

从根本上讲,无信任的互操作性需要某些共享资源,任何两个希望互操作的协议都必须能够访问这些资源。在以太坊 L1 的情况下,所有智能合约都存在于同一环境中,分享以太坊的完整状态,因此它们将始终具有最高水平的互操作性。然而,L2 仅通过单独的桥接合约共享结算层,因此互操作性受到极大限制。

推动我们在无信任互操作性梯子上进展的关键共享基础设施组件包括共享排序器、超级构建者和共享结算。这些共享层所提供的保障和新功能是相关的,但本质上是正交的。

共享排序器/超级构建者:主要提升速度和用户体验。

共享结算:无需外部包装的资产交换以及协议内消息传递。

首先,我们将定义引言中提到的六个无信任互操作性的层级:

L1 异步互操作性:

→ 通过 L1 进行手动资产转移,Rollup 在该层进行结算。

原子包含:

→ 保证跨 Rollup 包中的所有交易要么都将包含在每个参与包的 Rollup 的下一个区块中,要么都不会包含。

共享结算:

→ 多个 Rollup 通过相同的桥接合约连接到 L1。

原子执行:

→ 保证跨 Rollup 包中的所有交易要么都将包含并成功执行在每个参与包的 Rollup 的下一个区块中,要么都不会执行。成功执行指的是每笔交易在不回滚的情况下被执行,并且在包中每个 Rollup 的更新状态中反映出来。

区块级组合性:

→ 对跨 Rollup 包的下一个区块保证,可以包含依赖交易(Rollup B 上的 tx B 依赖于 Rollup A 上的 tx A 的结果)。

交易级组合性:

→ 智能合约级别的互操作性,只需一笔交易即可在多个 Rollup 上同时引起状态变化(无需捆绑)。在任何 Rollup 上使用任何协议在逻辑上等同于在单一链上使用不同的智能合约。重要的是,这意味着在任何调用之前的状态变化可以在返回时回滚。

为了更深入地理解每个层级,我们将通过以下关键用例演示每个层级的强大功能以及对用户、开发者、Rollup 和 MEV 搜索者的影响。

说明性示例:

  1. 相同代币转移
  2. → 自我发送:在两个 Rollup 之间交换 Eth 为 Eth 或 ERC-20 为 ERC-20。
  3. 代币购买
  4. → 跨 Rollup 限价单:使用来自 Rollup A 的 Eth/ERC-20,在 Rollup B 的 DEX 上购买不同的 ERC-20,并(可选地)发送回 Rollup A。

影响:

以下问题也将得到解答,以进一步了解在任何 Rollup 生态系统中对关键利益相关者的影响:

  1. 用户体验
  2. 实现这一层级的互操作性如何改变用户体验?
  3. 开发者体验
  4. 实现这一层级的互操作性如何改变开发者体验?
  5. MEV 潜力
  6. 如果我们实现这一层级的互操作性,是否会出现新的 MEV 机会?
  7. Rollup 影响
  8. Rollup 是否需要选择加入任何新的基础设施以实现这一点?Rollup 的费用结构会有哪些变化?Rollup 参与这一基础设施可能带来的潜在好处是什么?

高层概述

关键利益相关者变更概述

通向无信任互操作性的六级进展

1. L1 异步互操作性

所需基础设施:

不适用

如定义所示,这指的是当前无信任互操作性的默认模式。所有 Rollup 都被定义为这样的模式,因为它们建立在 L1 作为结算层上,并且只能通过桥接合约访问该 L1,以便定期发布状态更新以确保网络安全。

在这种情况下,执行任何无信任跨 Rollup 活动的唯一规范方式是通过规范桥接从源 Rollup 提取资产,并在 L1 上可用后手动将其存入目标 Rollup。

对于乐观 Rollup,此提现延迟约为 7 天,以考虑故障证明窗口。在 ZK Rollup 中,提现延迟不太确定,但可能在 15 分钟到一天之间,例如 ZkSync 的情况。

此外,使用智能合约进行点对点原子交换是可能的,但这只是一个较小的用例,并且无法有效扩展。

值得注意的是,目前存在的第三方解决方案:

流动性桥

意图框架

我们的两个示例都需要第三方解决方案来促进。

自我发送:

规范方式:

→ 从 Rollup A 提取资产

→ 手动存入 Rollup B

第三方:

→ 流动性桥 / 求解网络

跨 Rollup 限价单:

规范方式:

→ 从 Rollup A 提取资产

→ 手动存入 Rollup B

→ 执行限价单

→ 要发送回去,需要外部包装目标 ERC-20

第三方

→ 跨 Rollup 限价单的新兴解决方案空间

→ 存在关于使用意图来促进这一过程的开放设计

由于这是默认情况,因此不必讨论用户体验、开发者体验、MEV 和 Rollup 的变化。

2. 原子包含

所需基础设施

共享排序器*

原子包含仅保证跨 Rollup 包将包含在下一个区块中。这需要一个共享排序器,但如果两个给定 Rollup 的排序器没有达到最大吞吐量,理论上也可以手动实现(可以简单地将两个交易单独提交给每个 Rollup)。这就是我们在所需基础设施上添加星号的原因。

然而,我们并不假设共享排序器正在运行每个连接 Rollup 的完整节点,因此无法保证一组交易的成功执行。在这种情况下,共享排序器只能保证交易格式正确,并且将被包含在下一个区块中,但不一定保证它们会成功执行。

由于没有执行保证,因此在没有遭受其中一笔交易回滚风险的情况下,无法以任何有意义的方式程序化利用原子包含。因此,我们实际上处于与 L1 异步互操作性完全相同的情况。

考虑仅使用原子包含保证启动简单的跨 Rollup 交换:

跨 Rollup 交换包

→ 交易 1:在源 Rollup 上锁定/销毁代币

→ 交易 2:在目标 Rollup 上铸造代币到用户地址

我们可能在这两个交易确实包含在每个 Rollup 的下一个区块中时获得原子包含保证,但如果第一笔交易回滚而第二笔不回滚,用户将在目标链上错误地分配资金,而在源链上未锁定或销毁这些资金,这将导致双重支出问题。

任何互操作性解决方案,无论是流动性桥、意图框架还是 xERC-20 交换,都将面临这种风险,并且无法减轻这种风险。因此,目前的解决方案要求启动交易必须在源链上成功执行并包含在区块中,然后才能使用中继器传递发出的消息并在目标链上执行第二笔交易。

重要要点:原子包含并未实质性影响互操作性的潜力。

3. 共享结算

所需基础设施:

证明聚合层 // 共享桥接合约

在这一阶段,事情开始变得更加有趣。由于共享桥接合约,所有从 L1 存入 Rollup 生态系统的流动性可以在所有连接的 Rollup 之间自由移动。在此之前,我们无法在 Rollup 之间进行交换,而不通过规范渠道、外部包装资产或使用第三方解决方案。

为什么要构建共享桥接合约?为了理解为什么共享桥接合约使我们能够无信任地在 Rollup 之间移动资产,首先要考虑如果能够在 Rollup A 中持有以太币,烧毁它,然后在 Rollup B 上本地铸造,而不通过 L1 的共享桥接合约,会发生什么。

我们看到,每个 Rollup 将与其主网桥接合约不同步。Rollup B 的桥接合约仍然有 50 个以太币,因此用户无法将他们的 1 个以太币提取到 L1。

为了解决这个问题,构建了外部资产包装协议,它发行在 Rollup 之间的外部包装代币,象征着网络中某处的本地版本。

有了共享结算层,情况就不同了。因为每个连接的 Rollup 的所有流动性都锁定在同一个桥接合约中,所以可以在 Rollup 之间自由移动,因为桥接合约中的总价值保持不变,且始终可以提取。

确实需要在 L1 合约级别更新流动性所在的位置,以允许用户从任何地方提取,但这很简单,因为所有连接的 Rollup 都可以读/写到共享合约。

有了共享结算层,简单的自我发送案例的流程可能如下所示:

自我发送:

用户创建初始交易:

→ Tx 1:在 Rollup A 上提取以太币(附带在 Rollup B 上铸造的消息)

→ 交易被批处理并提交到 L1 合约

→ 它被聚合到交易根中,分组所有共享结算 Rollup

Rollup B 导入这个交易根

中继者提交交易以铸造并附上默克尔证明到 Rollup B

Rollup B 使用默克尔证明和交易根验证烧毁交易

用户在 Rollup B 上获得铸造的以太币

Rollup B 将证明提交到 L1

我们可以将此流程扩展到共享结算生态系统中所有具有合约的 ERC-20 代币。

可以将共享桥接合约视为所有连接 Rollup 之间的协议内消息层,因此理论上此流程实际上可以扩展到任何任意消息标准。

这使我们更接近可组合性,但由于必须聚合证明和在状态变化反映在 L1 之后才中继消息,延迟较高(尽管显著低于 L1 异步案例)。此外,任何复杂的跨 Rollup 活动,如在 Rollup B 上使用 DEX 从 Rollup A 开始进行跨 Rollup 限价单,仍然对用户来说是一个繁琐的过程,因为他们仍需进行自我发送并在目标 Rollup 上手动交换资产。在这种情况下,无法创建原子跨 Rollup 批量交易。

共享结算的另一个重要好处是,对于在多个环境中完成订单的流动性提供者或求解者来说,摩擦更小。因为他们在所有连接的 Rollup 上的流动性都反映在同一个桥接合约中,他们不必等待完整的提取窗口来管理他们的跨 Rollup 流动性。

对利益相关者的影响:

用户:

现在可以以本地形式转移资产,而无需 L1 提取时间。

开发者:

变化仅限于代币发行者,他们现在可以使用协议内消息在所有连接的 Rollup 上发行本地版本的 ERC-20。

MEV 搜索者:

由于这发生在每个 Rollup 的多个区块上,因此没有新的 MEV 潜力。

Rollups:

Rollups 将必须选择使用共享桥接合约,并可能添加预编译以处理跨 Rollup 消息。

重要结论:共享结算允许在所有共享桥接合约和证明聚合层的 Rollup 之间进行非外部包装的资产转移和任意消息传递,但仍会存在不可忽视的延迟(尽管比 L1 异步延迟短得多),并且无法创建跨 Rollup 原子批量交易。

4. 原子执行

所需基础设施:

共享排序器 // 超构建者

原子执行允许我们保证跨 Rollup 捆绑交易的成功执行,但正如我们将看到的,缺少依赖交易的跨 Rollup 捆绑的用例数量小于人们最初可能预期的。

如果捆绑中的任何单个交易回滚,则所有其他交易变为无效并且也必须回滚,因为在跨 Rollup 进行代币的燃烧和铸造时就是这种情况。 在目标 Rollup 上铸造代币依赖于在源 Rollup 上已被燃烧或锁定,因此我们可以说,燃烧和铸造交易的捆绑是依赖交易的捆绑。

没有中间方(例如超构建者)来创建目标交易,我们无法创建此捆绑。

考虑一下,在没有用户之外的另一方的情况下,跨 Rollup 交换捆绑需要满足的条件。 捆绑必须创建以在源 Rollup 上锁定/燃烧资产,并在目标 Rollup 上铸造资产,但我们会遇到问题:

源 Rollup 上的合约只能在锁定/燃烧原始源资产时发出消息,不能调用并在目标 Rollup 上创建交易。

→ 这就是为什么消息协议和中继网络存在。

→ 消息可以用来构建在目标上的调用,但实际上无法创建交易。

在目标 Rollup 上铸造的第二个交易创建:

→ 用户本人无法创建此交易,因为他们没有在 Rollup B 上的铸造权。

→ 即,目标链需要证明已在源链上燃烧/锁定代币,但该证明在初始交易执行后才能获得,这将破坏我们的原子性要求。

→ 任何其他可以创建第二个交易并拥有铸造权的方理论上可以在目标链的任何时候创建“铸造”交易,而无需首先在源链上创建“燃烧”或锁定,这是一种巨大的漏洞。

我们可以看到,即使我们可以保证跨 Rollup 捆绑的执行,但我们在如何构建它们以转移有价值的资产时仍然会遇到困难。

然而,对于没有依赖的跨 Rollup 捆绑,仍然有一些原子执行的用例。其中之一是跨 Rollup 套利:

跨 Rollup DEX 套利与原子执行

由于这些交易之间没有严格的依赖关系,任何人都可以创建这个原子捆绑并提交给共享排序器,以保证原子执行。

然而,为了首先拥有原子执行的保证,Rollup 必须选择加入一个共享排序器和超构建者,这将运行所有连接的 Rollup 的完整节点,因此从原子执行到区块级可组合性的步骤相当小,所有共享排序解决方案都会这样做。 唯一需要更改的是区块构建者或其他第三方必须能够代表用户创建交易,以完成依赖的跨 Rollup 捆绑。

不太可能建立仅允许原子执行而不进一步实现可组合性的基础设施。 鉴于基础设施已经具备原子执行,跳到完全的区块级可组合性的相对收益远远超过实现它的难度。

对利益相关者的影响:

用户:

可能没有变化,尽管第三方促进的解决方案如意图可能是原子的,但具体方式尚不清楚。

开发者:

可能没有变化。

MEV 搜索者:由于原子执行,跨 Rollup 套利更加安全。

Rollups:

Rollups 必须选择使用共享排序器/超构建者提交希望互操作的每个 Rollup 的交易,这可能会改变 Rollup 的收入结构。尚不清楚会如何改变。

-排序市场可能通过允许复杂的构建者购买 ToB 空间来增加 Rollup 的收入。

重要结论:虽然跨 Rollup 捆绑交易保证原子执行,但如果没有超构建者创建捆绑的一部分,尚不清楚这些捆绑将如何构建,因此单靠原子执行不太可能影响互操作性。共享排序器/超构建者默认应构建区块级可组合性。

5. 区块级组合性

所需基础设施:

共享序列器 // 超构建者 // 证明聚合层 // 共享桥合约

(* = 可选)

在关于共享序列器和共享结算层的讨论中,常用的术语是“同步组合性”。

我们对这个术语进行了略微修改,以使其更具描述性。将术语更新为区块级组合性意味着可以在跨链交易的捆绑中,在两个 rollup 之间进行组合,这些交易将被成功包含并执行在下一个区块中。同步组合性可能会与交易级组合性混淆,后者将在下一节中探讨。重要的是,这需要一个中介方(共享序列基础设施),它可以是依赖交易捆绑的指挥者和创建者。

在这个层面上,我们开始看到 rollup 之间真正的组合性,而不仅仅是通过发送到自己来参与另一个 rollup 上的 dapp。

通过添加一个可以创建交易的共享序列器,我们现在能够创建跨 rollup 捆绑,开发者可以在程序上利用这些捆绑。

需要考虑两种情况:

区块级组合性

区块级组合性 + 共享结算层

在这两种情况下,我们可以创建更复杂活动的跨 rollup 捆绑,但在第二种情况下,具有共享结算层时,我们可以使用本地资产,这可能对跨 rollup DEX 活动产生更好的价格影响。

通过区块级组合性,我们既拥有原子执行的优势,又有能力创建依赖交易捆绑。让我们来看看两个说明性示例。

通过 xERC-20 转移相同代币(没有共享结算):

用户持有 ERC-20

用户通过 dapp 创建交易:

→ 将 ERC-20 存入 xERC-20 锁箱以接收 xERC-20 包装版本

→ 销毁 xERC-20

→ 发送消息,向共享序列基础设施表明已启动跨 rollup 转移,并附上相关数据以促进交换

超构建者获取交易并创建跨 rollup 捆绑

→ 交易 1:上述包装和销毁交易

→ 交易 2:在 rollup B 上铸造 xERC-20

超构建者将此跨 rollup 提交给共享序列器

→ 因为超构建者运行着两个连接 rollup 的全节点,他们模拟交易以保证捆绑的成功执行。如果任何交易回滚,整个捆绑将回滚。

共享序列器将包含这两个交易的区块提交给 DA 层,以及执行状态变更的节点

xERC-20 在 Rollup B 上铸造给用户

通过共享结算层,流程甚至进一步简化,因为不需要首先将 ERC-20 包装为 xERC-20 进行交换。

现在让我们检查跨 rollup 限价订单,以用来自 Rollup A 的初始(不同)ERC-20 购买 Rollup B 上的 ERC-20,并将结果 ERC-20 发送回 Rollup A。在这种情况下,我们不假设有共享结算层,尽管在存在共享结算层的情况下有类似的流程。唯一的区别是不需要额外包装资产。

在这种情况下所需的交易有:

在 A 上包装并销毁 ERC-20

在 B 上铸造 xERC-20

在 B 上用初始 xERC-20 交换目标 ERC-20

在 B 上包装并销毁目标 ERC-20

在 A 上铸造 xERC-20

以下是这一流程可能的工作方式:

跨 Rollup 限价订单在区块级组合环境

流程:

用户发起第一个交易:

→ 包装并销毁 xERC-20,发出消息以指定交换参数(目标链、DEX 地址、要交换的 ERC-20、限价订单价格、是否发送回去的布尔值)

超构建者看到交易并创建捆绑:

→ 交易 1:用户创建上述交易

→ 交易 2:在目标链上铸造 xERC-20(超构建者必须拥有铸造权限)

→ 交易 3:使用交易 1 中的数据进行限价订单

→ 交易 4:在 B 上包装并销毁 ERC-20,假设限价订单完全履行,并发出消息以在源链上铸造

→ 交易 5:从源链的交换输出中铸造目标 xERC-20

因为超构建者创建区块并排序交易,所以它可以模拟每个交易,如果任何交易回滚,则省略捆绑。例如,如果发现用户不会在限价订单上获得完全履行,捆绑将在区块执行前被省略。

在没有共享结算层的共享序列基础设施的情况下,必须使用外部包装的 Eth 和 xERC-20,这可能导致 DEX 上由于包装资产流动性池较薄而产生更糟糕的市场条件。在这种情况下,用户可能不得不使用更宽松的限价,并容忍更多滑点,从而可能获得次优价格。一个例外是,如果涉及到 USDC。在没有共享结算的情况下,可能与 Circle 合作,获得跨 rollup 上 USDC 合约的独占权,以促进本地 USDC 的转移和交换。

有了共享结算层,这种外部包装就不是必要的,并且可能由于本地资产交换的流动性池更深而提供更好的价格,但流程本质上是相同的。

乐观信任序列器

Rollups需要乐观地信任共享序列器/超级构建者来创建有效的跨滚动束。这主要是因为这个跨滚动束包含的依赖交易,单个滚动无法在块添加到每个滚动的链并聚合到L1的结算层之后进行验证。一个例子是从源到目标的Eth的初始燃烧和铸造。确保Eth在源链上被燃烧后再在目标链上铸造是至关重要的,否则可能会出现双重支出。

然而,为了在一个块中执行这个完整的束,所有交易必须出现在该块中,即使该交易代表的状态在块本身之前是无效的(例如,如果用户在块之前没有任何Eth,那么在目标链上进行交换时就会出现Eth)。因此,我们必须信任序列器,它确实在跨滚动束中包含了有效的依赖关系。事后可以提交证明来证明每笔交易的有效性。

然而,当使用包装资产时,这一点略显不那么重要,因为它们对存储在L1中的本地流动性没有影响,但仍然必须有备用机制来应对恶意序列器或代码中的漏洞,允许执行具有已回退的依赖交易的交易束的风险。

对利益相关者的影响:

  1. 用户
  2. 允许在一个区块中进行跨 rollup 限制订单的大幅提升用户体验
  3. 开发者
  4. 需要对跨 rollup 活动有所意识,可能会利用自定义预编译。开发者需要考虑捆绑,而不仅仅是交易,但 superbuilder 和自定义 rollup 基础设施可能会抽象掉大部分开发复杂性。
  5. MEV 搜索者
  6. MEV 搜索者在跨 rollup 捆绑上有基本等同于在 L1 策略上使用的机会,但这取决于 PBS(提议者-构建者分离)的实施方式。
  7. → 跨 rollup 捆绑本质上被视为单个交易,因此可以通过前置交易或夹击这些捆绑来发现 MEV,只要它们不会使价格超出容忍滑点范围(否则整个捆绑将回滚,MEV 尝试将失败)
  8. Rollups
  9. 需要选择加入共享排序基础设施(包括 superbuilders),并在共享结算层的情况下允许共享排序者访问 Eth 的燃烧/铸造。
  10. → 可以通过向构建者出售区块空间来内化 MEV

6. 交易级组合性

所需基础设施:

交易级组合性 // 共享结算 // 超构建者

交易级组合性指的是在一个EVM链上,智能合约共享的相同功能级别。在这种情况下,单个交易可以同时更新多个rollup的状态,并确保在调用之前的任何状态更改可以被回滚,如果调用未成功返回。实际上,在块级可组合环境中的原子交易束可以在单个跨rollup和跨虚拟机交易中完成。这需要所有连接的rollup进行虚拟机级别的更改,此外还需要一个共享结算层和超构建者。

我们在这里高层描述一种可能的机制(此构造来自Espresso团队,基于我们的知识)。首先,用户向所有因交易而改变状态的rollup提交一个跨rollup交易,或向可以跨所有相关rollup构建区块的超构建者。超构建者模拟交易并形成输入输出对的列表,为每个参与的rollup指定交易中必要和预期的跨rollup消息(注意,超构建者只有在拥有所有参与rollup的安全排序权利时才能做到这一点)。然后,超构建者将模拟的区块发送给每个rollup的提议者,并附上每个跨rollup交易的预期输入输出对的列表。在执行过程中,每个rollup正常执行其状态转换函数,假设来自跨rollup交易列表的输入是正确的。在结算过程中,输入输出列表可以交叉比较,并在共享结算层的证明聚合阶段中证明安全。具体而言,如果跨rollup交易的任何预期输入与另一个rollup指定的输出不匹配,则结算过程将拒绝整个跨rollup交易。

尽管交易级组合性在闪电贷之外解锁的新功能有限,但创建跨rollup应用的开发者体验可以大大改善。能够创建与所有连接链交互的去中心化应用,而不必考虑跨rollup交易束,将使在多rollup环境中创新变得更加容易。此外,可能会因此出现新的用例和行为。

对于交易级组合性,仍然有许多开放的设计问题。首先,开发者如何选择是否允许跨rollup调用其智能合约需要仔细考虑。允许任意组合而不受限制意味着我们退回到一个单一的rollup。我们认为这里的答案是开发者明确指出在其合约中需要跨rollup组合的地方,例如通过一个Solidity修饰符composable,将合约的某些入口点标记为可跨rollup调用。

对利益相关者的影响

  1. 用户:
  2. 与块级组合性具有相同的影响,同时具备额外的高级功能,如闪电贷
  3. → 用户体验在选择的去中心化应用中与单链使用几乎相同
  4. 开发者:
  5. 开发者体验大幅改善,因为去中心化应用开发者可以原生调用跨rollup合约,并使用这些调用的输出,就像单一rollup调用一样
  6. → 超构建者/排序基础设施仍需将交易放入受跨rollup调用影响的rollup的区块中,但不需要像块级组合性那样构建相同的交易束。
  7. MEV搜索者:
  8. 高MEV潜力,因为跨rollup交易束现在基本上等同于单个链上的交易
  9. Rollups:
  10. 需要进行虚拟机级别的更改,并选择共享排序器和共享结算层
  11. → 在能够通过证明验证状态之前,需要信任其他rollup的输入和输出,涉及额外的信任假设,但惩罚机制可以减少信任负担

总结与生态系统图

在详细探讨了每个定义的互操作性级别的技术细节后,我们可以总结如下:

共享结算允许跨滚动交换,而无需外部包装资产,并在所有连接的滚动之间创建内部协议消息通道。

共享排序/超级构建者允许对跨滚动捆绑的下一个区块执行保证。

区块级可组合性允许创建复杂、快速、依赖的跨滚动捆绑,实现近乎智能合约到智能合约级别的可组合生态系统。

随着共享结算的加入,这些跨滚动捆绑可以在不使用外部包装资产的情况下创建。

交易级可组合性是可能的,虽然新开放的用例可能更适合更复杂的用户,但它有潜力大幅提升跨滚动开发体验。

目前,许多项目正在出现,以创建这些本地互操作的生态系统。以下是该领域的高层次概述:

生态系统地图

生态系统地图

总结

关于本文中提出的框架仍然存在一些技术细节上的开放问题。例如,在区块级可组合生态系统中为跨滚动限价单构建捆绑可能需要更详细的设计,以处理部分履行和市场订单的滑点容忍度。在这里,我们提供了一种潜在解决方案,如果订单没有完全成交,可以撤销跨滚动限价单捆绑,但设计空间仍然开放。

此外,值得将此与当前在该领域逐渐增长的关于应用链的思考联系起来。应用链是长尾的二层(L2),它们可以是通用的或有权限的,目标是在一个L2上将特定相关协议孤立起来。当我们达到区块级可组合性时,应用链环境可能会因所有连接网络之间具有本地可组合性而获得显著的吸引力。

目前,为这些应用链注入流动性仍然困难,但一旦更大链条作为可互操作环境的接入点连接,可能会看到围绕共享基础设施的封闭生态系统。

另一个重要的开放问题是超级构建者的设计空间将如何定型。在这一方面的发展仍处于初期阶段,目前尚不清楚创建一个能够构建跨滚动捆绑的复杂构建者网络的最有效、最有效的方法是什么。跨滚动捆绑应在区块中最佳包含的位置以及对滚动收益的影响仍然是一个开放问题,许多团队正在探索不同的策略。

最终,未来可能涉及在协议内和协议外的桥接解决方案的组合,它们将协同工作,为每个人提供更好的互操作性流程。我们相信,本文中定义的进展可以为开发者和建设者提供指南,帮助他们使跨滚动互操作性对最终用户更加无缝。

同时,也很可能会出现尚未被发现的跨滚动交互的新范式。如果您是一个在扩展这里讨论的主题或未涵盖主题的构建者,请与我们联系(私信开放)。技术终于成熟到足够的程度,可以对解决流动性/生态系统碎片化施加实际压力,我们始终希望与那些敢于冒险构建创造性解决方案的创始人建立联系。

致谢

这篇文章源于1kx在EthCC举办的一个非常有洞察力的滚动互操作性圆桌讨论。特别感谢Noah PravecekEllie DavidsonTerry对早期版本的阅读和反馈,以及MartimteamBo Du在这一主题上进一步的讨论。

声明:

  1. 本文转载自[mirror],转发原标题《Rollups之间的Trustless Interoperability: Landscape, Constructions, and Challenges》,版权归原作者所有[小马歇尔·维莱特尔]。若对本次转载有异议,请联系Gate Learn团队,他们会及时处理。

  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。

  3. Gate Learn 团队将文章翻译成其他语言。除非另有说明,否则禁止复制、分发或抄袭翻译文章。

即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!