Polygon 联创:深入探讨聚合区块链理论,与共享排序器有何不同?
作者:Brendan Farmer
翻译:白话区块链
正文开始之前我想提出两个观点:
无论是 L1 还是 L2 链,都无法支持达到互联网规模所需的吞吐量。
扩展区块链意味着扩展对流动性和共享状态的访问。如果通过多个链增加区块空间,而导致流动性瓦解,则这种方法行不通。
这对于模块化和单体化的区块链可扩展性观点都构成了挑战。
(1) 对于单体化观点构成了挑战,单体化观点认为单一高吞吐链是扩展的最佳方式。
(2) 对于模块化观点构成了挑战,因为这意味着在有意义实现层面,多链或多 Rollup 生态系统并不足以实现扩展:需要增加对共享状态和流动性的访问。
如果 (1) 和 (2) 成立,那么解决可扩展性问题就需要在多个链之间扩展对共享状态和流动性的访问。Polygon 的解决方案是聚合层(Aggregation Layer),或称为「AggLayer」。聚合层为几乎即时的跨链交易提供安全性,并实现了链间的统一状态和流动性。
本文将深入探讨聚合层是什么,它是如何工作的,以及它与共享顺序器或证明者的区别。
1、当前存在问题
L2 存在一个问题:流动性和状态在 Rollup 和 L1 之间是分散的。
从可用性的角度来看,这是不好的,因为它引入了复杂性,而且也很昂贵。流动性的分散意味着更高的滑点和执行效果更差。乐观 Rollup(OR)要求用户支付昂贵的第三方桥接费用,以避免七天的提款延迟。即使是零知识 Rollup(ZKR),用户也需要往返到以太坊进行无信任的跨链交易。
以下是目前无法实现低延迟、无信任的跨链交易的原因。
假设有两个 Rollup,ChainA 和 ChainB,它们共享与 L1 的桥接。ChainA 上的 Alice 想要向 ChainB 上的 Bob 付款,因此 Alice 在 ChainA 上锁定或销毁 Token 以进行转账到 ChainB。
ChainB 要安全地将这些 Token 归属于 Bob,需要满足两个条件:
包含 Alice 交易的批次必须在以太坊 L1 上得到最终确认。
ChainB 必须能够验证 Alice 交易后 ChainA 的状态是否有效。
如果包含 Alice 交易的批次在以太坊上没有最终确认,那么 Chain A 可能会向 Chain B 发出虚假信息,并通过在 Chain A 上保留 Alice 的资金并在 Chain B 上铸造 Bob 的资金来进行双重支付。同样,如果 Chain B 没有对 Chain A 的有效性证明进行检查,那么 Chain A 可能会包含一个无效交易,并从 Chain B 中窃取资金。
(1) 和 (2) 意味着无信任的跨链交易无法实现低延迟。(1) 目前需要 12 分钟,而 (2) 则需要等待 OR 的挑战期限和 ZKR 的几分钟来生成证明。
良好的用户体验与 20 分钟的延迟不兼容。聚合层旨在解决这个问题。
2、聚合层
Polygon 是一个采用 ZK 技术的 L2 生态系统,可以向以太坊结算。聚合层是一个去中心化协议,由质押节点操作,旨在确保跨链交易的低延迟和统一桥接的安全性。
在这种情况下,「安全性」指的是以下内容:如果一个链的状态依赖于另一个链的无效或者尚未最终确定的状态,或者包含一个在所有其他链上尚未成功执行的原子捆绑交易,那么该链的状态将无法最终确定或结算到以太坊。换句话说,如果链 A 的状态依赖于链 B 的无效或者尚未最终确定的状态,那么链 B 的状态就无法最终确定到以太坊上。
这一保证非常重要,因为它允许链 B 在链 A 的状态最终确定到以太坊上或者证明已经生成之前,以极低的延迟安全地与链 A 进行互操作。
3、聚合层的工作原理
聚合层的功能可以分为三个阶段,以下是一个例子来说明这个过程。假设链 A 是在 Polygon 生态系统中运行的一个基于零知识技术的链。
1)预确认阶段:链 A 向聚合层提交一个新区块 / 批次的头部,并提供一个轻客户端证明。头部包含了所有依赖于该区块 / 批次的其他区块和捆绑的承诺。当新批次被接受但还没有被验证为有效时,聚合层将其视为「预确认」。
2)确认阶段:链 A 或者链 A 上的任何完整节点生成一个对第一个区块的证明,并将其提交给聚合层。一旦聚合层验证了该证明,并且确认了所有依赖于第一个区块的批次,那么第一个区块就被确认了。
3)最终确定阶段:在第一个区块被确认后,它的证明与其他批次的证明一起被聚合成一个单一的证明,然后发布到以太坊。这个聚合证明确保了依赖链状态和捆绑的一致性。
链可以根据自己的需求在延迟和活性保证之间进行权衡。例如,一条链可以选择在预确认阶段之后与另一条链进行互操作,以实现超低延迟的跨链交易。但总体来说,这个设计模型与等待确认或最终确定的链是兼容的。
为了确保跨链交易的安全性,安全保证是在第三个阶段执行的。聚合层的设计通过整合证明的方式来实现安全的跨链交互。
异步互操作性
让我们以一个跨链转账的实例来说明。在 ChainA 上,Alice 希望在区块 1 中锁定或销毁一些 Token,以便将 Token 铸造并转账给 ChainB 上的 Bob。但如果 ChainB 不等待区块 1 在以太坊上得到有效证明和最终确认,那么 ChainA 可能会发出虚假信息,或者给 ChainB 提供一个无效的状态。
聚合层通过一种简单的方法解决了这个问题。ChainB 可以暂时假设区块 1 是有效的,并将在以太坊上最终确认,甚至无需等待证明。在提交给聚合层之前,ChainB 的顺序器将声称的 ChainA 状态根 1 作为区块 1 的依赖项包含在头部中(表示为根 1)。这样一来,ChainB 构建区块 1 所需的延迟从 20 分钟减少到最多几秒钟。
原子互操作性
安全机制可以扩展到原子情况。假设用户将一组原子交易提交到多个链上。这些交易是有序的,因此在 Chain A 上执行的交易结果传递给 ChainB,ChainB 的更新状态传递给 ChainC,以此类推。如果所有交易在所有链上都成功执行,那么交易包将被接受;否则,它将被拒绝。
在理想情况下,我们希望能够在不满足以下条件的情况下包含原子交易:
1)不要求 ChainB 的操作者为交易包中涉及的所有其他链运行一个完整的节点;或者
2)不依赖于共享的顺序器。
这引发了与异步情况类似的安全问题:ChainA 可能会发出虚假信息,并提交一个实际上不包含原子交易包的批次,或者向 ChainB 发送一个无效的结果。
幸运的是,异步情况下的相同机制可以在原子情况下重复使用。ChainB 承诺捆绑包并接收来自其他链的交易结果。聚合层(和证明聚合电路)检查捆绑包在各个链上的一致性。只有在捆绑包中的所有交易都成功执行时,才能在以太坊上最终确认 / 结算包含来自 Chain B 的捆绑包的批次。
跨链可组合性
聚合层通过异步跨链调用实现了超低延迟的跨链可组合性。这是一种非常强大的原语:合约可以在超低延迟下安全地调用其他链上的合约,无需等待以太坊的最终确认。用户可以通过 Polygon 上的 OKX 链入金,并在点击一次的操作中立即将资金存入另一条链上的高流动性借代市场(例如 Aave),而不需要将其换成封装的合成资产。
新兴的协调基础设施
聚合层旨在简化跨链交互,以确保安全性并提供基础设施来促进活力。链操作者可以根据他们的信任假设选择不同的协调机制,如中继、共享的证明基础设施或共享的有效性顺序器集群,以保护链免受活力问题的影响。
在 Polygon 生态系统中,链的选择和主权是优先考虑的。链可以自行修改执行环境,使用自己的 Token 进行质押和支付 gas 费用,并选择数据可用性机制。此外,链需要决定如何权衡互操作性和活力故障风险。以下是几种选择:
1)Chain B 可以选择退出快速互操作性和聚合层,直接将批次和证明提交到以太坊以避免延迟最终确认。
2)Chain B 只有在 Chain A 的状态经由聚合层确认时才接受 Chain A 的状态,只有在聚合层发出虚假信息时才会延迟。
3)Chain B 只有在聚合层预确认 Chain A 时才接受 Chain A 的状态,只有在聚合层发出虚假信息或 Chain A 无法提供证明时才会延迟。
在点对点环境中,Chain B 可以接受 Chain A 的状态,而无需检查 Chain A 是否在聚合层上预确认,只有当 Chain A 发出虚假信息或无法提供证明时才会延迟。
需要注意的是,用户不会引起活力故障,只有不端行为或故障的链才会引发问题。通过削减或剔除链的聚合层参与权,并阻止其无缝互操作能力,可以对虚假信息和提交无效区块进行严厉惩罚,因此活力故障应该非常罕见。
链可以采取额外的预防措施来最大限度地减少活力问题的风险,例如维护与其互操作的其他链的白名单或黑名单,并对参与任何批次的链的数量设置限制。它们还可以依赖第三方运行完整节点,以确保如果一条链在能够生成证明之前离线,就有备份证明者。
链之间协调接受原子捆绑包的机制也是灵活的。例如,一些链可以在共享的有效性顺序器集群中进行低延迟的互操作性,或者它们可以依赖中继机制。
通过为 Chain A 和 Chain B 同时运行完整节点,并验证每个链的状态是否有效,加密经济安全的中继器可以实现 Chain A 和 Chain B 之间的互操作性。即使 Chain A 或 Chain B 预先确认了一个新的批次然后离线,共享的证明基础设施可以介入生成一个证明。
可以想象,在 AggLayer 提供的安全基础之上,新的协调基础设施将不断涌现,实现新的、更好的互操作性和共享流动性形式。重要的是,整个 Polygon 生态系统不需要共享相同的基础设施或信任假设。它不需要在单一共享的顺序器或证明者下运行。这是相对于 ORs 的一个极其重要的优势。
4、总结
聚合层基本上让我们能够创建一个感觉上像是使用单一链的多链生态系统。它是整体和模块化论题的综合:统一的状态、流动性和可组合性,以及多链生态系统的无限可扩展性。
聚合层与共享顺序器的比较
这个愿景从根本上只适用于基于零知识的系统。我将在以后的文章中详细阐述这一点,但希望实现快速互操作性的乐观生态系统必须依赖共享顺序器。这对于链来说是个坏交易:它限制了它们重新分配顺序器费用和 MEV,共享有效性顺序器迫使链使用同质化的执行环境,并且共享顺序器在施加更高延迟的同时代表着可扩展性瓶颈。
聚合层不是一个共享顺序器。它不需要接收或处理发生在各个链上的交易,因此它不会成为可扩展性瓶颈。你可以将其大致看作是链状态或批次的共享顺序器,但每个批次可以包含的交易数量没有实际限制,因此聚合层不是一个瓶颈。
此外,跨链互操作性打破了 ORs 的一个重要属性。对于单链 ORs,任何人都可以运行一个 OR 的完整节点,并在交易发布到 L1 时立即确认交易是否有效和最终化。但在多链情况下,这不再成立——现在需要为 OR 与之互操作的每个链运行一个完整节点。
相比之下,Polygon 的愿景是链是主权的。它们可以使用任何执行环境,可以依赖任何集中化或去中心化的顺序器,并且可以自行权衡跨链延迟和活性。
这是一个与现有互联网相类似的愿景。互联网是一个具有弹性可扩展性、无需许可和统一环境的地方。同样,聚合层是可扩展和无需许可的——它对参与链没有任何限制——并且允许用户在生态系统中无缝移动资产和状态,为互联网的价值层提供统一界面。
这就是 Polygon 的未来:不是整体化的,也不是完全模块化的,而是聚合的。
确保流动性的统一的一部分是消除桥接上封装合成 Token 的可怕用户体验。Polygon 的 LxLy 桥接的用户可以在不损失同质性的情况下在链之间无缝转移资产。然而,为了安全地进行操作,我们需要防止最薄弱链接安全问题——即攻击者破坏一个链并在桥接的所有链上转移所有资金。我将在以后的文章中讨论如何做到这一点,但聚合层可以利用证明聚合步骤来强制执行链级账务,避免最薄弱链接安全问题。
当我提到原子跨链交易时,我指的是用户能够在多个链上提交一个「捆绑」或一组交易的能力。原子捆绑具有这样的特性:仅当所有交易成功执行时,相关链上的交易才会被包含在内。如果单个交易失败,捆绑将无法在任何链上被包含。
最基本的例子又是我们的跨链转移。假设 Alice 想要将 1 个 ETH 发送给 Bob,但 Alice 在 Chain A 上,而 Bob 在 Chain B 上。假设存在两个 Rollup 的共享本地桥接,Alice 可以在 Chain A 上销毁她的 ETH,并在 Chain B 上铸造 ETH 并转移到 Bob 那里。但关键是要确保她不能在没有销毁 ETH 的情况下铸造 ETH,也不能在没有铸造 ETH 的情况下销毁它——否则她可能会失去 ETH 或者在桥接中资产不足。
这就是为什么原子交易如此重要。为了允许链之间的低延迟交互,并使使用 Polygon 生态系统感觉像使用单一链,需要原子保证。
这是一个微妙的问题,但从生态系统的角度来看,聚合层提供了安全性,但从单个链的角度来看,这种设计更注重活性而不是安全性,因为 Chain B 可能依赖于来自 Chain A 的无效链状态。在这种情况下,聚合层将不接受 Chain B(由证明聚合电路强制执行),并且需要在没有对 A 的依赖的情况下构建一个新的区块。