从零开始,以太坊主网搭建全指南
以太坊作为全球第二大区块链平台,其主网承载着无数去中心化应用(DApps)、智能合约以及数字资产的价值流转,对于许多开发者和项目方而言,了解甚至亲自搭建一个以太坊主网节点,不仅是深入理解区块链底层运作机制的绝佳

搭建前的准备工作
在动手搭建以太坊主网节点之前,充分的准备工作是确保过程顺利的关键。
-
明确节点类型:
- 全节点(Full Node):存储以太坊主网的所有区块数据(包括历史数据),能够独立验证所有交易和区块,这是最完整的节点类型,提供最高的数据自主性和安全性,但对硬件要求也最高。
- 归档节点(Archive Node):在全节点的基础上,还存储了所有历史状态数据(包括已被清理的状态),对于需要查询历史状态的应用(如某些DeFi数据分析)至关重要,但存储需求极大(目前TB级别)。
- 轻节点(Light Node):只下载区块头,通过请求其他全节点来获取交易数据,资源占用少,但自主验证能力有限。 本文主要介绍全节点的搭建,这是最常见的主网参与方式。
-
硬件要求:
- CPU:建议多核高性能CPU,如Intel Core i7/i9或AMD Ryzen 7/9及以上,至少8核。
- 内存(RAM):建议32GB以上,64GB更佳,同步和运行过程中内存占用较高。
- 存储(SSD):至关重要! 必须使用高速NVMe SSD,主网数据目前已超过TB级别,且持续增长,建议至少2TB可用空间,归档节点则需要数TB甚至更多。
- 网络:稳定、高带宽的网络连接,建议有线千兆网络,同步初期对带宽要求较高。
-
软件环境:
- 操作系统:推荐Linux发行版,如Ubuntu 20.04 LTS或22.04 LTS,因其稳定性和对以太坊客户端的良好支持,Windows和macOS也可搭建,但过程可能稍复杂。
- 以太坊客户端:以太坊有多个客户端实现,如Geth、Nethermind、Prysm(共识层)、Lodestar(共识层)等,对于全节点,通常需要执行层客户端(如Geth、Nethermind)和共识层客户端(如Prysm、Lodestar)配合(对于PoS后以太坊),本文以最常用的Geth(执行层)和Prysm(共识层)为例。
-
其他工具:
- Git(用于克隆客户端代码)
- Go语言环境(如果从源码编译Geth)
- 必要的系统工具(如build-essential)
以太坊主网搭建步骤
这里我们以Ubuntu 20.04 LTS系统,使用Geth作为执行层客户端,Prysm作为共识层客户端为例进行说明。
-
系统更新与环境配置:
sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential git
-
安装Geth(执行层客户端):
- 使用二进制文件(推荐)
访问Geth官方发布页面:https://github.com/ethereum/go-ethereum/releases
下载对应你系统架构的最新稳定版二进制文件。
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.8-4dc896e0.tar.gz tar -xvzf geth-linux-amd64-1.13.8-4dc896e0.tar.gz sudo cp geth-linux-amd64-1.13.8-4dc896e0/geth /usr/local/bin/ geth version # 验证安装
- 从源码编译(适用于需要最新功能或自定义调试)
sudo apt install -y golang-go git clone https://github.com/ethereum/go-ethereum.git cd go-ethereum make geth # 将编译好的geth添加到PATH sudo cp build/bin/geth /usr/local/bin/
- 使用二进制文件(推荐)
访问Geth官方发布页面:https://github.com/ethereum/go-ethereum/releases
下载对应你系统架构的最新稳定版二进制文件。
-
安装Prysm(共识层客户端):
- Prysm提供了便捷的安装脚本:
sudo apt install -y wget wget https://github.com/prysmaticlabs/prysm/releases/latest/download/prysm.sh && chmod +x prysm.sh ./prysm.sh --help # 查看帮助
- 也可以直接下载二进制文件或从源码编译。
- Prysm提供了便捷的安装脚本:
-
启动Geth节点(同步主网数据): Geth启动后会自动开始从其他节点同步以太坊主网的数据,首次同步可能需要很长时间(从几天到几周不等,取决于硬件和网络状况)。
- 基本启动命令:
geth --syncmode full --http --http.addr "0.0.0.0" --http.port "8545" --http.vhosts "*" --ws --ws.addr "0.0.0.0" --ws.port "8546" --ws.origins "*"
--syncmode full:全同步模式,下载所有区块和状态数据。--http:启用HTTP-RPC服务,方便与其他工具(如MetaMask、Remix)交互。--http.addr "0.0.0.0":允许任何IP访问HTTP服务。--http.port "8545":HTTP服务端口。--ws:启用WebSocket-RPC服务。--ws.addr "0.0.0.0":允许任何IP访问WebSocket服务。--ws.port "8546":WebSocket服务端口。- 后台运行:可以使用
nohup配合&将进程放入后台运行,或使用systemd管理服务。nohup geth --syncmode full --http --http.addr "0.0.0.0" --http.port "8545" --ws --ws.addr "0.0.0.0" --ws.port "8546" > geth.log 2>&1 &
- 监控同步进度:
geth attach > eth.syncing
如果
syncing返回false,表示已同步完成;如果返回一个对象,则表示仍在同步中,可以查看currentBlock、highestBlock等进度。
- 基本启动命令:
-
启动Prysm节点(共识层): 在另一个终端窗口启动Prysm Beacon节点和验证者(如果需要作为验证者)。
- 启动Beacon节点:
./prysm.sh beacon-chain --mainnet --http-web3provider="http://localhost:8545"
--mainnet:指定连接主网。--http-web3provider="http://localhost:8545":指定Geth的HTTP-RPC地址,用于与执行层交互。- (可选)启动验证者:如果你有32个ETH并想成为验证者,需要导入验证者密钥。
./prysm.sh validator --mainnet --wallet-dir=/path/to/your/wallet --password-file=/path/to/password.txt
- 启动Beacon节点:
-
验证节点运行:
- Geth:可以通过
geth attach进入控制台,执行eth.blockNumber查看最新区块号。 - Prysm:可以访问Prysm的监控界面,默认地址为
http://localhost:3500。 - 第三方工具:如使用
etherscan的节点列表查看你的节点是否在线和同步状态。
- Geth:可以通过
节点的维护与优化
-
数据管理:
- Geth数据默认存储在
~/.ethereum目录下,定期备份重要数据。 - 随着时间推移,数据量会持续增长,确保有足够的存储空间,可以考虑使用SSD RAID等方式扩展。
- 如果需要归档节点,Geth支持
--gcmode archive参数,但这会极大增加同步时间和存储需求。
- Geth数据默认存储在
-
日志监控:
- 关注Geth和Prysm的日志输出,及时发现并处理错误,可以使用
journalctl(如果使用
- 关注Geth和Prysm的日志输出,及时发现并处理错误,可以使用