Mac系统搭建以太坊私有链完整指南
环境准备与工具安装
在Mac系统上搭建以太坊私有链,需要先安装必要的开发工具和环境,以下是详细步骤:

安装Homebrew(包管理器)
Mac系统默认未安装Homebrew,需先通过终端安装,打开终端(Terminal),执行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装完成后,可通过 brew --version 验证是否成功。
安装Go以太坊客户端(geth)
Geth(Go-Ethereum)是以太坊官方的Go语言客户端,用于搭建私有链,执行以下命令安装:
brew install geth
安装后,通过 geth version 检查版本,确保安装成功(建议安装最新稳定版)。
安装Node.js与Truffle(可选)
若需开发智能合约,可安装Node.js和Truffle框架(以太坊开发工具链),Node.js安装命令:
brew install node
Truffle安装(需先通过npm安装Node.js后执行):

npm install -g truffle
初始化私有链配置
私有链的核心是自定义创世区块(Genesis Block),通过配置文件定义链的初始规则。
创建项目目录
在Mac用户目录下创建以太坊私有链项目文件夹,
mkdir ~/ethereum-private-chain cd ~/ethereum-private-chain
编写创世区块配置文件
在项目目录下创建 genesis.json 文件,内容如下(可根据需求调整参数):

{
"config": {
"chainId": 15, // 私有链ID,避免与公有链冲突
"homesteadBlock": 0, // 启用Homestead规则的区块高度
"eip155Block": 0, // 启用EIP-155规则的区块高度
"eip158Block": 0 // 启用EIP-158规则的区块高度
},
"alloc": {}, // 预分配的账户(地址: 余额),留空表示初始无预分配
"coinbase": "0x0000000000000000000000000000000000000000", // 矿工地址
"difficulty": "0x40000", // 初始难度值(私有链可调低,便于挖矿)
"extraData": "", // 附加数据(可留空或填写自定义信息)
"gasLimit": "0xffffffff", // Gas限制(区块最大Gas消耗)
"nonce": "0x0000000000000042", // 随机数
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", // 混合哈希
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", // 父区块哈希(创世区块为0)
"timestamp": "0x00" // 时间戳
}
参数说明:
chainId:必须唯一,用于区分不同私有链;difficulty:值越小挖矿越容易,私有链可设置为0x40000或更低;alloc:可预分配地址和余额,格式如"0x...": {"balance": "0x100000000000000000000"}(单位为Wei)。
初始化创世区块
使用geth的 init 命令基于配置文件初始化私有链:
geth --datadir ./data init ./genesis.json
执行成功后,会在当前目录下生成 data 文件夹,包含私有链的区块链数据(如 geth/chaindata、keystore 等)。
启动私有链节点
初始化完成后,即可启动私有链节点,启动时可配置多种参数,如网络端口、节点ID、挖矿模式等。
基础启动命令
geth --datadir ./data --nodiscover --rpc --rpcport 8545 --rpcapi "eth,net,web3,personal" --networkid 15 console
参数说明:
--datadir ./data:指定数据目录(与初始化时的目录一致);--nodiscover:禁止自动发现其他节点(私有链无需暴露公网);--rpc:启用HTTP-RPC服务,方便外部应用连接;--rpcport 8545:RPC服务端口(默认8545,可自定义);--rpcapi "eth,net,web3,personal":开放的API接口(如eth用于交易操作,personal用于账户管理);--networkid 15:网络ID(与genesis.json中的chainId一致);console:启动交互式JavaScript控制台(方便直接执行命令)。
后台启动(可选)
若希望节点在后台运行,可使用 nohup 命令:
nohup geth --datadir ./data --nodiscover --rpc --rpcport 8545 --rpcapi "eth,net,web3,personal" --networkid 15 > geth.log 2>&1 &
> geth.log:将日志输出到geth.log文件;2>&1:将错误输出重定向到标准输出;&:让命令在后台执行。
控制台常用操作
启动节点后,终端会进入geth交互式控制台(JavaScript环境),可通过以下命令管理私有链。
查看节点信息
// 查看当前节点版本 admin.nodeInfo // 查看网络连接情况 admin.peers // 查看链ID eth.chainId
账户管理
// 创建新账户(需输入密码)
personal.newAccount("your_password")
// 查看所有账户
eth.accounts
// 查看账户余额(单位:Wei)
eth.getBalance(eth.accounts[0])
// 解锁账户(挖矿或交易前需解锁)
personal.unlockAccount(eth.accounts[0], "your_password")
// 锁定账户
personal.lockAccount(eth.accounts[0])
挖矿操作
// 启动挖矿(第二个参数为线程数,默认为CPU核心数) miner.start(1) // 停止挖矿 miner.stop() // 查看当前挖矿状态 eth.mining
注意:私有链初始难度较低,启动挖矿后很快会生成区块,若需预分配账户余额,可在 genesis.json 的 alloc 字段中配置,或在创世后通过转账交易发送。
交易操作
// 转账(从账户0到账户1,金额1 ETH,单位:Wei)
// 1 ETH = 1e18 Wei
eth.sendTransaction({
from: eth.accounts[0],
to: eth.accounts[1],
value: 1e18,
gas: 21000 // 交易Gas限制,普通转账默认21000
})
// 查看交易状态(txHash为交易哈希)
eth.getTransaction("0x...")
// 等待交易被打包(返回交易收据)
eth.waitForTransactionReceipt("0x...")
连接私有链(外部工具)
除了geth控制台,还可通过HTTP-RPC连接私有链,使用工具如MetaMask、Postman或自定义脚本。
MetaMask连接
- 安装MetaMask浏览器插件(Chrome/Firefox等);
- 点击插件,切换网络到“本地主机”(默认RPC地址为
http://localhost:8545); - 若未自动检测,可手动添加网络:网络名称(如“私有链”)、RPC URL(
http://localhost:8545)、链ID(15); - 导入geth控制台中的账户(点击“导入账户”,粘贴私钥)。
Postman调用API
使用Postman发送HTTP请求,调用RPC接口(如获取账户列表):
- URL:
http://localhost:8545 - Method:
POST - Headers:
Content-Type: application/json - Body(JSON格式):
{ "jsonrpc": "2.0", "method": "eth_accounts", "params": [], "id": 1 } - 响应
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。




