CentOS 8上搭建以太坊节点全指南,从环境准备到同步完成
以太坊作为全球领先的智能合约平台和去中心化应用(DApps)的基础设施,吸引了众多开发者和爱好者,在自家的服务器或个人电脑上运行一个以太坊节点,不仅可以深度参与网络验证,还能为去中心化网络贡献一份力量,并具备更高的隐私性和控制权,本文将详细介绍如何在 CentOS 8 系统上,从零开始搭建一个以太坊全节点(以 Geth 客户端为例)。
前言:为何选择在 CentOS 8 上搭建以太坊节点
CentOS 8 是一款稳定、安全且广泛使用的 Linux 发行版,其强大的包管理器(DNF/YUM)、良好的命令行界面以及对服务器级应用的友好支持,使其成为运行区块链节点的理想选择之一,在 CentOS 8 上搭建以太坊节点,可以充分利用其稳定性,确保节点长时间稳定运行。
系统要求与环境准备
在开始之前,请确保您的 CentOS 8 系统满足以下基本要求:
-
硬件配置:
- CPU:至少 2 核 CPU,推荐 4 核或以上。
- 内存:至少 8GB RAM,推荐 16GB 或以上,因为以太坊数据量庞大,同步过程对内存消耗较高。
- 存储:至少 1TB 可用空间的 SSD 固态硬盘(强烈推荐,机械硬盘同步速度会非常慢),随着以太坊网络的发展,存储需求会持续增长。
- 网络:稳定且带宽充足的互联网连接,推荐 100Mbps 或以上,且上传下载带宽尽可能对称,因为节点需要与其他节点同步数据。
-
软件环境:
- 操作系统:CentOS 8 (Minimal Installation 更佳,减少资源占用)
- 用户权限:具有 sudo 权限的用户
-
更新系统: 首先更新系统软件包到最新版本,确保系统安全和软件包兼容性。
sudo dnf update -y
安装必要依赖
以太坊客户端(如 Geth)的编译和运行需要一些基础的依赖库和工具。
sudo dnf groupinstall "Development Tools" -y sudo dnf install gcc git make glibc-devel openssl-devel libstdc++-devel -y
安装 Geth 客户端
Geth 是以太坊官方的 Go 语言实现客户端,功能强大,使用广泛,我们选择从源码编译安装,以获得最新的功能和优化。
-
安装 Go 语言环境: Geth 是用 Go 语言编写的,因此需要先安装 Go,这里我们安装较新的稳定版本(Go 1.19,请根据需要替换为最新版本号)。
# 下载 Go 二进制包 wget https://go.dev/dl/go1.19.linux-amd64.tar.gz # 解压到 /usr/local sudo tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz # 配置环境变量 echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc echo 'export GOPATH=$HOME/go' >> ~/.bashrc source ~/.bashrc # 验证安装 go version
-
编译安装 Geth:
# 克隆 Geth 源码仓库 git clone https://github.com/ethereum/go-ethereum.git # 进入源码目录 cd go-ethereum # 编译 Geth (make geth 会自动下载依赖并编译) make geth # 编译完成后,geth 可执行文件位于 ./build/bin/geth # 为了方便使用,可以将其复制到 /usr/local/bin sudo cp ./build/bin/geth /usr/local/bin/ # 验证 Geth 安装 geth version
初始化与同步以太坊节点
-
创建数据目录: 用于存放以太坊区块链数据。
mkdir -p ~/ethereum_data
-
启动 Geth 并同步区块: 这是整个过程中最耗时的一步,尤其是第一次同步,同步速度取决于您的网络带宽和硬盘性能。
基本启动命令(同步主网):
geth --datadir ~/ethereum_data sync
这个命令会启动 Geth 节点,并开始从创世区块同步所有区块数据到最新高度。
优化启动参数(推荐): 为了提高同步速度和节点性能,可以添加一些参数:
geth \ --datadir ~/ethereum_data \ --cache 8192 \ # 根据您的内存大小调整,通常为内存的 25%-50%,单位 MB --rpc \ # 启动 RPC 服务,方便与其他工具交互(如 MetaMask) --rpcaddr "localhost" \ --rpcport "8545" \ --rpcapi "eth,net,web3,personal" \ --ws \ # 启动 WebSocket 服务 --wsaddr "localhost" \ --wsport "8546" \ --wsapi "eth,net,web3" \ --syncmode "full" \ # 同步模式,"full" 为全节点,"snap" 为快速同步(但非全节点) --gcmode "full" \ # 垃圾回收模式,"full" 适合长期运行 --maxpeers 50 \ # 最大连接节点数 --http.via-localhost \ # 允许通过 RPC 访问 sync
