自建以太坊节点
自建以太坊节点
本页内容正在整理中,欢迎贡献。
概述
自建节点是以太坊去中心化的基石,也是不依赖第三方 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):
| 客户端 | 语言 | 特点 |
|---|---|---|
| Geth | Go | 最流行,稳定,生态最广 |
| Nethermind | C# | 高性能,归档节点优化 |
| Besu | Java | 企业级,许可链支持 |
| Reth | Rust | 最新,性能出色,同步快 |
| Erigon | Go | 磁盘效率高,归档节点首选 |
共识层客户端(CL):
| 客户端 | 语言 | 特点 |
|---|---|---|
| Lighthouse | Rust | 高性能,低资源占用 |
| Prysm | Go | 最流行,文档完善 |
| Teku | Java | 企业级,ConsenSys 维护 |
| Nimbus | Nim | 轻量级,嵌入式设备支持 |
| Lodestar | TypeScript | JS 生态友好 |
推荐使用少数派客户端(非 Geth/Prysm),有助于提升网络的客户端多样性。
安装教程(Geth + Lighthouse,Docker 方式)
# 创建数据目录mkdir -p ~/ethereum/execution ~/ethereum/consensus ~/ethereum/jwt
# 生成 JWT Secret(EL 与 CL 通信认证)openssl rand -hex 32 > ~/ethereum/jwt/jwt.hex
# docker-compose.ymlcat > ~/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.0EOF
docker compose up -d检查同步状态
# 检查 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 加速同步
共识层支持从可信检查点快速同步(数分钟内完成,而非数天):
- sync.invis.tools —— 免费检查点服务
- beaconstate.info —— 检查点列表
节点安全
# 防火墙配置(只允许必要端口)# P2P 端口(对外开放):30303 (Geth), 9000 (Lighthouse)# RPC 端口(只允许本机/内网):8545, 8546, 5052
# 不要将 8545、8546 暴露到公网!ufw allow 30303ufw allow 9000ufw deny 8545ufw deny 8546深入阅读
- ethereum.org 节点运行指南
- Ethereum on ARM
- 以太坊节点客户端多样性
- RPC 提供商对比(不想自建时的替代方案)