You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求指导:在四台不同机器部署并连接Substrate四节点网络

四节点跨机器Substrate网络搭建全指南

Hey Andrea, glad you’ve already put in the work to test Substrate and go through the basics—setting up a 4-node network across separate machines is totally manageable, let’s walk through this step by step so you can get your cluster up and running.

一、前期准备工作

First, make sure all four machines check these boxes:

  • 系统要求:推荐Ubuntu 20.04/22.04(其他Linux发行版也可,但Ubuntu配置最省心),至少2核CPU、4GB RAM,以及足够的磁盘空间存储链数据
  • 网络连通性:所有机器能通过局域网或公网互相访问。如果用公网,一定要开放默认的Substrate节点端口30333(可用防火墙规则:sudo ufw allow 30333/tcp)
  • 开发环境:每台机器都要装好Substrate依赖。如果还没配置,执行以下命令即可:
    curl https://getsubstrate.io -sSf | bash
    
    执行完成后重启终端,或运行source ~/.bashrc让环境变量生效。

二、获取Substrate节点二进制文件

You’ve got two options here—pick whichever fits your use case:

选项1:从源码编译(推荐自定义链场景)

在每台机器上执行这些命令:

git clone https://github.com/paritytech/substrate.git
cd substrate
git checkout latest-release # 也可指定具体版本,比如v0.9.43
cargo build --release

编译完成后,二进制文件会在target/release/substrate,可把它移到/usr/local/bin方便全局调用:

sudo cp target/release/substrate /usr/local/bin/

选项2:下载预编译二进制

如果只是用官方默认链,直接下载对应系统的预编译包,解压后把substrate文件放到/usr/local/bin即可——省时间,不用等待编译。

三、生成统一的链配置文件(仅需在一台机器操作,同步至其他三台)

所有节点必须使用完全一致的链规格才能互联,所以先在一台机器完成以下操作:

  1. 生成初始链规格文件:
    substrate build-spec --chain local > custom-local-chainspec.json
    
  2. 转换成节点可直接读取的原始格式:
    substrate build-spec --chain custom-local-chainspec.json --raw > custom-local-chainspec-raw.json
    
  3. 把custom-local-chainspec-raw.json复制到另外三台机器的同一目录(比如~/substrate-chain-config/),用scp命令最便捷:
    scp custom-local-chainspec-raw.json your-username@node2-ip-address:~/substrate-chain-config/
    # 重复此命令同步给node3和node4
    

四、启动节点并建立互联

我们先启动一个节点作为"引导节点(bootnode)",作为其他节点的接入入口,再依次启动剩余节点。

步骤1:启动节点1(引导节点)

在节点1上执行以下命令,它会生成节点的Peer ID和网络地址,这是其他节点连接的关键:

substrate \
  --chain ~/substrate-chain-config/custom-local-chainspec-raw.json \
  --base-path ~/substrate-data/node1 \
  --name "Node1-Bootnode" \
  --port 30333 \
  --ws-port 9944 \
  --rpc-port 9933 \
  --telemetry-url "wss://telemetry.polkadot.io/submit/ 0" \
  --validator \
  --bootnodes /ip4/<node1-public-ip>/tcp/30333/p2p/<node1-peer-id>

重点提示:节点启动后,在终端输出里找类似Local node identity is: 12D3KooW...的行——这个长字符串就是Peer ID。立刻记下它和节点1的公网/局域网IP,其他节点必须用这两个信息才能连接。

步骤2:启动节点2、3、4

在另外三台机器上执行类似命令,只需修改base-path和name避免冲突,并通过--bootnodes指向节点1的地址:

# 节点2示例命令
substrate \
  --chain ~/substrate-chain-config/custom-local-chainspec-raw.json \
  --base-path ~/substrate-data/node2 \
  --name "Node2-Validator" \
  --port 30333 \
  --ws-port 9944 \
  --rpc-port 9933 \
  --telemetry-url "wss://telemetry.polkadot.io/submit/ 0" \
  --validator \
  --bootnodes /ip4/<node1-public-ip>/tcp/30333/p2p/<node1-peer-id>

提示:因为是不同机器,端口无需修改(同一机器多节点才需要换端口)。如果防火墙未开放30333,记得先配置规则。

五、验证网络是否正常运行

所有节点启动后,通过以下方式确认网络状态:

  • 查看节点终端日志:应该会看到类似Discovered new peer的日志行,这说明节点已经互相发现并连接
  • 使用Polkadot-JS Apps:连接任意节点的WS端口(比如ws://<node-ip>:9944),进入Network > Peers页面,应该能看到所有4个节点都处于连接状态
  • 测试交易:提交一笔小额转账(用测试账户),检查所有节点是否同步新区块。如果同步成功,说明共识机制正常工作!

常见问题排查

  • 节点无法连接?请逐一检查:
    • 防火墙是否允许30333/tcp端口通行
    • --bootnodes中的IP和Peer ID是否正确
    • 所有节点是否使用完全相同的custom-local-chainspec-raw.json文件
  • 同步速度慢?确保机器有足够带宽,或者增加更多引导节点(比如把节点2也设为引导节点,让节点3、4同时连接节点1和节点2)
  • 编译失败?确保安装了所有系统依赖:sudo apt install build-essential cmake pkg-config libssl-dev git

内容的提问来源于stack exchange,提问作者Andrea Mucci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:18:51