为何及如何解耦乐观 Rollup 的 SVM 执行层

  • Soon SVM
  • 更新于 2024-09-25 09:41
  • 阅读 232

为何及如何解耦乐观 Rollup 的 SVM 执行层

介绍

模块化区块链的流行导致了多样化的 L2 区块链组件,其中使用 SVM (Solana VM) 作为执行层引起了极大关注。SVM 账户模型将计算逻辑和状态分离,这对于并行执行非常有利。这使得 SVM 具有成为高性能执行层的巨大潜力。目前,一些项目已经提出了自己的技术架构,但这些解决方案大多是高层设计,因为它们没有具体说明如何从 L1 派生 L2 区块,也没有说明排序器如何将派生管道(derivation pipeline )与 SVM 执行器集成。关于欺诈证明,这些提案主要关注如何挑战 SVM 的计算正确性,但没有解决派生管道和强制包含的挑战。这使得排序器能够对存款交易进行审查攻击而不受挑战。

为了解决上述问题,本文提出了一种以 SVM 作为执行层的 Optimistic Rollup 解决方案。派生层基于 Optimism 设计,而 SVM 执行层基于 Anza 提出的新 SVM API。为了将派生管道与 SVM 执行器集成,我们解耦了 Solana TPU(交易处理单元)流程,仅保留了 SigVerifyStage、BankingStage、SVM 执行器和 Entry 组件,同时移除了原始的 Solana 共识层。这使得单一的欺诈证明能够同时挑战派生管道和 SVM 执行的正确性,为 L2 的完整状态转换提供了安全保障。此外,解耦使 SVM 执行层更加轻量化,并且结合 SIMD83,更容易实现排序器的水平扩展,从而显著提高交易处理能力。

Optimistic Rollup 概述

在本节中,我们将首先讨论 Optimistic Rollup 的基本技术架构。本文主要以 Optimism 的设计为例,因为 OP Stack 是一种广泛使用的 Optimistic Rollup 技术栈,拥有丰富的文档。

来源: OP Stack 文档

如上图所示,Optimistic Rollup 由 op-node、op-geth、op-batcher 和 op-proposer 等组件组成。排序器节点(op-geth + op-node)收集用户提出的交易。op-batcher 将批量数据提交到 L1,控制安全区块并最终控制规范链(canonical chain)。op-proposer 将输出根提交到 L1,控制 L2 到 L1 的消息传递。

Rollup 链与主权链的一个关键区别在于,Rollup 链不生成区块空间。Rollup 链不需要分布式共识算法,如 PBFT 来决定区块的生成,这意味着 Rollup 链不需要类似于主权链的共识层。(请注意,去中心化排序器是一个单独的话题,旨在解决单点故障和排序器审查攻击问题,而不是生成区块空间。)L2 旨在更有效地利用 L1 区块空间,L2 是 L1 之上的一个特殊记账程序。所有 L2 区块都来自派生层。

派生管道(Derivation Pipeline)

派生管道是 Rollup 链派生区块的过程,与主权链有显著不同。这个过程确保 L2 区块从 L1 区块派生,所有 L1 存款交易都保证包含在 L2 区块中以满足强制包含要求。派生层需要与 SVM 执行层一起编译到挑战程序中。如果排序器在派生管道过程中恶意行为,可以通过欺诈证明进行挑战。

除了订阅 L1 上的存款交易和区块信息外,排序器还需要打包 L2 交易,这是 L2 的本质。L2 交易有两个来源:一个是来自 L2 p2p 网络,另一个是来自 DA 层。对于排序器来说,所有 L2 交易都来自 p2p 网络,这意味着它是从其他 RPC 节点中继的。排序器需要打包、执行这些 L2 交易,然后将区块发送到 DA 层。对于验证者来说,L2 区块(由排序器排序和打包的交易)通常首先来自 p2p 网络,以便验证者能够跟上 L2 网络的最新状态。同时,验证者还不断订阅 DA 层并重新验证处理的区块是否与 DA 层一致。如果验证者发现排序器行为不端,可以直接使用 DA 数据生成欺诈证明。

让我们看看 Optimism 如何集成派生层和执行层。在讨论这个话题之前,我们需要先了解以太坊的架构演变。在最初的设计中,以太坊客户端的共识层(POW)和执行层(EVM)是集成在一起的,即 Geth。在 The Merge 之后,以太坊客户端分为两部分:Beacon 节点和 Geth,使用 Engine API 解耦共识层和执行层。

Optimism 采用了这种已经解构的架构,用 Op 节点替代 Beacon 节点,并使用派生层代替以太坊共识层。

通过这种方式,Optimism 完成了派生层和执行层的集成,然后可以进行整个派生管道工作,即打包存款交易和 L2 负载,然后执行交易。

现在让我们看看如何使用 SVM 作为执行层。Anza 团队最近定义了 SVM 规范并发布了新的 SVM API,提供了整个 SVM 生态系统可以对齐的标准。然而,要获得具有并行执行能力、账本存储和全局账户状态的 SVM 执行层,仅有一个独立的 SVM 引擎是不够的。我们还需要解构 Solana/Agave 验证器的 TPU 过程,其中包括 Banking、Entries、Shreds、Blockstore 等组件。

解耦的 SVM 执行层

让我们首先看看 Solana 验证器的解剖结构。

来源: Solana 文档

Solana 是一个以速度和效率著称的高性能单片区块链。它采用 Tower BFT 作为共识机制,并使用历史证明(PoH)生成时间证明。此外,Solana 利用流水线架构进行无缝处理,包括 TPU(交易处理单元)和 TVU(交易验证单元)等组件,以及 Gulf Stream 优化交易转发。计划的交易执行和 Turbine 数据传播也是其设计的组成部分。

然而,当考虑到 Rollup 链时,Solana 架构的某些元素可以省略。具体来说,Rollup 链不需要 Tower BFT 共识层(包括用于区块生产的投票交易)或用于生成时间证明的 PoH。相反,应该专注于解耦一个迷你 TPU 和类似 Gulf Stream 的交易转发协议,这些可以与计划的交易执行和 Turbine 结合。这些组件应与派生层集成,以完成整个派生管道。

我们为 Rollup 的基本流程定义了一个接口层。通过这些定义明确的接口,我们可以轻松实现一个足够灵活的 Rollup 框架,以支持不同的共识机制和各种 L1 链。此外,我们可以利用 Solana 的高性能框架来增强任何 L2 解决方案。

以下是使用 traits 定义接口的一些示例:

为了帮助大家更好地理解我们的架构,让我们走一遍 L2 区块生产的过程,这将展示我们的基本处理工作流程。L2 区块生产是一个涉及多个步骤的复杂过程。以下是该过程的高级概述:

  1. 派生:我们获取最新的 L1 区块,解析我们感兴趣的信息(Header,Deposit Transactions,DA Batch 信息等),并将它们存储在由 PayloadAttribute trait 实现的结构中。
  2. 打包:我们将 PayloadAttribute 和从交易流(由 L2 客户端提交)收集的普通交易打包到由 BlockPayload trait 实现的结构中。
  3. 传输:我们将 BlockPayload 发送到 Engine,即实现 EngineAPI 接口的内核模块,并在底层使用 SVM 执行交易。
  4. 生产:Engine 模块根据 BlockPayload 生成一个区块并将其添加到 L2 区块链中,它还将处理重组和最终确定。

以下是一个说明 L2 区块生产基本过程的流程图:

基于上述设计,我们开源了一个名为_Igloo_的教育项目。它展示了如何解耦 SVM 执行层以及如何将该 SVM 执行层集成到派生管道中。

https://github.com/soonlabs/igloo

解耦的好处

通过解耦 SVM 执行层,我们可以构建一个真正的 Optimistic Rollup,其中包括必要的派生管道。更重要的是,这种架构使欺诈证明的实现更加自然。通过将派生层与 SVM 执行层集成,欺诈证明可以同时确保从 L1 到 L2 的消息传递和 L2 上的交易执行(状态转换)的正确性。

图中红色箭头所代表的过程都可以被挑战。这确保了派生规则必须正确执行,例如强制包含,从而保证整个 Rollup 链的安全性。

此外,通过结合 SIMD83 和新的调度器,我们可以将交易执行任务分配到消息队列中,使用生产者-消费者模型进行分布式水平扩展。通过引入更多的 SVM 执行器,我们可以进一步增强 Sealevel 架构的并行处理能力,从而实现更高的 TPS。我们将在后续文章中详细讨论这一特性。

总结

本文探讨了在 Optimistic Rollups 背景下实现解耦 SVM 执行层的必要性和方法。我们首先研究了 Optimistic Rollups 的经典架构,强调了将派生层与执行层集成对于 Rollup 链的重要性。

通过开源教育项目_igloo_作为案例研究,我们展示了如何从 Solana 验证器中提取一个轻量级的 SVM 执行层。它通过促进欺诈证明的更自然实现,支持创建一个真正的 Optimistic Rollup。这些证明可以同时验证从 L1 到 L2 的消息传递和 L2 上的交易执行的正确性。

我们还简要提到了未来的增强措施,以提高交易处理速度和吞吐量。这项工作有助于在 Solana 生态系统中开发更高效和可扩展的 L2 解决方案。

致谢

Yi Liu, Nazreen Mohamad

参考文献

https://docs.optimism.io/builders/chain-operators/architecture

https://specs.optimism.io/protocol/fjord/derivation.html

https://specs.optimism.io/fault-proof/index.html

https://docs.solanalabs.com/validator/anatomy

https://docs.solanalabs.com/validator/tpu

https://medium.com/solana-labs/gulf-stream-solanas-mempool-less-transaction-forwarding-protocol-d342e72186ad

https://medium.com/solana-labs/proof-of-history-a-clock-for-blockchain-cf47a61a9274

https://medium.com/solana-labs/sealevel-parallel-processing-thousands-of-smart-contracts-d814b378192

https://www.anza.xyz/blog/anzas-new-svm-api

https://github.com/soonlabs/agave/blob/master/svm/doc/spec.md

我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Soon SVM
Soon SVM
SOON Stack is an SVM framework that allows for any SVM L2 to be deployed on any L1