Euclid Upgrade
概览
此次升级包含五个主要变化:
- 迁移至 OpenVM Prover。
- 迁移至 MPT 状态承诺。
- 优化 Rollup 处理流程。
- 支持 EIP-7702 与 RIP-7212。
- 达成 Stage-1 阶段准备。
这些变化将带来更低的费用、更高的吞吐量、更强的安全性、更好的兼容性,以及 Scroll 用户与开发者能享受到的更多先进功能。
时间线
- Scroll Sepolia
- 阶段一:2025 年 3 月 11 日
- 阶段二:2025 年 3 月 13 日
- Scroll 主网
- 阶段一:2025 年 4 月 16 日
- 阶段二:2025 年 4 月 22 日
功能详情
OpenVM Prover
Scroll 是 EVM 字节码兼容的 halo2 zkEVM 的早期先驱之一。随着 ZK 技术的快速发展,通用的 RISC-V zkVM 现在也变得可行。在 Euclid 升级中,我们将弃用 halo2 电路,转向构建于 OpenVM 之上的新 Prover。
新的 OpenVM Prover 带来诸多好处. 代码更易于理解与审计;可在多个模块中复用代码;可大幅降低证明成本与延迟;还支持验证任意复杂交易,从而取消限制 sequencer 吞吐量的电路容量检查器模块。
MPT 状态承诺
目前 Scroll 使用的是 zk 友好的状态承诺结构 zktrie。通过 OpenVM prover,现在可以实际地证明 Ethereum 的状态结构:Merkle-Patricia Trie (MPT)。因此我们将弃用 zktrie,改为采用 MPT。
MPT 能提升 sequencer 性能,并为依赖 L2 状态证明的 dApp 提供更好兼容性。
优化的 Rollup 处理流程
Euclid 将推出一系列优化,显著降低数据可用性(DA)开销,从而为用户带来更低的费用。
关键优化包括:
- 将 blob 验证从合约代码转移到 zk 电路中;
- 摊销消息队列提交成本;
- 将 L2 区块头数据从 calldata 转移到 blobs;
- 在单笔交易中提交多个 blobs。
预计整体可将批次提交成本减少高达 90%。
此外,Scroll L2 节点将弃用当前的 Clique(基于权威证明的共识机制),转为从 L1 的系统配置合约中读取 L2 区块签名者权限。
强大的智能账户
Euclid 将支持 EIP-7702 与 RIP-7212。这与 Ethereum 的 Pectra 升级 保持一致,确保了高度兼容性。这些功能也为用户与开发者带来全新体验:如为现有账户添加智能合约功能、使用 passkey 授权签名、享受新标准所带来的 UX 改进。
Stage-1 阶段
Euclid 引入了关键的安全机制,使 Scroll 可达到由 L2BEAT 定义 的 Stage-1 阶段。
- 强制交易纳入机制可提升抗审查能力。用户可直接通过 L1 发送交易,强制 sequencer 将其包含。
- 无许可批次提交机制防止活性故障。在极少数情况下,若 sequencer 停止提交或完成批次,任何人都可接管操作。
这些机制强制 sequencer 履行职责,提供重要的安全保障。
此外,Scroll 已将控制权交由 安全委员会,由 12 名声誉良好的成员组成,采用 9/12 多签机制。Euclid 将是安全委员会执行的第一个升级。
节点运营商
第一阶段更新
- 节点运营商需迁移至新的 MPT 版本 l2geth。这需要完全重新同步(从网络或快照开始)。稍后我们将发布节点版本和快照。请查看 节点状态迁移指南。
- zktrie 节点将继续运行,但将不再验证区块头中的状态根。建议在 Euclid 升级前迁移至 MPT 节点。
第二阶段更新
- 节点运营商需知悉第一阶段引入的“无需许可的批次”。尽管不太可能在实际中触发,一旦触发将需要手动恢复操作。我们将在下个节点版本中提供详细文档。
Dapps 与索引器
第一阶段更新
- 状态承诺结构从 zktrie 切换为 MPT。
- 所有依赖 zktrie 证明的 Dapp 需迁移至 MPT。
- 批次版本为 v5 和 v6(与 v4 格式相同)。
第二阶段更新
- 批次头和 blob 数据将采用新的编码格式(批次版本 v7)。
- 批次承诺 calldata 将不再包含区块头。需要此信息的项目应从 L1 获取并解码 blob。
- 一笔交易可能包含多个批次。索引器需支持处理同一 L1 交易中的多个批次。
- 在无需许可模式中,使用
commitAndFinalizeBatch
一步原子提交并终结批次。 - 函数签名更新如下:
- 升级前:
commitBatchWithBlobProof
、finalizeBundleWithProof
、revertBatch
- 升级后:
commitBatches
、finalizeBundlePostEuclidV2
、commitAndFinalizeBatch
、revertBatch
- 升级前:
committedBatches
数组将变得稀疏。- 消息队列合约迁移为
L1MessageQueueV2
,其消息哈希方式不同。 - 不安全的 L2 区块不再包含签名或自定义标记(
ExtraData
字段)。