Ubuntu 系统下搭建以太坊私链完整指南
以太坊作为全球领先的智能合约平台,其公链虽然功能强大,但对于开发者而言,在进行应用测试、算法验证或学习研究时,搭建一个本地或私有的以太坊网络(即“私链”)往往更为便捷和高效,本文将详细介绍如何在 Ubuntu 系统上,从零开始搭建一个以太坊私链。
准备工作
在开始之前,请确保您的 Ubuntu 系统满足以下基本条件:
- 操作系统:推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS 版本,这些版本拥有较好的稳定性和社区支持。
- 硬件要求:私链对硬件要求不高,一般 2GB 以上内存,10GB 以上可用硬盘空间即可满足基本需求。
- 软件环境:
git:用于下载源代码。make:用于编译构建。g:C 编译器。build-essential:包含基本编译工具集。
- 网络连接:虽然私链可以离线运行,但初期安装和下载依赖需要网络连接。
更新系统并安装必要的软件包:
sudo apt update sudo apt upgrade -y sudo apt install -y git make g build-essential
安装 Go 语言环境
以太坊客户端(如 Geth)通常使用 Go 语言开发,因此需要先安装 Go。

-
下载 Go:访问 Go 官方下载页面 获取最新版本的 Linux AMD64 下载链接,以下以 Go 1.21.0 为例:
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
-
解压并安装:
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
-
配置环境变量:编辑
~/.bashrc文件,添加 Go 的 bin 目录到 PATH:echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc source ~/.bashrc
-
验证安装:
go version
如果显示 Go 版本号,则安装成功。
编装并安装 Geth 客户端
Geth(Go-Ethereum)是以太坊官方实现的 Go 语言客户端,是最常用的以太坊节点软件之一。
-
克隆 Geth 源代码:
git clone https://github.com/ethereum/go-ethereum.git cd go-ethereum
-
编译 Geth:
make geth
编译过程可能需要一些时间,具体取决于您的电脑性能。

-
验证安装:
./build/bin/geth version
如果能看到 Geth 的版本信息,说明编译安装成功,为了方便使用,可以将 Geth 添加到系统 PATH:
sudo cp ./build/bin/geth /usr/local/bin/
初始化创世区块
私链需要一个独特的“创世区块”(Genesis Block),这是区块链的起点。
-
创建创世配置文件:在您的用户目录下创建一个
ethereum目录,并在其中创建一个genesis.json文件。mkdir ~/ethereum cd ~/ethereum nano genesis.json
-
编写创世配置内容:以下是一个简单的创世区块配置示例,您可以根据需要修改:
{ "config": { "chainId": 15, // 私链 ID,用于区分不同的以太坊网络,公链是 1, Ropsten 是 3,这里自定义一个数字 "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "berlinBlock": 0, "londonBlock": 0, "mergeNetsplitBlock": 0, "terminalTotalDifficulty": 0, "terminalTotalDifficultyPassed": true, "ethash": {} }, "alloc": { // 可以在这里预分配一些账户及其余额,格式为 "地址": {"balance": "数值"} // "0x742d35Cc6634C0532925a3b844Bc454e4438f44e": {"balance": "1000000000000000000000"} }, "coinbase": "0x0000000000000000000000000000000000000000", "difficulty": "0x40000", // 初始难度,私链可以设置低一些 "extraData": "", "gasLimit": "0xffffffff", // Gas 限制 "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp": "0x00" }保存并退出
nano编辑器(Ctrl X,Y,回车)。 -
初始化创世区块:
geth --datadir ~/ethereum/data init ~/ethereum/genesis.json
这会在
~/ethereum/data目录下创建区块链数据,并根据genesis.json初始化创世区块,如果提示datadir already exists,可以删除~/ethereum/data目录后重新执行。
启动私链节点
现在可以启动您的私链节点了。

-
基本启动方式:
geth --datadir ~/ethereum/data --networkid 15 console
参数说明:
--datadir ~/ethereum/data:指定数据存储目录。--networkid 15:指定网络 ID,必须与genesis.json中的chainId一致。console:启动后进入 JavaScript 交互式控制台,方便管理节点和执行命令。
启动后,节点会开始同步区块(因为是创世区块,所以同步很快),然后您会看到一个
>提示符,表示已进入控制台。 -
常用启动参数(可选):
--rpc:启用 HTTP-RPC 服务,方便其他工具(如 MetaMask、Remix)连接。--rpcaddr "localhost":指定 RPC 监听地址。--rpcport "8545":指定 RPC 端口。--ws:启用 WebSocket 服务。--wsaddr "localhost":指定 WebSocket 监听地址。--wsport "8546":指定 WebSocket 端口。--nodiscover:禁止自动发现其他节点,适合私链。--maxpeers 0:限制最大连接节点数为 0,即纯私链,不与外部任何节点连接。
带 RPC 服务的启动命令:
geth --datadir ~/ethereum/data --networkid 15 --rpc --rpcaddr "localhost" --rpcport "8545" --nodiscover console
私链基本操作与验证
进入控制台后,您可以执行以下命令:
-
查看账户信息:
// 查看账户列表 eth.accounts // 默认是空列表,除非在 genesis.json 中预分配了 // 查看当前账户余额(单位:Wei) eth.getBalance(eth.accounts[0])
-
创建新账户:
personal.newAccount("your_password_here") // 记下返回的地址,并设置密码 -
启动/停止挖矿:
// 启动挖矿,默认 1 个线程 miner.start(1) // 停止挖矿 miner.stop()
挖矿会产生新的区块,并给矿工(coinbase 地址)奖励以太币,默认情况下,coinbase 地址是第一个创建的账户或预分配的账户。
-
转账(发送交易):
//
本文 原创,转载保留链接!网址:https://licai.bangqike.com/bixun/1333095.html
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。






