以太坊建一条私链,从零开始的完整实战指南
在区块链技术日益成熟的今天,以太坊作为最流行的智能合约平台,不仅支持公有链部署,还为企业和开发者提供了搭建私有链(私链)的能力,无论是用于内部测试、企业级应用开发,还是团队学习研究,搭建一条以太坊私链都是非常有价值的实践,本文将手把手教你如何从零开始,搭建一条属于自己的以太坊私有链。
什么是私链?为什么需要它?
私链(Private Blockchain)是指写入权限由某个组织或机构控制的区块链,与公链相比,私链具有以下优势:
- 完全掌控:不需要购买以太币作为Gas费,所有代币由自己分配
- 高性能:节点少、可控性强,交易速度更快
- 数据隐私:数据不对外公开,适合企业内部业务
- 零成本实验:智能合约开发、DApp测试都可以在私链上反复进行
- 学习价值:深入理解区块链底层运行机制的最好方式
准备工作
1 环境要求
- Linux(推荐 Ubuntu)或 macOS 系统
- Geth(Go-Ethereum)客户端
2 安装 Geth
以 Ubuntu 为例:
sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum
安装完成后验证:
geth version
搭建私链详细步骤
1 创建工作目录
mkdir private-chain cd private-chain mkdir data
2 创建创世区块配置文件(genesis.json)
创世区块是区块链的第一个区块,私链的一切都从这里开始:
{
"config": {
"chainId": 666666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"clique": {
"period": 15,
"epoch": 30000
}
},
"difficulty": "1",
"gasLimit": "8000000",
"alloc": {}
}
关键参数说明:
chainId:链的唯一标识,务必避免与主流链冲突(如以太坊主网是1)clique:采用 PoA(权益授权)共识机制,无需挖矿硬件,适合私链period:出块间隔,这里是15秒gasLimit:每个区块的Gas上限
3 初始化创世区块
geth --datadir ./data init genesis.json
看到 Successfully wrote genesis state 字样即表示初始化成功。
4 创建账户
geth --datadir ./data account new
系统会提示输入密码,请妥善保管,记下返回的账户地址,后面会用到。
5 启动私链节点
geth --datadir ./data \ --networkid 666666 \ --http \ --http.addr 0.0.0.0 \ --http.port 8545 \ --http.api eth,net,web3,personal,miner,admin,debug \ --http.corsdomain "*" \ --allow-insecure-unlock \ --nodiscover \ console
参数说明:
--networkid:必须与 chainId 保持一致--http:开启 HTTP-RPC 服务,方便连接 MetaMask 等工具--nodiscover:关闭节点自动发现,防止外部节点接入
启动成功后,会进入 Geth 的 JavaScript 交互控制台。
常用控制台命令实战
进入控制台后,可以执行以下操作:
// 查看账户列表 eth.accounts // 查看账户余额 eth.getBalance(eth.accounts[0]) // 查看节点信息 admin.nodeInfo // 查看已连接的节点数 net.peerCount // 查看当前区块高度 eth.blockNumber
多节点组网
一条链只有一个节点未免单调,让我们再添加一个节点:
第一步,在新终端重新初始化一个数据目录并启动第二个节点(注意更换端口):
geth --datadir ./data2 --networkid 666666 --port 30304 \ --http --http.port 8546 --nodiscover console
第二步,在节点一中获取 enode 信息:
admin.nodeInfo.enode
第三步,在节点二中添加节点一为对等节点:
admin.addPeer("enode://xxxxx@节点IP:30303")
验证连接:
net.peerCount // 返回 1 表示连接成功
连接 MetaMask
搭建好私链后,可以直接用 MetaMask 交互:
- 打开 MetaMask,点击网络 → 添加网络
- 填写信息:
- 网络名称:My Private Chain
- RPC URL:
http://localhost:8545 - 链 ID:
The End
发布于:2026-10-07,除非注明,否则均为原创文章,转载请注明出处。

