Rollup节点规范

ethereum-optimism 发布于 2024-01-23 阅读 1144

本文档是 Rollup 节点规范,Rollup 节点负责从 L1 区块(及其关联的收据)中导出 L2 链。文档详细介绍了 Rollup 节点中驱动程序的设计、功能,包括从L1链选择输入,生成payload attributes,并传递给执行引擎以计算L2区块,还包括L2输出RPC方法,以及协议版本追踪。

Rollup 节点规范

<!-- 此文件中的所有术语表引用。 --> [g-rollup-node]: glossary.md#rollup-node [g-derivation]: glossary.md#L2-chain-derivation [g-payload-attr]: glossary.md#payload-attributes [g-block]: glossary.md#block [g-exec-engine]: glossary.md#execution-engine [g-reorg]: glossary.md#re-organization [g-rollup-driver]: glossary.md#rollup-driver [g-receipts]: glossary.md#receipt

[Rollup 节点][g-rollup-node]是负责从 L1 区块(及其相关的[收据][g-receipts])[推导 L2 链][g-derivation]的组件。

rollup 节点中推导 L2 链的部分称为 [rollup 驱动程序][g-rollup-driver]。本文档目前仅关注 rollup 驱动程序的规范。

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> 目录

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

驱动程序

[rollup 节点][g-rollup-node]中[驱动程序][g-rollup-driver]的任务是管理[推导][g-derivation]过程:

  • 跟踪 L1 头区块
  • 跟踪 L2 链同步进度
  • 当新输入可用时,迭代推导步骤

推导

这个过程分三个步骤进行:

  1. 从 L1 链中选择输入,在最后一个 L2 区块之上: 一系列区块,包含交易和相关数据及收据。
  2. 读取 L1 信息、存款和排序批次,以便生成 [payload attributes][g-payload-attr](本质上是[没有输出属性的区块][g-block])。
  3. 将 payload attributes 传递给[执行引擎][g-exec-engine],以便可以计算 L2 区块(包括[输出区块属性][g-block])。

虽然从概念上讲,这个过程是从 L1 链到 L2 链的纯函数,但实际上它是增量的。每当将新的 L1 区块添加到 L1 链时,L2 链就会扩展。同样,每当 L1 链[重组][g-reorg]时,L2 链也会重组。

有关 L2 区块派生的完整规范,请参阅 L2 区块派生文档

L2 输出 RPC 方法

rollup 节点有自己的 RPC 方法 optimism_outputAtBlock,它返回一个 32 字节的哈希值,对应于 L2 输出根

输出方法 API

此处的输入和返回类型由 engine API specs 定义。

  • 方法:optimism_outputAtBlock
  • 参数:
    1. blockNumber: QUANTITY,64 位 - L2 整数区块号。
  • 返回:
    1. version: DATA,32 字节 - 输出根版本号,从 0 开始。
    2. l2OutputRoot: DATA,32 字节 - 输出根。

协议版本跟踪

rollup-node 应该通过监视 L1 上的协议版本合约来监视推荐的和要求的协议版本,如 Superchain Version Signaling specifications 中指定的。

这可以通过在Driver循环中轮询来实现。 在轮询协议版本之后,rollup 节点 应该 通过 engine_signalSuperchainV1 调用将其与执行引擎通信。

当推荐版本比 rollup 节点支持的当前版本新时,rollup 节点 应该 警告用户。

如果 rollup 节点不满足要求的协议版本,则 应该 采取安全预防措施。 这可能包括在 rollup 节点运营商同意的情况下停止引擎。

  • 原文链接: github.com/ethereum-opti...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论