Reth 是运行 Base 节点所支持的执行客户端之一。本文档详细介绍了 Reth 的配置、构建以及如何集成到 Base 节点系统中。有关其他执行客户端的信息,请参阅 执行客户端、Geth 或 Nethermind。
Reth (Rust Ethereum) 在 Base 节点架构中用作执行层组件,当被选为客户端选项时。作为执行客户端,Reth 负责:
来源: README.md75-78
Base 节点 Reth 容器是 Dockerfile 中定义的多阶段构建。它包括:
Reth 容器是根据特定的标签版本构建的,以确保兼容性和稳定性。
| 组件 | 仓库 | 版本 | 提交哈希 |
|---|---|---|---|
| op-node | ethereum-optimism/optimism | v1.13.0 | 5f003211aed7469eed7df666291a62c025d1c46c |
| op-reth | paradigmxyz/reth | v1.3.11 | e0e85aa10b98fa92d32c3e820c7ed2cee0b02931 |
构建过程
要运行 Base 节点并使用 Reth 作为执行客户端,
此环境变量指示 Docker Compose 使用 Reth 容器配置,而不是默认的 Geth 客户端。
Reth 将其链数据存储在由 `GETH_HOST_DATA_DIR` 环境变量指定的宿主目录中(尽管名称引用了 Geth,但此目录用于所有执行客户端)。默认情况下,此变量设置为 `${PROJECT_ROOT}/geth-data`。
为了加速同步,可以在启动节点之前将快照加载到此目录中。
来源: README.md90-94
运行时,Reth 会公开几个端点:
| API | 端口 | 目的 |
|---|---|---|
| JSON-RPC | 8545 | 与 Base 区块链交互的主要 API |
| WebSocket | 8546 | 事件订阅和实时更新 |
| Engine API | 8551 | op-node 用于共识-执行客户端通信的内部 API |
通过 JSON-RPC 与 Reth 交互的示例
来源: README.md80-85
下图说明了 Reth 在操作过程中如何与其他组件进行交互:
来源: README.md112-122 reth/Dockerfile38-48
Reth 使用一个专门的二进制文件,称为 `op-reth`,它是为 Base 这样的 Optimism 兼容链特别构建的。该二进制文件包含 L2 操作和与 op-node 所期望的 Engine API 兼容性所需的优化和调整。
该二进制文件使用 `maxperf` 配置文件构建,以获得最佳性能。
在容器内部,supervisord 管理 op-node 和 op-reth 进程,确保:
执行入口脚本 (`reth-entrypoint`) 在 Reth 进程启动之前处理其初始化和配置。
Reth 用 Rust 编写,并以性能为导向。选择 Reth 作为执行客户端时,请考虑:
来源: README.md30-39
如果您遇到 Reth 客户端特有的问题,
对于持续性问题,请参阅 GitHub issues 或 Base Discord 频道(如 Base Node 文档中所述)。