Scroll 区块将在多步骤的过

Scroll 中的 L2 区块被生成后提交给以太坊,并按以下步骤顺序最终完成:

 

  1. 定序器的角色是生成区块。对于第 i 个区块来讲,定序器生成执行 Trace:T,并将其发送给协调器。定序器还将交易数据 D 作为 CallData 提交到以太坊的合约中,保证数据可用性以及由此生成的状态根和对 Rollup 合约的交易数据的承诺作为状态。

  2. 协调器会随机选择一个证明者为每个 Block trace 生成一个有效性证明。为了加快证明生成过程,不同区块的证明可以由不同的证明者并行生成。

  3. 在为第 i 个块生成区块证明 P 之后,证明者会将其发送回协调器。每隔 K 个区块,协调器向另一个证明者分派一个聚合任务,将 k 个区块证明聚合为一个聚合证明 A。

  4. 最后,协调器向 Rollup 合约中提交聚合证明 A,通过对先前提交给 Rollup 合约的状态根和交易数据 commitment 进行验证,最终可以确定从 i+1 到 i+k 的 L2 Block。

 

上图说明了 Scroll 区块将在多步骤的过程后在 L1 上最终完成。每个 L2 区块将经过以下三个阶段,直到最终确定:

预提交。预提交示 block 已由定序器提出并发送给证明者。尽管预提交的区块还不是 Scroll L2 链的规范部分,但是由于它们尚未发布在以太坊上,因此信任定序器的用户可以选择预期对它们采取的行动。

提交。提交表示该区块的交易数据已经发布在以太坊的 Rollup 合约上。这确保了区块的数据可用性,但不能证明它是以有效的方式执行的。 

终结。终结状态表示该区块中的交易已经被正确执行,并且通过了以太坊上的有效性证明验证。最终完成的区块被认为是 Scroll L2 链的规范部分。 二者在实现方面存在一些技术差异,。一是 Scroll 直接 fork 被广泛使用的以太坊节点实现 Geth 生成 Layer2 的区块,接近原生以太坊实现。Scroll 设计了不同的子电路来证明 Geth 执行跟踪中的每个操作码,并且更容易验证电路与原生以太坊具有完全相同的行为。而 Polygon zkEVM 则使用新的汇编语言重写每个 EVM 操作码,然后为其底层状态机生成证明。

另一个区别是,Scroll 对 zkEVM 电路和聚合电路都使用 SNARK。Polygon zkEVM 是使用 STARK 作为他们的 zkEVM 电路,并使用 SNARK 作为聚合电路来聚合 STARK 证明。