菜单

架构

相关源文件

目的与范围

本文档提供了 Base 节点架构的详细说明,展示了组件之间的关系以及数据如何在系统中流动。它描述了 Base 节点的技术结构,该节点运行在 Base 网络上——一个构建在 Optimism OP Stack 之上的以太坊 Layer 2 扩容解决方案。

有关 Base 关键概念和术语的信息,请参阅 关键概念。有关安装和设置的信息,请参阅 入门

高层架构

Base 节点包含两个主要组件,它们协同工作以运行一个功能性的 Base L2 节点。

  1. op-node - 从 L1 数据派生 L2 区块的共识客户端。
  2. 执行客户端 - 执行和验证 L2 交易(Geth、Reth 或 Nethermind)。

这些组件被打包成 Docker 容器,并通过 Docker Compose 进行编排,或者可以使用 supervisord 在单个容器中运行。

来源:README.md5-7 docker-compose.yml1-32 supervisord.conf1-19

组件详解

op-node 组件

op-node 负责

  1. 连接到以太坊 L1 节点
  2. 从 L1 数据派生 L2 区块
  3. 将派生的区块提交给执行客户端
  4. 通过 JSON-RPC API 提供同步状态和节点信息

op-node 是 Base 节点架构中的“共识客户端”,类似于以太坊有独立的共识和执行客户端。

执行客户端组件

执行客户端负责

  1. 执行 L2 交易
  2. 维护 L2 状态
  3. 暴露标准的以太坊 JSON-RPC 和 WebSocket API
  4. 连接到节点以共享数据

Base 节点支持三种执行客户端。

  • Geth
  • Reth
  • Nethermind

来源:README.md75-78 docker-compose.yml2-16 docker-compose.yml17-31

容器架构

Base 节点是一个使用 Docker 实现的容器化应用程序。支持两种主要方法:

  1. 多容器设置,使用 Docker Compose。
  2. 单容器设置,使用 supervisord。

多容器设置

在 Docker Compose 设置中,定义了两个服务:

  1. execution - 运行所选的执行客户端。
  2. node - 运行 op-node。

每个服务都基于所选客户端(Geth、Reth 或 Nethermind)从同一个 Dockerfile 构建,但运行不同的入口点脚本。

来源:docker-compose.yml1-32 README.md55-69

单容器设置

对于多容器不适用的环境(例如 Kubernetes),可以使用 supervisord 在单个容器中运行这两个服务。

来源:supervisord.conf1-19 README.md96-106

网络架构

Base 节点暴露多个网络端点用于不同目的:

  1. 用于客户端交互的 JSON-RPC API。
  2. 用于订阅式交互的 WebSocket 端点。
  3. 用于网络通信的 P2P 端口。
  4. 用于监控的指标端点。

来源:docker-compose.yml7-11 docker-compose.yml23-28 README.md80-85

数据流架构

Base 节点的数据流遵循从 L1 到 L2 的特定路径。

来源:README.md112-122

配置架构

Base 节点的主要配置通过环境变量管理,网络特定的默认值包含在 .env 文件中。

网络配置

Base 节点支持两个网络:

  • 主网
  • Sepolia (测试网)

网络配置通过 NETWORK_ENV 环境变量选择,该变量指向相应的 .env 文件。

来源:README.md48-54 README.md57-64 docker-compose.yml15-16 docker-compose.yml30-31

数据持久化

Base 节点将数据持久化到可配置的主机目录中,该目录可在 .env 文件中指定。

来源:README.md89-94 docker-compose.yml13-14

与外部系统集成

Base 节点与多个外部系统交互以正常运行。

来源:README.md57 README.md109-122