跳转到内容

自建以太坊节点

自建以太坊节点

本页内容正在整理中,欢迎贡献

概述

自建节点是以太坊去中心化的基石,也是不依赖第三方 RPC 服务商的最佳方式。以太坊合并后,运行节点需要同时运行执行层客户端(EL)共识层客户端(CL),两者通过 Engine API 协同工作。

主要内容

节点类型

类型描述磁盘需求适合场景
全节点(Full)验证所有区块,存储近期状态~1.5 TB大多数开发者
归档节点(Archive)存储所有历史状态~20 TB+需要历史数据的应用
轻节点(Light)仅验证区块头~几 GB资源受限设备
验证者节点全节点 + 验证者客户端~1.5 TB质押 32 ETH 的参与者

硬件推荐配置

最低配置(全节点):
CPU: 4 核心
RAM: 16 GB
磁盘: 2 TB NVMe SSD(推荐 4 TB)
网络: 25 Mbps 稳定连接,上行 ≥ 5 Mbps
推荐配置:
CPU: 8 核心(Intel i7 / AMD Ryzen 7 级别)
RAM: 32 GB
磁盘: 4 TB NVMe SSD
网络: 100 Mbps 对称带宽

客户端选择

执行层客户端(EL):

客户端语言特点
GethGo最流行,稳定,生态最广
NethermindC#高性能,归档节点优化
BesuJava企业级,许可链支持
RethRust最新,性能出色,同步快
ErigonGo磁盘效率高,归档节点首选

共识层客户端(CL):

客户端语言特点
LighthouseRust高性能,低资源占用
PrysmGo最流行,文档完善
TekuJava企业级,ConsenSys 维护
NimbusNim轻量级,嵌入式设备支持
LodestarTypeScriptJS 生态友好

推荐使用少数派客户端(非 Geth/Prysm),有助于提升网络的客户端多样性。

安装教程(Geth + Lighthouse,Docker 方式)

Terminal window
# 创建数据目录
mkdir -p ~/ethereum/execution ~/ethereum/consensus ~/ethereum/jwt
# 生成 JWT Secret(EL 与 CL 通信认证)
openssl rand -hex 32 > ~/ethereum/jwt/jwt.hex
# docker-compose.yml
cat > ~/ethereum/docker-compose.yml << 'EOF'
version: "3.8"
services:
geth:
image: ethereum/client-go:stable
restart: unless-stopped
ports:
- "30303:30303" # P2P
- "8545:8545" # JSON-RPC HTTP
- "8546:8546" # WebSocket
volumes:
- ./execution:/root/.ethereum
- ./jwt:/jwt
command: >
--mainnet
--syncmode snap
--http --http.addr 0.0.0.0 --http.vhosts "*"
--ws --ws.addr 0.0.0.0
--authrpc.addr 0.0.0.0 --authrpc.vhosts "*"
--authrpc.jwtsecret /jwt/jwt.hex
lighthouse:
image: sigp/lighthouse:latest
restart: unless-stopped
ports:
- "9000:9000" # P2P
- "5052:5052" # REST API
volumes:
- ./consensus:/root/.lighthouse
- ./jwt:/jwt
command: >
lighthouse bn
--network mainnet
--execution-endpoint http://geth:8551
--execution-jwt /jwt/jwt.hex
--checkpoint-sync-url https://sync.invis.tools/
--http --http-address 0.0.0.0
EOF
docker compose up -d

检查同步状态

Terminal window
# 检查 Geth 同步进度
curl -s http://localhost:8545 \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
# 检查 Lighthouse 信标链状态
curl -s http://localhost:5052/eth/v1/node/syncing | jq

使用 Checkpoint Sync 加速同步

共识层支持从可信检查点快速同步(数分钟内完成,而非数天):

节点安全

Terminal window
# 防火墙配置(只允许必要端口)
# P2P 端口(对外开放):30303 (Geth), 9000 (Lighthouse)
# RPC 端口(只允许本机/内网):8545, 8546, 5052
# 不要将 8545、8546 暴露到公网!
ufw allow 30303
ufw allow 9000
ufw deny 8545
ufw deny 8546

深入阅读