在Ubuntu系统上搭建以太坊节点完整指南
以太坊作为全球第二大区块链平台,其节点网络是支撑去中心化应用(DApp)、智能合约及整个生态系统的核心基础设施,搭建以太坊节点不仅能深度参与网络验证与数据同步,还能为开发者提供本地测试环境,同时为网络贡献一份算力与存储支持,本文将以主流的Ubuntu系统(以22.04 LTS为例)为环境,详细介绍如何从零开始搭建一个完整的以太坊节点,涵盖环境准备、软件安装、节点配置及维护等全流程。

搭建前的准备工作
在开始搭建节点前,需确保硬件、网络及系统环境满足基本要求,这是节点稳定运行的基础。
硬件要求
以太坊节点分为全节点(存储完整区块链数据,参与共识验证)和归档节点(存储所有历史数据,包括状态根,支持更复杂的历史查询),不同类型节点对硬件的要求差异较大:
-
全节点:
- CPU:至少2核心(推荐4核心及以上,如Intel i5或AMD Ryzen 5);
- 内存:至少8GB RAM(推荐16GB,因状态数据会持续增长);
- 存储:至少1TB SSD(推荐2TB以上,因区块链数据已超1TB且每日新增约50GB);
- 网络:稳定的宽带连接,上传/下载速度建议≥10Mbps(需长期保持在线,避免因网络中断影响节点同步)。
-
归档节点:
- 存储:至少4TB SSD(因需存储所有历史状态数据,当前已超8TB且持续增长);
- 其他配置与全节点类似,但内存建议32GB以上,以应对更大的数据读写压力。
系统环境准备
本文以Ubuntu 22.04 LTS为例(其他Ubuntu版本如20.04步骤类似),确保系统为64位架构,并已更新至最新状态。
(1)更新系统
sudo apt update && sudo apt upgrade -y
(2)安装必要依赖
sudo apt install -y build-essential curl git unzip wget software-properties-common
(3)配置防火墙
Ubuntu默认使用UFW防火墙,需开放以太坊节点的默认端口(主网P2P端口为30303,RPC端口如8545可根据需求调整):
sudo ufw allow 30303/tcp # 允许TCP连接(P2P通信) sudo ufw allow 30303/udp # 允许UDP连接(P2P发现) sudo ufw allow 8545/tcp # 可选:允许RPC连接(用于本地交互,如开发工具) sudo ufw enable # 启用防火墙(根据提示确认)
选择以太坊客户端软件
以太坊节点通过“客户端”软件实现,客户端是连接用户与以太坊网络的桥梁,目前主流的以太坊客户端分为执行层客户端(处理交易、智能合约执行,原称“以太坊客户端”)和共识层客户端(参与PoS共识验证,原称“验证者客户端”),根据节点类型,需选择对应的组合:

| 节点类型 | 执行层客户端 | 共识层客户端 | 特点 |
|---|---|---|---|
| 全节点 | Geth、Nethermind | Lodestar、Prysm | 同步最新区块,参与共识 |
| 归档节点 | Geth(归档模式) | Lodestar(归档模式) | 存储完整历史数据 |
| 轻节点/同步服务 | Geth(轻量模式) | 仅同步区块头,不存储完整数据 |
对于大多数用户,Geth(Go-Ethereum) Lodestar 是稳定且文档完善的组合,本文将以该组合为例,介绍全节点的搭建流程。
安装执行层客户端:Geth
Geth是以太坊官方维护的Go语言客户端,功能全面、社区活跃,支持全节点、归档节点及轻节点模式。
下载Geth
通过Geth官方GitHub Releases页面下载最新稳定版本(以v1.13.0为例):
# 下载Linux amd64版本 wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.0-1d8ce3dc.tar.gz # 解压 tar -xvzf geth-linux-amd64-1.13.0-1d8ce3dc.tar.gz # 移动至系统路径 sudo mv geth-linux-amd64-1.13.0-1d8ce3dc/geth /usr/local/bin/
验证安装
geth version
若输出版本信息(如geth version 1.13.0),则表示安装成功。
初始化节点(创世区块)
首次启动节点前,需通过创世配置文件初始化本地数据目录,以太坊主网的创世配置可通过Geth自动获取:
# 创建数据目录(默认路径为~/.ethereum) mkdir -p ~/.ethereum # 下载主网创世配置并初始化 geth init --datadir ~/.ethereum https://github.com/ethereum/ethereum-protocol/raw/master/specs/genesis.json
执行后,~/.ethereum目录下会生成genesis.json文件(创世区块配置)和geth目录(存储链数据)。
安装共识层客户端:Lodestar
Lodestar是Chainlink团队开发的TypeScript客户端,支持PoS共识,具备良好的模块化设计和归档节点支持。

安装Node.js(依赖环境)
Lodestar基于Node.js运行,需安装Node.js 18 版本:
# 通过NodeSource仓库安装Node.js 18 curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs # 验证安装 node -v # 需≥v18.0.0 npm -v # 需≥v8.0.0
安装Lodestar
通过npm(Node.js包管理器)安装Lodestar:
sudo npm install -g @chainsafe/lodestar
安装完成后,可通过以下命令验证:
lodestar --version
初始化共识层配置
Lodestar需与执行层客户端协同工作,需生成配置文件并指定执行层客户端路径:
# 创建配置目录 mkdir -p ~/.lodestar # 生成默认配置文件(主网) lodestar beacon-node --network=mainnet --data-dir=~/.lodestar --execution-endpoint=http://localhost:8551 --jwt-secret=~/.lodestar/jwt.hex > ~/.lodestar/config.yaml 2>&1 & # 生成JWT密钥(用于执行层与共识层的安全通信) openssl rand -hex 32 > ~/.lodestar/jwt.hex
参数说明:
--network=mainnet:指定主网(测试网可替换为sepolia等);--data-dir:共识层数据存储目录;--execution-endpoint:执行层RPC地址(后续需配置Geth开启RPC);--jwt-secret:JWT密钥文件,用于执行层与共识层的身份验证。
配置执行层(Geth)与共识层(Lodestar)协同
共识层客户端(Lodestar)需从执行层客户端(Geth)获取区块数据,因此需配置Geth开启RPC服务并允许外部连接。
配置Geth RPC
编辑Geth的启动参数(可通过命令行直接启动,或创建服务文件长期运行),以下以命令行启动为例:
geth \ --datadir ~/.ethereum \ --http \ --http.addr "0.0.0.0" \ --http.port 8545 \ --http.api "eth,net,web3,personal" \ --ws \ --ws.addr "0.0.0.0" \ --ws.port 8546 \ --ws.api "eth,net,web3" \ --authrpc.addr "0.0.0.0" \ --authrpc.port 8551 \ --authrpc.jwtsecret ~/.lodestar/jwt.hex \ --syncmode snap \ --gcmode full \ --metrics \ --metrics.addr "0.0.0.0" \ --metrics.port 6060
参数说明:
--http:开启HTTP RPC服务(用于JSON-RPC交互);--http.addr "0.0.0.0":监听所有网络接口(安全场景建议限制为内网IP);--http.api:开放的API接口
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。




