本文将介绍由中心化排序节点和去中心化证明网络组成的 Scroll 的初始版本。
原文标题:An overview of Scroll's architecture
原文作者:Scroll
原文来源:Mirror
编译:Xiang,W3.Hitchhiker
Scroll 是一个 EVM 等效的 zkRollup,用于扩展以太坊。从技术上讲,Scroll 是建立在两个主要部分之上的。核心部分是 zkEVM,用于证明 2 层 EVM 执行的正确性。一年多来,我们一直在与以太坊基金会的隐私和扩展探索小组(PSE)一起公开构建它。但是要将 zkEVM 变成以太坊上的一个完整的 zkRollup,我们还需要围绕它构建一个完整的 L2 架构。
在这篇文章中,我们将概述 Scroll 的整体架构。更具体地说,我们将介绍由中心化排序节点和去中心化证明网络组成的 Scroll 的初始版本。我们致力于在未来实现去中心排序节点集,并将在未来的文章中分享我们的设计。
当前架构由三个基础设施组件组成(参见图 1):
在下文中,我们将详细介绍这些组件中的每一个的作用。
(图 1:Scroll 的架构)
Scroll 节点是应用程序和用户与 scroll 交互的主要方式,里面包括了三个模块:Sequencer(排序器),Coordinator(协调者),Relayer(中继者)。
排序器提供 JSON-RPC 接口并接受 L2 交易,每几秒钟就会从内存池里面检索一批交易来执行,生成新的 L2 区块和新的状态根,新的区块会通知到协调者,同时也会发送新区块的执行追踪,协调者就会从 roller 池中随机挑选 roller 来给区块生成证明。排序器实现基于 Go-Ethereum (Geth),它是最流行的以太坊节点实现之一。通过分叉 Geth,我们可以实现最佳兼容性,并继承了经受住长时间考验的安全性。
一旦生成了一个新的区块,协调者就会收到通知,并从排序器接收这个区块的执行跟踪。然后它将执行跟踪(execution trace)分派给从 Roller 池中随机选择的 Roller 以生成证明。
中继者监视部署在以太坊和 Scroll 上的 Rollup 合约和桥合约。有两个主要职责,第一个是通过监控 rollup 合约来追踪二层区块的状态,包括数据可用性和有效性证明,第二个是监视部署在以太坊和 scroll 上的桥接合约的存取款事件,并且将这些消息从一端中继到另一端。
Roller 网络中的roller充当的是证明者的角色,负责为zkrollup生成有效性证明。Rollers 预计将利用 GPU、FPGA 和 ASIC 等硬件加速来减少验证时间和验证成本。图 2 显示了 Roller 如何为每个区块生成有效性证明。该过程包括以下步骤:
(图 2:Scroll 的工作流程)
Scroll 是通过 Rollup 合约和桥合约连接到以太坊基础层。这些共同确保了 L2 交易的数据可用性,并允许用户在 L1 和 L2 之间传递资产和消息。
Rollup 合约从排序器那里接收 L2 状态根和区块,状态根储存在以太坊状态中,二层区块数据会作为以太坊的 calldata 保存,这是为 scroll 的区块提供了数据可用性,并利用以太坊的安全性来确保包括 Scroll Relayer 在内的索引器可以重建 L2 块。一旦 rollup 合约验证了 L2 区块的有效性证明,就表示这个区块在 scroll 上完成。
桥合约在以太坊和 scroll 上部署,允许用户在 L1 和 L2 之间传递消息,在这个消息传递之上,还要建立无需信任的桥接协议,让用户在两端都可以转移 ERC-20 资产。比如用户从以太坊发送消息或者资产到 Scroll 上,用户在桥合约上可以调用 SendMessage 这个交易,中继者就会索引到这个交易,把它发送到排序器,包含在 L2 区块中,反过来从 Scroll 发送到以太坊上,合约和过程也是类似的。
将这三个架构组件放在一起,我们现在可以解释 Scroll 的 zkRollup 的工作流程,总结在下面的图 3 中。
(图 3:Scroll 的工作流程)
二层的区块是在 scroll 上生成的,提交到以太坊的基础层到确认之前,会经过下面几个步骤:
图 3 说明了 Scroll 区块将在 L1 上以多步骤过程完成。每个 L2 区块将通过以下三个阶段进行,直到最终确定。
将所有这些放在一起,Scroll 能够在 L2 上执行本机 EVM 字节码,同时从基础层以太坊继承强大的安全保证。在本系列的下一篇文章中,我们将解释开发人员在 Scroll 上部署 dapp 的工作流程以及用户如何与之交互。