作者:Marshall Vyletel Jr. 来源:1kx 翻译:善欧巴,区块链网络 介绍 以太坊上的 rollup 数量出现了爆发式增长。根据 L2Beat 的数据,截至撰写本文时,已有 91 个 L2 和 L3 上线,还有 82 个即将上线。因此,在流动性、用户体验和开发人员工具方面也存在大量碎片化。当前的互操作性解决方案还有待改进,因为它们依赖于第三方桥接器、外部包装资产和意图框架的组合,而每种解决方案都有各自的问题。 流动性桥通常是最大的加密货币黑客攻击的目标(例如价值 3.21 亿美元的虫洞桥黑客攻击) 外部包装的资产并不受欢迎,数据显示,只要有可能,人们更愿意以原生形式持有资产(例如,根据L2Beat 的数据,规范桥接资产价值为 220 亿美元,而外部包装的资产仅价值 30 亿美元) 意图框架依赖于第三方,这些第三方需要一些不可忽略的信任,并收取额外费用以促进跨 Rollup 活动(例如,由于官方桥梁不规范,Degen 链用户损失了 80% 以上的代币)。中心化的意图框架也意味着较低的竞争,这可能导致定价和性能不理想 在本文中,我们通过定义和讨论分散的 Rollup 生态系统之间的六个级别的互操作性解决方案,调查了无信任互操作性前景。 我们从默认情况开始,即异步从源 rollup 提现到 L1 并手动桥接至目标 rollup,最后以单个交易中跨 rollup 可组合性的假设架构结束。我们将探讨每个级别的互操作性将如何影响用户体验、开发人员体验、MEV 潜力以及 rollup 本身(具体与基础设施变化有关)。 本文主要讨论以太坊及其 L2,并仅关注无需信任的互操作性。在这种情况下,“无需信任的互操作性”是指协议内通道,不需要第三方在大多数 rollup 已经需要的必要基础设施之外促进传输。 准备工作 定义 从根本上讲,无需信任的互操作性需要一些共享资源,任何两个希望互操作的协议都必须能够访问这些资源。在以太坊 L1 的情况下,所有智能合约都存在于共享以太坊完整状态的同一环境中,因此它们将始终具有最高级别的互操作性。然而,L2 仅通过单独的桥接合约共享结算层,因此互操作性受到很大限制。 能够推动我们在无信任互操作性阶梯上前进的关键共享基础设施组件是共享排序器、超级构建器和共享结算。这些共享层所开放的保证和新功能是相关的,但本质上是正交的。 共享序列器/超级建造者:主要提升速度和用户体验。 共享结算:无需外部包装和协议内消息传递的资产交换。 首先,我们将定义引言中提到的六个无需信任的互操作性级别: L1 异步: 原子包含: 共享结算: 原子执行: 区块级可组合性: 交易级别可组合性: 为了进一步了解每个级别,我们将介绍以下关键用例,以展示每个级别的功能及其对用户、开发人员、汇总和 MEV 搜索者的影响。 示例: 相同代币转移 代币购买 含义: 我们还将回答以下问题,以进一步了解对任何汇总生态系统中关键股东的影响。 用户体验 开发人员体验 MEV 潜力 Rollup 的影响 高级概述 迈向无信任互操作性的六个阶段 1. L1 异步 所需基础设施: 不适用 根据定义,这指的是当前默认的无信任互操作模式。所有 rollup 都是这样定义的,因为它们是作为结算层建立在 L1 上的,并且只能通过桥接合约访问该 L1,它们会定期发布状态更新以保护网络。 在这种情况下,执行任何无需信任的跨 Rollup 活动的唯一规范方法是通过规范桥从源 Rollup 中提取资产,并在 L1 上可用后手动将其存入目标 Rollup 中。 对于 Optimistic Rollup,考虑到防错窗口,提现延迟约为 7 天。在 ZK Rollup 中,提现延迟不太确定,但可能在 15 分钟到一整天之间,ZkSync 就是这种情况。 此外,使用智能合约进行点对点原子交换也是可能的,但这是一个较小的用例,并且无法有效扩展。 值得注意的是目前存在的第三方解决方案: 流动性桥梁 意图框架 我们的两个示例都需要第三方解决方案来协助。 发送给自己: 规范做法: 第三方: 跨滚动限价订单 规范: 第三方 由于这是默认情况,因此无需讨论 UX、DevEx、MEV 和汇总的变化。 2. 原子包含 所需的基础设施 共享序列器 * 原子包含仅保证跨汇总捆绑包将包含在下一个块中。 这需要一个共享的排序器,但理论上,如果两个给定 rollup 上的排序器未达到最大吞吐量,则可以手动实现(只需向每个 rollup 分别提交两个交易即可)。这就是我们在所需基础设施上添加了星号的原因。 但是,我们并不假设共享排序器运行每个连接的 rollup 的完整节点,因此无法保证一组交易的成功执行。在这种情况下,共享排序器只能保证交易格式正确且将包含在下一个区块中,但不一定能成功执行。 由于没有执行保证,因此不可能以任何有意义的方式以编程方式利用原子包含,而不会招致其中一项交易被撤销的风险。因此,我们本质上处于与 L1 Async 互操作性完全相同的情况。 考虑启动一个仅具有原子包含保证的简单交叉汇总交换: 跨 Rollup 交换捆绑 我们可能有原子包含保证,即两个交易实际上都包含在每个汇总的下一个块中,但如果第一个交易回滚而第二个交易没有回滚,则用户将在目标链上错误地分配资金,而无需在源链上锁定或烧毁它们,我们就会遇到双重支付问题。 任何互操作性解决方案,无论是流动性桥、意图框架还是 xERC-20 交换,都容易受到这种风险的影响,而且不可能缓解这种风险。由于存在这种风险,当前的解决方案要求发起交易必须已成功执行并包含在源链上的区块中,然后才能使用中继器传递发出的消息并在目标链上执行第二笔交易。 重要提示:原子包含不会对互操作性潜力产生重大影响 3. 共享结算 所需基础设施: 证明聚合层//共享桥合约 这就是事情开始变得更加有趣的地方。由于共享桥合约的存在,从 L1 存入 rollup 生态系统的所有流动性都可以在所有连接的 rollup 之间自由移动。在此之前,我们无法在不经过规范渠道、外部包装资产或使用第三方解决方案的情况下在 rollup 之间进行交换。 为什么要建立共享桥合约?要理解为什么共享桥合约可以让我们以无需信任的方式跨 Rollup 转移资产,首先考虑一下,如果可以在 Rollup A 中拥有 Eth,将其销毁,然后在 Rollup B 上原生铸造,而无需在 Layer1 上建立共享桥合约,会发生什么情况。 我们看到,每个 rollup 都会与主网上的桥接合约不同步。rollup B 桥接合约仍有 50 个 Eth,因此用户无法将其 1 个 Eth 提取到 L1。 为了解决这个问题,我们建立了外部资产包装协议,在汇总中发行外部包装版本的代币,这些代币象征着网络中其他地方的原生版本。 有了共享结算层,情况就不同了。由于每个连接的 rollup 的所有流动性都锁定在同一个桥梁合约中,因此人们可以在 rollup 之间自由移动,因为桥梁合约中的总价值保持不变,并且始终可以提取。 确实需要在 L1 合约层面进行更新,以了解流动性在哪里,以允许用户从任何地方提款,但这很简单,因为所有连接的汇总都可以读取/写入共享合约。 使用共享结算层,对于简单的发送给自己的情况下,流程可能看起来像下面这样。 发送给自己: 用户创建初始交易: Rollup B导入此交易根 中继器将交易提交给铸币厂,并将 Merkle 证明提交给 rollup B Rollup B使用 Merkle Proof 和交易根来验证销毁交易 用户在 Rollup B 上铸造了Eth Rollup B向 L1提交证明 我们可以将此流程扩展到在共享结算生态系统中所有汇总中都有合约的任何 ERC-20。 我们可以将共享桥合约视为所有连接汇总之间的协议内消息传递层,因此理论上这种流程实际上可以扩展到任何任意消息传递标准。 这让我们更接近可组合性,但由于只有在 L1 上反映状态变化后才需要聚合证明和传递消息,因此延迟较高(尽管明显低于 L1 异步情况)。此外,任何复杂的跨 Rollup 活动(例如在 Rollup B 上使用 DEX 从 Rollup A 上的资产开始进行跨 Rollup 限价订单)对于用户来说仍然是一个繁琐的过程,因为他们仍然必须向自己发送并在目标 Rollup 上手动交换资产。在这种情况下,无法创建原子跨 Rollup 捆绑包。 共享结算的另一个重要好处是,对于在多个环境中执行订单的流动性提供者或解决者来说,摩擦更小。由于他们跨所有连接的 Rollup 的流动性都反映在同一个过桥合约中,因此他们不必等待完整的提款窗口来管理跨 Rollup 流动性。 对利益相关者的影响: 用户: 开发人员: MEV 搜索者: Rollups: 重要提示:共享结算允许在共享桥接合约和证明聚合层的所有汇总中进行非外部包装的资产转移和任意消息传递,但仍然会有不可忽略的延迟(尽管比 L1 Async 短得多)并且无法创建跨汇总原子束。 4.原子执行 所需基础设施: 共享排序器 // 超级建造者 原子执行使我们能够保证跨卷捆绑包的成功执行,但正如我们将看到的,没有依赖事务的跨卷捆绑包的用例数量比最初预期的要少。 如果一组依赖交易中的任何单笔交易被撤销,那么所有其他交易都将变得无效,并且也必须被撤销,就像跨 rollup 销毁和铸造代币的情况一样。在目标 rollup 上铸造代币取决于它们是否已在源 rollup 上被销毁或锁定,因此我们可以说一组销毁和铸造交易是一组依赖交易。 如果没有能够创建目标交易的中间方(例如超级建造者),就不可能创建此捆绑包。 考虑一下,在没有用户以外的其他方参与的情况下,跨 Rollup 交换捆绑包的构建必须满足哪些条件。必须创建一个捆绑包来锁定/刻录源 Rollup 上的资产,并在目标 Rollup 上铸造资产,但我们遇到了问题: 源 rollup 上的合约只能在锁定 / 销毁原始源资产时发出消息,它们无法在目标 rollup 上调用和创建交易。 在目标 rollup 上创建第二笔交易以进行铸造: 我们可以看到,即使我们可以保证跨汇总捆绑包的执行,但我们在如何首先构建它们以转移有价值的资产方面遇到了困难。 但是,仍然有一些不需要依赖 cross-rollup bundles 的原子执行用例。其中之一就是 cross-rollup 套利: 由于这些交易之间没有严格的依赖关系,任何人都可以创建这个原子包并将其提交给可保证原子执行的共享序列器。 然而,为了首先获得原子执行保证,rollup 必须选择共享排序器和超级构建器,以运行所有连接的 rollup 的完整节点,因此从原子执行到区块级可组合性的一步非常小,所有共享排序解决方案都会做到这一点。唯一需要的改变是,区块构建器或其他第三方必须能够代表用户创建交易,以完成依赖的跨 rollup 捆绑包。 不太可能构建只允许原子执行而不进一步实现可组合性的基础设施。考虑到基础设施已经具备原子执行功能,实现完全块级可组合性的相对收益远远超过实现这一目标的难度。 对利益相关者的影响: 用户: 开发商: MEV 搜索者: Rollup: 重要提示:虽然跨 rollup 捆绑包保证原子执行,但如果没有创建捆绑包部分的超级构建器,则不清楚这些捆绑包将如何构建,因此原子执行本身不太可能影响互操作性。默认情况下,共享序列器/超级构建器应构建块级可组合性。 5. 块级可组合性 所需基础设施: 共享排序器 // 超级构建器 // 证明聚合层* // 共享桥合约* (* = 可选) 在有关共享序列器和共享结算层的大部分讨论中,通常用来描述这种级别互操作性的术语是“同步可组合性”。 我们稍微修改了这个术语,使其更具描述性。将术语更新为“区块级可组合性”意味着可以在两个 rollup 之间组合跨 rollup 交易包,这些交易包将在下一个区块中包含并成功执行。同步可组合性可能会与交易级可组合性混淆,我们将在下一节中探讨这一点。重要的是,这需要一个中间方(共享排序基础设施),它可以成为依赖交易包的执行者和创建者。 在这个层面上,我们开始看到 Rollup 之间的真正可组合性,而不仅仅是简单地发送给自己以参与另一个 Rollup 上的 dapp。 通过添加可以创建交易的共享序列器,我们现在可以制作跨汇总包,开发人员可以通过编程方式利用它。 有两种情况需要考虑: 块级可组合性 区块级可组合性+共享结算层 在这两种情况下,我们都可以为更复杂的活动创建跨汇总捆绑包,但在第二种情况下,通过共享结算,我们可以使用原生资产,例如,这可能会对跨汇总 DEX 活动产生更好的价格影响。 借助块级可组合性,我们既拥有原子执行的优势,又拥有创建依赖事务包的额外能力。让我们来看看我们的两个说明性示例。 通过 xERC-20 进行相同代币转移(无共享结算): 用户拥有 ERC-20 用户通过 dapp 创建 tx: Superbuilder 拾取交易并创建跨 Rollup 捆绑 Superbuilder 将此交叉 rollup 提交给共享排序器 共享排序器将包含两笔交易的区块提交给 DA 层以及执行状态更改的节点 xERC-20在 Rollup B 上铸造给用户 有了共享结算层,流程进一步简化,因为不需要先将 ERC-20 包装为 xERC-20 进行交换。 现在让我们来看一下跨 Rollup 限价订单,即在 Rollup B 上用 Rollup A 中的初始(不同)ERC-20 购买 ERC-20,并将生成的 ERC-20 发送回 Rollup A。在这种情况下,我们不假设我们有一个共享结算层,尽管在有共享结算层的情况下存在类似的流程。唯一的区别是不需要额外对资产进行外部包装。 以下是此案例中所需的交易: 在 A 上包装并销毁ERC-20 B 上的MintxERC-20 在 B 上将初始 xERC-20 与目标 ERC-20进行交换 在 B 上包装并销毁目标 ERC-20 A 上的MintxERC-20 以下是其可能的工作流程: 流动: 用户发起第一笔交易: 超级建造者看到交易并创建捆绑包: 由于超级构建器会创建区块并排序交易,因此它可以模拟每笔交易,并在任何交易撤销时省略捆绑包。例如,如果发现用户无法完全履行其限价订单,则在执行区块之前会省略捆绑包。 在没有共享结算层的共享排序基础设施的情况下,需要使用外部包装版本的 Eth 和 xERC-20,这可能会导致 DEX 的市场状况恶化,因为包装资产的流动性池会变薄。在这种情况下,用户可能不得不使用更宽松的限制,滑点容忍度更高,并且可能会收到次优价格。如果涉及 USDC,则有一个例外。没有共享结算的共享排序器可能会与 Circle 合作,获得跨 rollup 的 USDC 合约的独家权利,以促进跨 rollup 的原生 USDC 转移和交换。 有了共享结算层,这种外部包装就没有必要了,而且由于原生资产交换的流动性池更深,可能会提供更好的价格,但流程基本相同。 乐观地信任测序仪 Rollup 需要乐观地信任共享的排序器/超级构建器来创建有效的跨 Rollup 捆绑包。这主要是因为这个跨 Rollup 捆绑包包含依赖交易,各个 Rollup 无法验证这些交易,直到将区块添加到每个 Rollup 的链上并聚合到 L1 上的结算层之后。一个例子是从源到目的地的 Eth 的初始销毁和铸造。至关重要的是,Eth 必须在源链上实际销毁,然后再在目标链上铸造,否则可能会出现双重支付。 但是,要在一个区块中执行这个完整的捆绑包,所有交易都必须存在于该区块中,即使交易代表在区块本身之前无效的状态(例如,如果用户在区块之前没有任何 Eth,则在交换的目标链上有 Eth)。因此,我们必须相信排序器确实在跨汇总捆绑包中包含了有效的依赖关系。事后可以提交证明来证明每笔交易的有效性。 然而,当使用包装资产时,这一点就不那么重要了,因为它们对存储在 L1 中的本机流动性没有影响,但仍然必须有回退机制来抵消恶意排序器或代码中的错误的风险,这些错误允许交易捆绑包与被还原的依赖交易一起执行。 对利益相关者的影响: 用户 开发人员 MEV 搜索者 Rollups 6. 交易级别的可组合性 所需基础设施: VM 级别变更 // 共享结算 // 超级建造者 交易级可组合性是指一个 EVM 链上的智能合约所共享的相同级别的功能。在这种情况下,单个交易可以同时更新多个 rollup 的状态,并确保如果调用未成功返回,则可以还原任何调用之前的任何状态更改。实际上,区块级可组合环境中的原子交易包可以在单个跨 rollup 和跨 VM 交易中完成。除了共享结算层和超级构建器之外,这还需要对所有连接的 rollup 进行 VM 级更改。 我们在此从高层次描述了一种可能的机制。(据我们所知,此构造归功于 Espresso 团队)。首先,用户向所有状态被交易改变的 rollup 或可以在所有相关 rollup 上构建区块的超级构建者提交跨 rollup 交易。超级构建者模拟交易并形成输入输出对列表,每个相关 rollup 一个,该列表指定交易中必要和预期的跨 rollup 消息。(请注意,超级构建者只有在一段时间内对所有相关 rollup 拥有安全排序权时才能这样做)。然后,超级构建者将模拟的区块连同每个跨 rollup 交易的预期输入输出对列表一起发送给每个 rollup 的提议者。在执行期间,每个 rollup 都会正常执行自己的状态转换函数,假设来自跨 rollup 交易列表的输入是正确的。在结算期间,输入输出列表可以在共享结算层的证明聚合阶段进行交叉比较并证明是安全的。具体来说,如果跨 Rollup 交易的任何预期输入与另一个 Rollup 指定的输出不匹配,则结算过程将拒绝整个跨 Rollup 交易。 尽管除了闪电贷之外,交易级可组合性所能解锁的新功能有限,但开发人员创建跨 Rollup 应用程序的体验可以得到极大改善。能够创建与所有连接链交互的 dapp,而无需考虑跨 Rollup 捆绑包,这将使在多 Rollup 环境中进行创新变得容易得多。此外,还可能出现新的用例和行为。 交易级可组合性方面有许多未解决的设计问题。首先,需要仔细考虑开发人员如何选择加入或退出其智能合约的跨 Rollup 调用。允许任意可组合性而不受限制意味着我们回归到单一的 Rollup。我们认为这里的答案是让开发人员明确指出其合约中哪些地方需要跨 Rollup 可组合性,例如通过 Solidity 修饰符(如“可组合”)将合约的某些入口点标记为可调用的跨 Rollup。 对利益相关者的影响 用户: 开发人员:由于 dapp 开发人员可以本地调用合约交叉汇总并使用这些调用的输出(如单汇总调用),因此 MEV 搜索者: Rollups: 摘要和生态系统图 在了解了这里定义的每个互操作性级别的技术细节之后,我们可以总结一下: 共享结算允许跨 rollup 交换而无需外部包装资产,并在所有连接的 rollup 之间创建协议内消息传递路径 共享排序/Superbuilders允许在跨 rollup 捆绑包上提供下一个区块执行保证 区块级可组合性允许创建复杂、快速、相互依赖的跨 Rollup 捆绑包,从而实现近乎智能合约到智能合约级别的可组合生态系统。 交易级可组合性是可能的,虽然新开辟的用例可能针对更复杂的用户,但它有可能极大地升级跨汇总开发体验。 目前,有许多项目正在涌现,旨在创建这些原生可互操作的生态系统。以下是该领域的高层次概述: 生态系统地图 生态系统地图结束语 关于本文所列出的框架中的技术细节,仍然存在一些悬而未决的问题。例如,在区块级可组合生态系统中为跨汇总限价订单构建捆绑包可能需要更详细的设计来处理部分履行和市场订单的滑点容忍度的情况。我们在这里提供了一种潜在的解决方案,如果订单未完全完成,则可以恢复跨汇总限价订单捆绑包,但设计空间是开放的。 此外,值得一提的是,这与目前应用链领域日益增长的思想共享有关。应用链是长尾 L2,要么是通用的,要么是经过许可的,目的是将特定的相关协议孤立在一个 L2 上。当我们达到块级可组合性时,我们很可能也会开始看到应用链环境因所有连接网络之间具有本机可组合性而获得显著的吸引力。 目前,为这些应用链引入流动性仍然很困难,但一旦更大的链作为可互操作环境的入口连接起来,我们很可能会看到围绕共享基础设施的围墙花园生态系统。 另一个重要的悬而未决的问题是超级建造者周围的设计空间将如何解决。这方面的发展仍处于起步阶段,目前尚不清楚如何以最有效的方式创建一个可以创建跨汇总包的复杂建造者网络。这些跨汇总包将以最佳方式包含在区块中,以及对汇总收入的影响是一个悬而未决的问题,许多团队正在探索不同的策略。 最终,未来可能会涉及协议内和协议外桥接解决方案的组合,它们将协同工作,为每个人提供更好的互操作性流程。我们相信,本文中定义的进展可以作为开发人员和构建者的指南,他们专注于为最终用户提供更无缝的跨 Rollup 互操作性。 查看更多 —- 编译者/作者:金色精选 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
Rollups之间的无信任互操作性:概况、构建和挑战
2024-08-22 金色精选 来源:区块链网络
LOADING...
相关阅读:
- 消费者加密应用程序现状:有何亮点与构建空间?2024-08-22
- Paradigm领投的SorellaLabs:Flashbots的对手还是盟友?2024-08-22
- 「黑神话:悟空」火进币圈比特币都不香了?2024-08-21
- L2中心化是区块链的定时炸弹2024-08-21
- BlockworksResearch:从链上数据看Memecoin2024-08-21