CentOS下搭建以太坊私链完整指南
环境准备
在开始搭建以太坊私链前,需确保CentOS系统满足基本要求,并安装必要的依赖工具,本文以CentOS 7为例,其他版本可参考类似步骤。
系统要求
- 操作系统:CentOS 7.x(64位)
- 内存:至少2GB(推荐4GB以上,避免节点运行卡顿)
- 存储:至少20GB可用空间(用于存储区块链数据)
- 网络:本地网络环境(无需公网IP,私链独立运行)
安装必要依赖
以太坊节点运行需要git(下载源码)、make(编译工具)和gcc(C语言编译器),可通过以下命令安装:
# 更新系统软件包 sudo yum update -y # 安装git、make、gcc等工具 sudo yum install -y git make gcc-c
安装Go语言环境
以太坊(Geth)是基于Go语言开发的,需先安装Go环境,本文以Go 1.19为例(推荐较新稳定版)。
下载Go安装包
访问Go官网下载Linux AMD64版本的tar包,或直接使用wget命令:

# 进入/opt目录(存放软件源码) cd /opt # 下载Go 1.19.5安装包(可根据需要更换版本) sudo wget https://dl.google.com/go/go1.19.5.linux-amd64.tar.gz
解压并配置环境变量
# 解压到/usr/local目录 sudo tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz # 配置Go环境变量(编辑/etc/profile文件) sudo vim /etc/profile
在文件末尾添加以下内容:
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
保存后执行以下命令使配置生效:
source /etc/profile
验证Go安装
go version # 若输出类似 "go version go1.19.5 linux/amd64",则安装成功
编译安装Geth客户端
Geth(Ethereum Go)是以太坊官方的Go语言客户端,用于搭建节点、管理私链等。
下载Geth源码
# 进入$GOPATH/src目录(Go项目标准路径) mkdir -p $GOPATH/src/github.com/ethereum cd $GOPATH/src/github.com/ethereum # 克隆Geth源码(从GitHub官方仓库) git clone https://github.com/ethereum/go-ethereum.git
编译Geth
# 进入go-ethereum目录 cd go-ethereum # 切换到最新稳定版本(如v1.13.6,可根据需求选择版本) git checkout v1.13.6 # 编译geth(make命令会自动下载依赖并编译) make geth
编译完成后,可执行文件位于$GOPATH/src/github.com/ethereum/go-ethereum/build/bin/geth,可通过以下命令添加到系统PATH(方便全局调用):
# 创建软链接到/usr/local/bin sudo ln -s $GOPATH/src/github.com/ethereum/go-ethereum/build/bin/geth /usr/local/bin/geth # 验证geth安装 geth version # 若输出Geth版本信息,则安装成功
初始化创世区块
私链需要自定义创世区块(Genesis Block),通过创世配置文件定义链的初始规则(如区块奖励、 gas限制等)。
创建创世配置文件
在任意目录(如~/ethereum-private)创建genesis.json如下:

mkdir -p ~/ethereum-private cd ~/ethereum-private vim genesis.json
粘贴以下配置(可根据需求修改参数):
{
"config": {
"chainId": 15, // 私链ID(需与公链不同,避免冲突)
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"londonBlock": 0,
"terminalTotalDifficulty": 0,
"terminalTotalDifficultyPassed": true
},
"alloc": {}, // 预分配地址(私链可留空,后续手动创建)
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x40000", // 创世区块难度(私链可设为较小值,便于挖矿)
"extraData": "", // 附加信息(可留空或自定义)
"gasLimit": "0xffffffff", // gas限制(最大值)
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
初始化创世区块
使用geth init命令根据配置文件初始化创世区块:
geth --datadir ~/ethereum-private/data init genesis.json # datadir指定数据存储目录(默认为~/.ethereum,此处自定义避免混淆)
执行成功后,会在~/ethereum-private/data目录下生成geth(链数据)和keystore(账户密钥)文件夹。
启动私链节点
初始化完成后,即可启动私链节点,启动时可配置节点类型(全节点/轻节点)、网络端口、是否开启挖矿等参数。
启动节点(基础命令)
geth --datadir ~/ethereum-private/data console 2>> ~/ethereum-private/geth.log
参数说明:
--datadir:指定数据目录(与初始化时一致);console:启动JavaScript交互控制台(可输入命令管理节点);2>> ~/ethereum-private/geth.log:将错误日志输出到文件(可选)。
启动节点(进阶配置)
若需节点间通信(多节点私链),可添加--nodiscover(禁止自动发现)和--bootnodes(指定引导节点)参数。

geth --datadir ~/ethereum-private/data --nodiscover --port 30303 console
验证节点状态
启动成功后,进入交互控制台(提示符为>),输入以下命令检查节点状态:
// 查看当前区块号 > eth.blockNumber // 私链初始为0,挖矿后会递增 // 查看节点连接信息 > net.peerCount // 私链默认无连接,需手动添加节点(多节点场景) // 查看账户列表 > eth.accounts // 初始为空,需创建账户
创建与管理账户
私链中需要账户地址进行交易(如挖矿奖励接收),可通过Geth控制台创建、导入和管理账户。
创建新账户
在Geth控制台中执行以下命令:
// 创建新账户(密码自定义,需妥善保存)
> personal.newAccount("your_password")
// 返回账户地址,如 "0x1234567890123456789012345678901234567890"
创建的账户密钥存储在~/ethereum-private/data/keystore/目录下,文件名以UTC-开头,包含加密后的私钥。
查看账户列表
> eth.accounts // 输出所有账户地址(包括新创建的账户)
解锁账户
执行交易(如挖矿、转账)前需解锁账户:
// 解锁账户(参数为账户地址和密码) > personal.unlockAccount(eth.accounts[0], "your_password") // 返回 true 表示解锁成功
启动挖矿
私链需手动启动挖矿(无工作量证明机制),矿工地址(coinbase)需设置为已有账户。
设置矿工地址
// 设置第一个账户
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。




