本篇博客文档详细记录了基于FISCO BCOS 3.8.0 Pro版本的三节点分布式联盟链部署全过程,重点剖析了Tars服务配置异常、节点加密不一致导致共识失败、局域网外无法通信等核心问题的排查与解决方案。
📋 部署环境与前期准备

硬件与系统环境
- 节点数量:3台独立物理机
- 节点IP:10.8.0.2(生产节点)、10.8.0.3(仓储节点)、10.8.0.4(检测节点)
- 操作系统:Ubutnu 20.04 LTS x86_64
- 硬件配置:4核8G内存、50G SSD存储
- 网络环境:初始为局域网环境,后续通过WireGuard实现跨地域组网
核心依赖软件
- FISCO BCOS版本:v3.8.0 Pro
- 部署工具:BcosBuilder v3.8.0
- 微服务框架:Tars v2.4.10
🛠️ BcosBuilder工具下载与初始化
下载官方部署工具
1 | # 挑选主要内容阐述 |
1 | #toml配置文件 |
⚠️ Tars服务配置问题排查与修复
问题现象
执行bash deploy.sh tars命令时,出现以下错误:
1 | Error: /usr/local/tars/cpp/bin/tarsnode is not a directory |
问题根源
官方文档中描述/tars/cpp/bin/tarsnode为文件夹路径,但实际安装后该路径是一个二进制可执行文件,导致脚本中的目录检查逻辑失败。
解决方案
修改BcosBuilder脚本文件,移除错误的目录检查:
1 | # 编辑tars部署脚本 |
🚀 节点配置生成与分布式部署
生成节点配置文件
1 | # 生成所有节点的配置 |
分发配置到各节点
1 | # 分发到10.8.0.3节点 |

🔒 节点加密不一致导致共识失败问题解决
问题现象
所有节点启动成功,但无法形成共识,节点日志中出现以下错误:
1 | Handshake failed: encryption mode mismatch |
问题根源
在配置文件分发过程中,部分节点的config.ini文件中sm_crypto参数默认采用不加密,导致节点间国密模式不一致,三次握手协议失败。
解决方案
统一所有节点的加密配置:
1 | # 在每个节点上编辑config.ini |
重启所有节点服务
1 | # 在每个节点上执行 |
🖥️ 控制台连接与节点状态验证
下载并启动控制台
1 | # 在任意节点上下载控制台 |
验证节点状态
1 | # 查看节点列表 |
正常输出应显示3个节点均处于运行状态,且区块高度一致。

🌐 跨地域通信问题与WireGuard解决方案
问题现象
在局域网环境下节点通信正常,但当节点部署在不同地域的网络中时,无法建立P2P连接,数据无法上链。
问题根源
不同地域的节点位于NAT网络之后,没有公网IP,无法直接进行P2P通信。
解决方案
采用WireGuard虚拟局域网技术,为所有节点分配统一的虚拟IP地址,实现跨地域的安全加密通信。
