以太坊私有链完整实战:从 Windows 单节点到 Linux 多节点互通

·

关键词:以太坊私有链、geth 安装、创世区块、单节点、多节点、Linux 节点、跨平台连接

网上关于以太坊私有链的教程大多雷同,只告诉你如何生成创世区块,却没告诉你如何真正用起这条链。本文从实战角度,带你一步步完成 Windows 单节点 → 多节点 → Linux 节点 ↔ Windows 节点 的完整闭环,保证读完即可动手实验,直接落地 DApp 调试或 DevOps 自动化测试环境

环境准备

维度推荐值
系统Windows 10/11 或 Ubuntu 20.04+
Geth1.10.x+
网络内网或开放 8545、30303、9545、30306 端口
工具Remix、OpenSSL、任意 Markdown 编辑器

Windows 单节点:10 分钟搭好可调式链

1. 下载安装 geth

前往官方 Github → 选取 Windows 可执行版 → 安装并把安装目录加入 PATH
在 CMD 输入:

geth version

看到版本号即代表成功。

不要直接双击 geth.exe —— 它会默默同步主网区块,浪费上百 GB 空间。

👉 想随时查版本号?来这里看个完整的 CLI 速查手册

2. 初始化创世区块(genesis)

新建文件夹 eth-single,创建 genesis.json

{
 "config": {
   "chainId": 10,
   "homesteadBlock": 0,
   "eip155Block": 0,
   "eip158Block": 0
 },
 "alloc": {},
 "coinbase": "0x0000000000000000000000000000000000000000",
 "difficulty": "0x20000",
 "gasLimit": "0x2fefd8",
 "nonce": "0x0000000000000042",
 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "timestamp": "0x00"
}

CMD 定位到该目录,执行:

geth --datadir nodedata0 init genesis.json

成功输出:

Successfully wrote genesis state

3. 启动节点

把复杂参数一次性写到 start0.cmd,双击即可:

geth --rpc --nodiscover --datadir "nodedata0" ^
     --port 30303 --rpcapi "db,eth,net,web3" ^
     --rpccorsdomain "*" --networkid 1001 --ipcdisable console 2>>geth.log

见到 > 提示符即为 JavaScript Console 就绪,下面可以:

小科普:余额单位 = Wei,10^18 Wei = 1 ETH。405 * 10^18 Wei ≈ 405 ETH(测试币,值不了 T-money)。


Windows 多节点:跑起「小局域网」

1. 准备第 2 个节点

启动命令 start1.cmd

geth --rpc --rpcport 9545 --nodiscover --datadir "nodedata1" ^
     --port 30306 --networkid 1001 --ipcdisable console 2>>geth.log

2. 双向握手:admin.addPeer

  1. 节点 Aadmin.nodeInfo.enode,复制字符串。
  2. 节点 B 控制台输入:
admin.addPeer("enode://...ID...@[IP]:30306?discport=0")

控制台打印 true 即成功。可在两边分别执行:

admin.peers.length // > 0

👉 长连接总断开?一招教你捕获 NAT 型网络问题


Linux 节点 + Windows 远程:跨平台组合拳

1. Linux server 上跑节点

#!/bin/bash
nohup geth --rpc --rpcaddr 0.0.0.0 --rpcport 8545 \
           --nodiscover --datadir /root/privatechain/nodedata2 \
           --port 30303 --networkid 1001 --ipcdisable \
           console 2>>/var/log/geth.log &

在 Windows 的 Remix 中设置 Custom - Web3 Provider -> http://<Linux-IP>:8545,即刻看到账户余额。

2. 外网互通「最后一公里」

公网服务器 → 路由器 → 内网本地节点,最简单的办法:

没权限路由器?干脆让 Linux 节点做种子节点,把 Windows 节点通过 admin.addPeer() 连过去,避开 NAT 雷区。

实战小技巧


FAQ(5 组热门问题,拿来即用)

问答
Q1:提示 “Fatal: Failed to write genesis block”?多半是 --datadir 目录已包含旧数据,删掉 geth 文件夹再试。
Q2:miner.start() 后卡死?geth.log 是否出现 Generating DAG;首次挖矿约需要 1-3 分钟 DAG 生成。
Q3:Remix 连不到节点?确认 –rpccorsdomain "*"、–rpcaddr 是否开放 0.0.0.0。若用 HTTPS 域名需改 SecureContect.
Q4:Peer 会很快掉线?双方防火墙没放行 30303/UDP,或节点藏在 NAT 后。admin.staticNodes 或公共种子节点可稳定网络。
Q5:Linux 节点端口占用?lsof -i:8545 看进程 ID,再用 kill -9 释放。

✨ 最终回顾

至此,真正的以太坊私有链 已经跳过「纸片教程」阶段,成为可持续迭代的测试网。祝好运,期待你发链上的第一个 NFT!