Scroll是一个EVM等效的zkRollup以太坊扩容方案,核心的模块是zkEVM,用于证明EVM在Layer2中执行的正确性。目前已经开发了一年的时间,并与以太坊基金会的隐私小组进行了深入的合作。
原文:《Scroll的技术与架构设计》
作者:Elen
Scroll近期在一级市场的表现非常好,所以我们今天来深入了解一下Scroll的技术与架构设计。
Scroll是一个EVM等效的zkRollup以太坊扩容方案,核心的模块是zkEVM,用于证明EVM在Layer2中执行的正确性。目前已经开发了一年的时间,并与以太坊基金会的隐私小组进行了深入的合作。
为了使得zkEVM变成一个完整的zkRollup,Scroll围绕zkEVM构建了一个完整的Layer2架构。
目前的架构包含了中心化的排序节点与去中心化的证明网络,但未来Scroll将会把排序节点也去中心化,使得整个网络更加健壮。
Scroll的架构
目前的Scroll架构包含三个主要的组件:
- Scroll节点:从用户交易中构建L2的区块,提交到以太坊主网,并在L1和L2之间传递信息。
- Roller网络:生成zkEVM的证明,确保交易被正确执行。
- Rollup和桥合约:为Scroll交易提供数据可用性,验证zkEVM证明,允许用户在以太坊网络和Scroll之间转移资产。
这些组件的角色关系我们可以从下图中得出:
Scroll节点
Scroll节点是应用和用户与Scroll网络交互的主要方式,Scroll节点包含了三个模块:
Sequencer(序列机)
Sequencer提供了一个JSON-RPC接口从而获得Layer2上的转账信息。每隔几秒,Sequencer会从L2的内存池中获得一系列转账记录,执行这些转账并生成新的L2区块与新的状态根。
Scroll上的Sequencer是基于经过时间验证的Geth(Go-ethereum)开发的,目的是为了保证兼容性和安全性。
Coordinator(协调器)
当新的L2区块被生成之后,Coordinator会从Sequencer中获得交易执行记录。然后Coordinator将执行记录分派到从 roller 池中随机选择的 roller 以生成证明。
Relayer(中继器)
Relayer会监视部署在以太坊和Scroll上的Rollup和桥合约,这主要有两个作用。
首先是监控Rollup合约以跟踪 L2 块的状态,包括数据可用性和有效性证明。
其次,Relayer监视部署在以太坊和 Scroll 上的桥合约的存取款事件,并将消息在两条链之间中继。
Roller网络
Rollers 在网络中充当证明者,负责为 zkRollup 生成有效性证明。Rollers 有望利用 GPU、FPGA 和 ASIC 等加速器来减少验证时间和验证成本。下图显示了 Roller 如何为每个块生成有效性证明:
- Roller 首先将从 Coordinator 接收到的执行序列转换为 circuit witnesses。
- 其次,Roller为每个 zkEVM 电路生成证明。
- 最后,Roller使用证明聚合方法将来自多个 zkEVM 电路的证明组合成一个块证明。
Rollup和桥合约
Scroll通过Rollup和桥合约来连接以太坊主网和Scoll网络,保证L2交易的数据可用性,并使用户可以在L1和L2之间转移资产。
Rollup合约从Sequencer中获取L2的状态根作为calldata。这为 Scroll 块提供了数据可用性,并利用以太坊的安全性来确保包括 Scroll Relayer 在内的索引可以重建 L2 块。一旦建立 L2 区块有效性的区块证明已被 Rollup 合约验证,相应的区块将被视为在 Scroll 上最终确定。
部署在以太坊和 Scroll 上的 Bridge 合约允许用户在 L1 和 L2 之间传递任意消息。在这个消息传递协议之上,Scroll还构建了一个去信任桥接协议,允许用户双向桥接 ERC-20 资产。
要从以太坊向Scroll发送消息或资金,用户需要在Bridge合约上调用 sendMessage。
Relayer 将在 L1 上索引,并将其发送到 Sequencer 以包含在 L2 块中。从 Scroll 发送回以太坊的消息在 L2 Bridge 合约上使用了类似的过程。
Scroll的zkRollup是如何工作的
将上述的三个模块放在一起,我们就可以知道Scroll zkRollup 的整个工作流程了,如下图所示:
Scroll 中的 L2 区块生成之后,将提交给以太坊主网,具体的过程如下:
1. Sequencer生成了一系列的块,对于第i个块,Sequencer执行追踪T,并将其发送给Coordinator。同时,Sequencer将交易数据D作为calldata提交给以太坊上的Rollup合约以获得数据可用性,再将由此产生的状态根和交易数据作为状态提交给Rollup合约。
2. Coordinator随机选择一个Roller为每个块生成有效性证明。为了加快证明的生成过程,可以在不同的Roller上并行生成不同的区块证明。
3. 在为第i个块生成证明P后,Roller将其发送回Coordinator。每隔k个块,Coordinator向另一个Roller派发一个聚合任务,将k个块的证明聚合成一个证明A。
4. 最后,Coordinator将聚合证明A提交给Rollup合约,通过对照先前提交给Rollup合约的状态根和交易数据承诺来验证聚合证明,最后确定L2上的[i+1,i+k]之间的块。
经过这样的过程Scroll上的区块会被最终确定下来,每个L2的区块在这一过程中会经历三个过程,其分别为:
- Precommitted(预确认):表示一个区块已经被Sequencer提交并发送给Rollers。
- Committed(确认):表示区块的交易数据已经被发布到了以太坊网络的Rollup合约上。
- Finalized(完成):表示此区块的交易已经被正确地执行。
综上所述,Scroll能够在L2上执行EVM字节码,同时从以太坊主网继承强大的安全性保证。这也是Scroll这种EVM等效和其他EVM兼容方案的最大不同点。