来源:Scroll 编译:金色财经xiaozou
编者按:近日市场传闻zkEVM解决方案Scroll主网即将上线。Scroll2023年10月10日在推特上发布世界语内容“La estonteco estas malfermita”(未来是开放的),或也在暗示其主网即将上线。
Scroll团队此前曾经发文介绍Scroll架构,金色财经xiaozou翻译以犒读者。
Scroll是一个用于扩展以太坊的与EVM等效的zkRollup。从技术上讲,Scroll基于两个重要部分构建。核心部分是zkEVM,用于证明L2 EVM执行的正确性。一年多来,我们一直在与以太坊基金会的PSE(隐私和扩展探索)团队一起公开进行Scroll建设。但是,为了将zkEVM转变为一个十足的以太坊上的zkRollup,我们还需要围绕它构建一个完整的L2架构。
本文,我们将概述Scroll的整体架构。更具体地说,我们将介绍Scroll的初始版本,其由中心化排序节点和去中心化证明网络组成。我们致力于在未来将排序节点集去中心化,在以后的文章中我们会分享相关设计。
1、Scroll架构
当前的Scroll架构包含三个基础设施组件(参见图1):
· Scroll节点:在用户交易中构建L2块,再将它们提交到以太坊基础层,并在L1和L2之间进行消息传递。
· Roller网络:生成zkEVM有效性证明,以证明交易被正确执行。
· Rollup和桥合约:为Scroll交易提供数据可用性,验证zkEVM有效性证明,并支持用户在以太坊和Scroll之间转移资产。
在接下来的内容中,我们将详细介绍各组件的作用。
(1)Scroll节点
Scroll节点是应用程序和用户与Scroll交互的主要方式。它由三个模块组成:Sequencer(排序器)、Coordinator(协调器)和Relayer(中继器)。
Sequencer提供了一个JSON-RPC接口并接受L2交易。每隔几秒钟,它就从L2内存池中检索一批交易,并执行这些交易以生成一个新的L2块和一个新的状态根。我们的排序器部署基于的是Go-Ethereum(Geth),这是比较流行的以太坊节点实现方式。通过对Geth进行分叉,我们可以获得最佳的兼容性,并继承经受住了时间考验的安全性。
一旦生成了一个新的区块,Coordinator就会收到通知,并从Sequencer接收该块的执行踪迹。然后,它将执行踪迹分派给从roller池中随机选择的Roller,以生成证明。
Relayer监视部署在以太坊和Scroll上的桥和rollup合约。它有两个主要职责。首先,它监视rollup合约,以跟踪L2块的状态,包括它们的数据可用性和有效性证明。其次,它监视部署在以太坊和Scroll上的桥合约中的存取款事件,并将消息从一方转发给另一方。
(2)Roller网络
Roller在网络中充当prover角色,负责为zkRollup生成有效性证明。Roller应利用GPU、FPGA和ASIC等加速器来缩短验证时间、降低验证成本。图2显示了Roller是如何为各区块生成有效性证明的。这个过程包括以下步骤:
· Roller首先将从Coordinator那里接收到的执行踪迹转换为电路见证。
· 它为各zkEVM电路生成证明。
· 最后,它使用证明聚合将来自多个zkEVM电路的证明组合成单个区块证明。
(3)Rollup和桥合约
Scroll通过Rollup和桥智能合约连接到以太坊基础层。它们共同确保了L2交易的数据可用性,并让用户可以在L1和L2之间传递资产和消息。
Rollup合约从Sequencer那里接收L2状态根和区块。它将状态根存储在以太坊状态和L2区块数据中,作为以太坊调用数据。这为Scroll区块提供了数据可用性,并利用了以太坊的安全性来确保包括Scroll Relayer在内的索引器可以重建L2块。一旦建立L2区块有效性的区块证明经Rollup合约验证,相应的区块就被视为在Scroll上最终完成了。
部署在以太坊和Scroll上的桥合约支持用户在L1和L2之间传递任意消息。在此消息传递协议之上,我们还构建了一个无需信任的桥接协议,支持用户双向桥接ERC-20资产。为了从以太坊向Scroll发送消息或资金,用户将调用桥合约上的sendMessage交易。Relayer将在L1上索引此交易,并将其发送到Sequencer以包含在L2块中。在L2桥合约上将消息从Scroll发送回以太坊也使用了类似的过程。
2、Scroll zkRollup的工作流程
将这三个架构组件放在一起,我们现在就可以解释Scroll zkRollup的工作流程了,如下图所示。
Scroll中的L2块生成,然后提交到以太坊基础层,并按以下步骤获得最终确定性:
· Sequencer生成区块序列。对于第i个区块,Sequencer生成执行踪迹T并将其发送给Coordinator。同时,它还将交易数据D作为调用数据提交给以太坊上的Rollup合约,以获得数据可用性,并将生成的状态根和对交易数据的承诺作为状态提交给Rollup合约。
· Coordinator随机选择一个Roller来为各区块踪迹生成有效性证明。为了加快证明生成过程,不同区块的证明可以在不同的Roller上并行生成。
· 在为第i个区块生成区块证明P之后,Roller将其发送回Coordinator。每k个区块后,Coordinator将向另一个Roller分配一个聚合任务,将k个区块证明聚合为单个聚合证明A。
· 最后,Coordinator将聚合证明A提交给Rollup合约,通过对先前提交给Rollup合约的状态根和交易数据承诺验证聚合证明,最终确定i+1到i+k之间的L2区块。
上图显示了Scroll区块将通过多个步骤在L1上实现最终确定性。每个L2区块在最终完成前将通过以下三个阶段。
· Precommitted(预提交)阶段表示一个区块已被Sequencer提议并发送给Rollers。虽然预提交区块还不是Scroll L2链的规范内容,因为它们还没有发布在以太坊基础层上,但信任Sequencer的用户可以选择对它们采取预期行动。
· Committed(已提交)阶段表示该区块的交易数据已发布到以太坊的rollup合约上。这确保了区块数据是可用的,但不能证明它是以有效的方式执行的。
· Finalized(最终确定)阶段表示该区块中交易的正确执行已通过验证以太坊链上的有效性证明得以证明。最终确定的区块将被视为是Scroll L2链的规范组成部分。
将所有这些结合在一起,Scroll就能够在L2上执行原生EVM字节码了,同时还继承了基础层以太坊的强大安全保障。