CentOS7上搭建以太坊私有链完整教程

博主:neragonerago 2026-10-02 03:27:32 2

以太坊(Ethereum)是目前最流行的区块链开发平台之一,在学习和开发智能合约、DApp应用时,直接使用主网或公测网会产生真实费用且效率较低,搭建一条私有链可以让开发者在完全可控的环境中进行测试和实验,本文将详细介绍如何在 CentOS 7 系统上从零开始搭建一条以太坊私有链。

环境准备

在开始之前,请确保你的系统满足以下条件:

  • 操作系统:CentOS 7.x
  • 用户权限:root 或具有 sudo 权限的用户
  • 网络连接:能够访问外网以下载安装包

首先更新系统并安装基础依赖:

yum update -y
yum install -y epel-release wget vim

安装 Geth

Geth(Go-Ethereum)是以太坊官方提供的 Go 语言实现版本,是我们搭建私有链的核心工具。

直接下载二进制包(推荐)

# 下载 Geth(以 1.10.23 版本为例,请根据需要选择版本)
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.23-8f269ad3.tar.gz
# 解压
tar -zxvf geth-linux-amd64-1.10.23-8f269ad3.tar.gz
# 移动到系统目录,方便全局使用
cp geth-linux-amd64-1.10.23-8f269ad3/geth /usr/local/bin/
# 验证安装
geth version

看到版本信息输出,说明安装成功。

通过源码编译

如果需要自定义版本,可以先安装 Golang 再编译:

# 安装 Go 环境
wget https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz
tar -zxvf go1.19.linux-amd64.tar.gz -C /usr/local/
# 配置环境变量
echo 'export GOROOT=/usr/local/go' >> /etc/profile
echo 'export PATH=$PATH:$GOROOT/bin' >> /etc/profile
source /etc/profile
# 验证 Go
go version
# 克隆并编译 Geth
yum install -y git
git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum
make geth
cp build/bin/geth /usr/local/bin/

创建创世区块配置文件

创世区块(Genesis Block)是区块链的第一个区块,所有后续区块都基于它构建。

创建工作目录并编写配置文件:

mkdir -p /eth/private-chain
cd /eth/private-chain
vim genesis.json
{
  "config": {
    "chainId": 666,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "ethash": {}
  },
  "difficulty": "200000",
  "gasLimit": "8000000",
  "alloc": {}
}

配置说明:

  • chainId:链的唯一标识,切勿与以太坊主网(1)等公网重复,这里设为 666;
  • difficulty:挖矿难度,私有链中设置得越低,出块越快;
  • gasLimit:每个区块消耗 Gas 的上限,适当调大方便部署合约;
  • alloc:可以预置一些账号及其初始以太币余额,测试时非常方便。

初始化私有链

使用 init 命令初始化创世区块:

geth --datadir ./data init genesis.json

执行成功后会输出 Successfully wrote genesis state 的提示,并在当前目录生成 data 文件夹,其中包含 geth(区块数据)和 keystore(账号信息)两个子目录。

注意: 如果初始化时报错 genesis block is already imported,说明该数据目录已被初始化过,删除 data 目录后重新执行即可,但要注意,同一网络中所有节点必须使用相同的 genesis.json。

启动私有链

启动并进入控制台

geth --datadir ./data --networkid 666 console

参数说明:

  • --datadir:指定数据存储目录;
  • `
The End

发布于:2026-10-02,除非注明,否则均为区块链社区- 欧亿APP下载原创文章,转载请注明出处。