:2026-04-03 11:54 点击:5
以太坊作为目前最知名的智能合约平台,其公链虽然功能强大,但对于开发者学习、应用测试、企业内部部署等场景,搭建一条本地或私有的以太坊链(私链)更为便捷和高效,本文将详细介绍如何在Windows操作系统上,从零开始搭建一条功能完备的以太坊私链。
在开始搭建之前,请确保您的Windows系统满足以下条件:
Geth是以太坊官方实现的Go语言客户端,功能强大,是搭建私链的常用选择,我们推荐直接下载预编译的二进制文件,以简化安装过程。
下载Geth:
访问Geth官方发布页面:https://geth.ethereum.org/downloads/
根据您的Windows系统(通常是64位)下载对应的最新稳定版Windows二进制文件(通常是 geth-windows-amd64-1.x.x.x.zip 这样的格式)。
配置环境变量(可选但推荐):
geth.exe 解压到一个固定的目录,C:\tools\geth。Path 中,这样就可以在任意命令行目录下直接运行 geth 命令。Path 变量,点击“编辑”。C:\tools\geth 路径。验证安装: 打开一个新的命令提示符(CMD)或PowerShell窗口,输入以下命令:
geth version
如果显示Geth的版本信息,则表示安装成功。
每条以太坊链都有一个创世区块(Genesis Block),它是整个区块链的起点,我们需要创建一个自定义的创世区块配置文件。
创建创世配置文件:
在您的工作目录下(C:\ethereum\private-chain),创建一个名为 genesis.json 的文件,并用文本编辑器打开,粘贴以下内容(这是一个基本的创世配置示例):
{
"config": {
"chainId": 15, // 私链的ID,用于区分不同的以太坊网络,公链是1,Ropsten是3,这里我们自定义一个数字,如15
"constantinopleBlock": 0, // 启用Constantinople分叉的区块高度,设为0表示立即启用
"eip150Block": 0, // 启用EIP150分叉的区块高度
"eip155Block": 0, // 启用EIP155分叉的区块高度
"eip158Block": 0, // 启用EIP158分叉的区块高度
"byzantiumBlock": 0, // 启用Byzantium分叉的区块高度
"istanbulBlock": 0, // 启用Istanbul分叉的区块高度
"petersburgBlock": 0, // 启用Petersburg分叉的区块高度
"berlinBlock": 0, // 启用Berlin分叉的区块高度
"londonBlock": 0, // 启用London分叉的区块高度
"clique": { // 对于PoA共识机制,使用clique
"period": 15, // 出块时间(秒)
"epoch": 30000 // 每30000个区块重签名的epoch长度
}
},
"alloc": { // 预分配账户,这里可以预先给某些账户分配一些以太币
"0x742d35Cc6634C0532925a3b844Bc9e7595f8dBe8": { // 示例地址,可以替换成自己的地址
"balance": "0x200000000000000000000000000000000000000000000000000000000000000" // 预分配的以太币数量,这里是20000 ETH (以wei为单位)
}
},
"coinbase": "0x0000000000000000000000000000000000000000", // 矿工地址,挖出的矿奖励给这个地址
"difficulty": "0x4000", // 创世区块的难度,私链可以设置得很低,方便挖矿
"extraData": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", // 额外数据
"gasLimit": "0xffffffff", // 区块gas上限
"nonce": "0x0000000000000042", // 随机数
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", // 与nonce配合使用
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", // 父区块哈希,创世区块为0
"timestamp": "0x00" // 时间戳
}
注意:
chainId 是私链的唯一标识,不要与知名公链冲突。alloc 中可以预分配给你自己控制的账户地址,地址格式要正确,并且balance的单位是wei(1 ETH = 10^18 wei)。difficulty 设置较低,方便后续挖矿生成区块。初始化创世区块:
打开命令提示符(CMD)或PowerShell,进入您创建 genesis.json 文件的目录(<

geth --datadir "./data" init genesis.json
--datadir "./data":指定数据存储目录,这里我们创建一个名为 data 的文件夹来存放链数据,如果省略,默认在用户目录下创建 .ethereum 目录。init genesis.json:使用指定的创世配置文件进行初始化。如果看到 Successfully wrote genesis hash... 等提示,说明创世区块初始化成功,在 data 目录下会生成 geth 和 keystore 等文件夹。
现在我们可以启动私链节点了,根据您的需求,可以选择不同的启动模式。
基本启动(控制台模式):
在命令提示符中,进入数据目录的上一级(即 C:\ethereum\private-chain),执行:
geth --datadir "./data" --networkid 15 console
--datadir "./data":指定数据目录,与初始化时一致。--networkid 15:指定网络ID,必须与 genesis.json 中的 chainId 一致。console:启动后直接进入Geth JavaScript控制台(Interactive Console),在这里可以执行各种Geth命令。启动后,节点会开始同步(虽然是私链,但会有一个同步过程,实际上是在加载创世区块)。
启动后台节点(不进入控制台): 如果您不希望命令行窗口一直挂着,可以启动后台节点:
geth --datadir "./data" --networkid 15 --http --http.addr "0.0.0.0" --http.port "8545" --http.api "personal,eth,net,web3" --ws --ws.addr "0.0.0.0" --ws.port "85
本文由用户投稿上传,若侵权请提供版权资料并联系删除!