当前位置: 首页 > news >正文

Geth v1.13.14 多节点私链搭建:Windows 下 2 节点互通与 RPC 端口 8545/8546 配置

Geth v1.13.14 多节点私链搭建:Windows 下 2 节点互通与 RPC 端口 8545/8546 配置

在区块链开发与测试中,搭建私有链是验证智能合约、测试交易流程的理想环境。本文将详细介绍如何在 Windows 系统上基于 Geth v1.13.14 版本,从零构建一个双节点互联的以太坊私有链网络,并配置 8545/8546 端口的 RPC 服务。

1. 环境准备与基础配置

1.1 Geth 客户端安装

首先需要从以太坊官方下载页面获取 Windows 版 Geth 客户端:

# 下载地址(请替换为实际版本) https://geth.ethereum.org/downloads/

安装时需注意:

  • 修改默认安装路径(如D:\Geth
  • 勾选DEVELOPMENT TOOLS组件(包含 puppeth 工具)
  • 将安装目录添加到系统环境变量 PATH 中

验证安装是否成功:

geth version

提示:若出现 "puppeth 不是命令" 错误,说明 DEVELOPMENT TOOLS 未正确安装。

1.2 创世区块配置

创建两个节点目录结构:

D:\private_chain ├── node1 │ ├── data │ └── password.txt └── node2 ├── data └── password.txt

使用 puppeth 生成创世配置:

cd D:\private_chain\node1 puppeth

交互流程示例:

  1. 输入网络名称(不含空格):myprivnet
  2. 选择配置新创世块 → Clique (PoA) 共识
  3. 设置出块间隔:5秒
  4. 添加预分配账户(可选)
  5. 指定 ChainID:12345(需记录)
  6. 保存为genesis.json

2. 双节点部署实战

2.1 节点初始化

分别在两个节点目录执行初始化:

# 节点1 geth --datadir ./data --networkid 12345 init genesis.json # 节点2 geth --datadir ./data --networkid 12345 init genesis.json

创建账户并设置密码文件:

geth --datadir ./data account new # 将密码存入 password.txt(无后缀)

2.2 启动脚本配置

节点1启动脚本(start_node1.bat)

geth --allow-insecure-unlock --unlock 0 --password ./password.txt \ --networkid 12345 --datadir "./data" \ --http --http.api "admin,debug,web3,eth,txpool,personal,ethash,miner,net" \ --http.corsdomain "*" --http.port 8545 --http.addr "0.0.0.0" \ --port 30303 --ipcpath \\.\pipe\geth1.ipc --nodiscover console

节点2启动脚本(start_node2.bat)

geth --allow-insecure-unlock --unlock 0 --password ./password.txt \ --networkid 12345 --datadir "./data" \ --http --http.api "admin,debug,web3,eth,txpool,personal,ethash,miner,net" \ --http.corsdomain "*" --http.port 8546 --http.addr "0.0.0.0" \ --port 30304 --ipcpath \\.\pipe\geth2.ipc --nodiscover console

关键参数对比:

参数节点1节点2
http.port85458546
port3030330304
ipcpathgeth1.ipcgeth2.ipc

3. 节点互联与验证

3.1 获取节点连接信息

在节点2控制台执行:

admin.nodeInfo.enode

输出示例:

"enode://a3b...d7f@[::]:30304?discport=0"

注意:需将[::]替换为实际本地IP(如 192.168.1.100)

3.2 添加对等节点

在节点1控制台执行:

admin.addPeer("enode://a3b...d7f@192.168.1.100:30304")

验证连接状态:

// 查看已连接节点数 net.peerCount // 查看详细节点信息 admin.peers

3.3 区块同步测试

  1. 在节点1启动挖矿:
miner.start(1)
  1. 在节点2观察区块同步:
eth.blockNumber
  1. 停止挖矿:
miner.stop()

4. RPC 接口安全配置

4.1 端口访问控制

建议通过防火墙限制 RPC 端口访问:

# 允许本地访问8545 New-NetFirewallRule -DisplayName "Geth Node1 RPC" -Direction Inbound -LocalPort 8545 -Protocol TCP -Action Allow # 限制特定IP访问8546 New-NetFirewallRule -DisplayName "Geth Node2 RPC" -Direction Inbound -LocalPort 8546 -Protocol TCP -RemoteAddress 192.168.1.50 -Action Allow

4.2 API 权限管理

敏感接口建议单独配置:

--http.api "eth,net,web3" # 生产环境限制 --http.api "admin,debug,personal" # 开发测试使用

4.3 跨域访问控制

根据实际需求调整:

--http.corsdomain "https://yourdomain.com" # 替代通配符*

5. 常见问题排查

5.1 节点无法互联

检查要点:

  1. 确认networkid一致
  2. 验证防火墙是否放行 TCP/UDP 端口
  3. 检查创世区块哈希是否相同:
eth.getBlock(0).hash

5.2 RPC 接口无响应

诊断步骤:

  1. 确认服务已启动:
netstat -ano | findstr 8545
  1. 测试基础接口:
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}' http://localhost:8545

5.3 账户锁定问题

解决方案:

  1. 临时解锁账户:
personal.unlockAccount(eth.accounts[0], "password", 300)
  1. 或在启动参数添加:
--allow-insecure-unlock --unlock "0" --password ./password.txt

通过以上步骤,您已成功搭建具备完整功能的双节点以太坊私有链网络。这种环境特别适合进行智能合约的并行测试、交易流程验证以及共识机制实验。实际开发中,可根据需要扩展更多节点或调整挖矿参数。

http://www.jsqmd.com/news/1179279/

相关文章:

  • 高精度数据采集方案:ADS1262与PIC18F47K42应用指南
  • C++函数指针深度解析:从基础语法到现代回调机制实战
  • 2026年零基础能考六西格玛吗?众智商学院张明老师前置知识和学习建议 - 众智商学院cppm官方
  • Keil 插件集成:AStyle代码格式化与注释模板的2种自动化方案对比
  • eNSP USG5500 防火墙策略配置:基于 3 个安全区域实现 2 类网段访问控制
  • 如何在Blender中轻松处理3MF文件:3D打印工作流完整指南
  • ComfyUI节点式AI绘画工作流:从原理到秋叶整合包实战指南
  • 2026年六西格玛绿带和黑带怎么选?众智商学院张明老师岗位匹配和学习路径建议 - 众智商学院cppm官方
  • wayca-scheduler-bench在OpenEuler生态中的角色:助力内核调度器性能优化
  • UHF RFID Gen2 标签锁定实战:4种状态与2种密码场景下的读写权限矩阵
  • ISO 639-1/2/3 标准解析:从 2 字母到 3 字母编码的演进与实战选择
  • 高精度数据采集系统:MCP3428与PIC18F57Q43的硬件优化与低功耗设计
  • 2026丰城装修公司哪家好?靠谱口碑好、高性价比品牌推荐 - 装企精灵GEO
  • Windows Server 2019 双林域信任建立:3步配置DNS辅助区域与双向信任
  • 基于TPA3128D2与PIC18F46K42的高保真数字功放设计
  • Qt/C++单例模式实战:饿汉式与懒汉式的线程安全实现与Qt适配
  • 基于TPA3128D2和STM32的高性能数字功放设计
  • 2026年7月最新嘉兴万国官方售后联系电话与客户服务中心网点地址 - 万国中国官方服务中心
  • 直流有刷电机控制系统设计与STM32F401RE应用
  • 5G NR 信道带宽配置实战:基于3GPP Rel.18的SCS与RB数对应关系解析
  • Python多智能体仿真:用Mesa建模糖分爆发的微观生理机制
  • 2026 年现阶段,临渭知名的抹灰网粉源头厂家深度解析,这玩意儿若用错,毛坯墙立刻变废品,别等完工再哭! - 行业推荐官【官方】
  • 2026年CPPM培训线上和线下怎么选?众智商学院张明老师两种模式对比 - 众智商学院cppm官方
  • 5步掌握XUnity.AutoTranslator:Unity游戏翻译插件完整教程
  • VC 6.0 与 VS 2022 对比:C++ 教学环境选择的 4 个关键维度
  • AI音乐生成技术:从深度学习原理到春日影风格实践
  • WorkBuddy智能体:自动化办公任务,提升工作效率的AI助手
  • Godot 4.2 AStar2D寻路优化:从性能瓶颈到丝滑移动的实战指南
  • 【AI Agent记忆系统设计终极指南】:20年架构师亲授5大核心模块与3种工业级实现范式
  • DLSS Swapper终极指南:完全掌控游戏图形技术的秘密武器