菜单

Nethermind

相关源文件

概述

本文档提供了关于Base Node系统中Nethermind执行客户端的详细说明。Nethermind是支持的三种执行客户端之一(另外两种是Geth和Reth),可用于运行Base节点。本文涵盖了Nethermind的配置、容器结构以及特定于Base Node的使用细节。

有关执行客户端的一般信息,请参阅执行客户端。有关其他支持的客户端的信息,请参阅GethReth

来源:README.md75-78

架构

Nethermind充当Base Node的执行层,提供EVM执行能力,与op-node组件协同工作。在Base Node系统架构中,Nethermind作为执行客户端,根据从op-node接收到的数据,处理Base L2区块链的交易和状态变更。

来源:README.md55-85 nethermind/Dockerfile1-52

容器结构

Base Node中的Nethermind容器包含Nethermind执行客户端和op-node组件,由supervisord管理。该容器使用多阶段Dockerfiles构建,首先从Optimism仓库构建op-node,然后从官方Nethermind仓库构建Nethermind。

来源:nethermind/Dockerfile18-52

构建Nethermind

Nethermind Docker镜像使用Dockerfile中定义的多阶段构建过程进行构建。该镜像基于op-node和Nethermind的特定版本,以确保兼容性。

  • op-node:版本v1.12.1(提交d3b8eadd80457c74d9c4251948ac11e8d14a9c9c)
  • Nethermind:版本1.31.0(提交a7337ba9e29a5e9384c7dfad72be6c7ab576d907)

构建过程包括

  1. 第一阶段从源码构建op-node
  2. 第二阶段从源码构建Nethermind
  3. 创建包含两个二进制文件和必要脚本的最终镜像

来源:nethermind/Dockerfile1-52

配置

Nethermind执行客户端通过nethermind-entrypoint脚本进行配置,该脚本设置环境并使用适当的参数启动Nethermind。

关键配置参数

参数描述默认值
NETHERMIND_DATA_DIR存储Nethermind数据的目录/data
NETHERMIND_LOG_LEVELNethermind的日志级别Info
NETWORK要连接的网络(mainnet或sepolia)mainnet
RPC_PORTJSON-RPC API端口8545
WS_PORTWebSocket API端口8546
AUTHRPC_PORTEngine API端口(用于op-node通信)8551
METRICS_PORTMetrics端点端口6060
DISCOVERY_PORTP2P发现端口30303
JWT_SECRET_FILEJWT密钥文件的路径/tmp/jwt/jwtsecret

来源:nethermind/nethermind-entrypoint4-16

命令行参数

在Base Node系统中运行Nethermind时,使用以下命令行参数:

./nethermind \
    --config="$OP_NODE_NETWORK" \
    --datadir="$NETHERMIND_DATA_DIR" \
    --Optimism.SequencerUrl=$OP_SEQUENCER_HTTP \
    --log="$NETHERMIND_LOG_LEVEL" \
    --JsonRpc.Enabled=true \
    --JsonRpc.Host=0.0.0.0 \
    --JsonRpc.WebSocketsPort="$WS_PORT" \
    --JsonRpc.Port="$RPC_PORT" \
    --JsonRpc.JwtSecretFile="$OP_NODE_L2_ENGINE_AUTH" \
    --JsonRpc.EngineHost=0.0.0.0 \
    --JsonRpc.EnginePort="$AUTHRPC_PORT" \
    --HealthChecks.Enabled=true \
    --Metrics.Enabled=true \
    --Metrics.ExposePort="$METRICS_PORT"

来源:nethermind/nethermind-entrypoint48-63

可选配置

Nethermind在Base Node环境中支持额外的配置选项。

  • 自定义引导节点:设置OP_NETHERMIND_BOOTNODES来指定自定义引导节点。
  • EthStats集成:通过OP_NETHERMIND_ETHSTATS_ENABLED启用,并通过OP_NETHERMIND_ETHSTATS_ENDPOINT配置端点。

来源:nethermind/nethermind-entrypoint35-45

用途

运行Nethermind作为执行客户端

要使用Nethermind作为执行客户端运行Base节点,可以使用Docker Compose中的CLIENT环境变量。

此命令将构建并启动Base节点,以Nethermind作为执行客户端。

来源:README.md72-78

持久化数据

默认情况下,数据目录存储在${PROJECT_ROOT}/geth-data。您可以修改.env文件中的GETH_HOST_DATA_DIR变量的值来覆盖它。此目录将被挂载到Nethermind容器中NETHERMIND_DATA_DIR指定的位置。

来源:README.md91-92

同步

同步速度取决于您的L1节点,因为大部分链数据都来自提交到L1的数据。您可以使用op-node容器上的optimism_syncStatus RPC来检查您的同步状态。

来源:README.md114-122

监控和指标

Base Node系统中的Nethermind提供了几个用于监控和收集指标的端点。

  1. JSON-RPC API:默认在8545端口可用。
  2. WebSocket API:默认在8546端口可用。
  3. Metrics端点:默认在6060端口可用。
  4. 运行状况检查:默认启用。

Metrics端点公开Prometheus格式的指标,可供监控系统抓取。

来源:nethermind/nethermind-entrypoint54-62

与标准Nethermind的区别

在Base Node系统中,Nethermind包含特定的优化和配置,以与Optimism OP Stack协同工作。

  1. Optimism Sequencer URL:通过--Optimism.SequencerUrl参数配置。
  2. Engine API:配置为与op-node组件通信。
  3. JWT认证:用于op-node和Nethermind之间的安全通信。

这些修改确保Nethermind能够在Base L2环境中作为执行客户端正常运行。

来源:nethermind/nethermind-entrypoint51-52