环境准备
在开始搭建以太坊私链前,需确保CentOS系统满足基础环境要求,并安装必要的依赖工具,本文以CentOS 7/8为例,推荐使用root用户或具有sudo权限的用户进行操作。
更新系统
首先更新系统软件包,确保环境最新:
sudo yum update -y
安装必要依赖
以太坊节点运行需要git(下载源码)、make(编译工具)和gcc(C语言编译器):
sudo yum install -y git make gcc
安装Go语言环境
以太坊客户端(如Geth)基于Go语言开发,需先安装Go,本文以Go 1.19为例(可根据需要调整版本):
(1)下载Go安装包
cd /tmp wget https://go.dev/dl/go1.19.linux-amd64.tar.gz
(2)解压并配置环境变量
sudo tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile source /etc/profile
(3)验证安装
go version # 输出 "go version go1.19 linux/amd64" 表示成功
安装与配置以太坊客户端(以Geth为例)
Geth(Go-Ethereum)是以太坊官方实现的Go语言客户端,支持搭建私有链、同步主网等场景,本文以Geth最新稳定版为例(截至2023年)。
下载Geth源码
git clone https://github.com/ethereum/go-ethereum.git cd go-ethereum
编译安装Geth
make geth # 编译geth可执行文件 sudo cp build/bin/geth /usr/local/bin/ # 将geth添加到系统PATH
验证Geth安装
geth version # 输出Geth版本信息表示成功
初始化创世区块
私有链需要自定义创世区块配置文件,通过geth init命令初始化。
创建创世配置文件
创建genesis.json如下(可根据需求调整参数):
cat > genesis.json << EOF
{
"config": {
"chainId": 15, # 私有链ID,避免与公有链冲突(主网为1,Ropsten为3)
"homesteadBlock": 0, # 启用Homestead规则的区块高度
"eip155Block": 0, # 启用EIP-155规则的区块高度
"eip158Block": 0 # 启用EIP-158规则的区块高度
},
"alloc": {}, # 预分配地址(可选,无需预分配可留空)
"coinbase": "0x0000000000000000000000000000000000000000", # 矿工地址
"difficulty": "0x4000", # 创世区块难度(私有链可设为较小值,便于挖矿)
"extraData": "", # 附加数据(可选)
"gasLimit": "0xffffffff", # 区块gas上限
"nonce": "0x0000000000000042", # 随机数
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", # 混合哈希
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", # 父区块哈希(创世区块为0)
"timestamp": "0x00" # 时间戳
}
EOF
初始化创世区块
geth --datadir ./data init genesis.json # 在当前目录创建data文件夹存储链数据
执行成功后,会生成data/keystore(存储账户)和data/geth/chaindata(存储区块数据)目录。
