原文作者:PaperMoon 团队

Polkadot 不只有一条链。你在做身份相关的功能,数据在 People Chain 上;你需要跨链桥的状态,数据在 Bridge Hub 上;你要查 Coretime 分配记录,那是 Coretime Chain 的事。Asset Hub 只是其中一条,Polkadot 生态里有好几条系统平行链,每条都有自己独立的 RPC 端点。

如果你已经看过 Polkadot Hub RPC 节点的搭建指南,本文的部署流程完全一致,核心差别只有一点,每条平行链用自己的链规格文件。本文重点在于告诉你各条链的链规格从哪里拿,以及怎么根据目标平行链调整命令参数。

一、Polkadot 系统平行链一览

平行链

Para ID

主要用途

归档节点存储需求

链规格文件(Chain Spec)

Asset Hub

1000

资产发行、DeFi、NFT、智能合约交互入口

~1.2 TB

asset-hub-polkadot.json

Bridge Hub

1002

跨链桥消息验证与中继

~1.1 TB

bridge-hub-polkadot.json

People Chain

1004

链上身份、账户与社交关系注册

~900 GB

people-polkadot.json

Coretime Chain

1005

Coretime 资源调度与计算资源分配

~900 GB

coretime-polkadot.json

Collectives Chain

1001

Fellowship 技术委员会治理与投票

~1 TB

collectives-polkadot.json

修剪节点(只保留近期状态)所有平行链通用:约 200 GB + 中继链约 822 GB = 合计约 1 TB。

平行链(parachain):Polkadot 中继链上连接的独立区块链,每条平行链有自己的逻辑和状态,但共享中继链的安全性。系统平行链由 Polkadot 治理直接管理,是 Polkadot 生态基础设施的一部分。

如果你需要搭建的是第三方平行链(比如某个 DeFi 协议的平行链),需要到该项目的官方文档里找链规格文件,流程和本文完全相同。

二、硬件与软件要求

硬件

配置项

最低配置(可运行)

高流量 / 生产环境推荐

CPU

8 核

16 核及以上

内存

64 GB RAM

128 GB RAM

存储(归档节点)

依据所运行平行链而定(见系统链存储需求)

高速企业级 NVMe SSD(优先 IOPS 与持续写入性能)

必须使用 NVMe SSD,机械硬盘在初次同步阶段会成为严重瓶颈。

需要开放的端口

端口

服务类型

用途说明

是否需要公网开放

30333

P2P(平行链)

与其他平行链节点进行发现、区块同步与区块传播

✅ 必须

30334

P2P(中继链)

与 Relay Chain 节点建立连接并同步区块

✅ 必须

9944

RPC(WebSocket / HTTP)

钱包、SDK、dApp 连接节点的主要接口

❌ 不建议公网直接开放

9933

RPC(HTTP)

后端脚本或服务调用链上接口

❌ 不建议公网直接开放

9615

监控(Prometheus)

导出节点运行指标(区块高度、peer 数、CPU、内存等)

可选(生产建议内网)

软件

- Ubuntu 22.04 LTS 或同类 Linux 发行版
- Docker(Docker 部署方式必须)
- rclone(快照下载推荐安装)

三、获取链规格文件

系统平行链

系统平行链的链规格文件可以从 Polkadot SDK 仓库直接下载。以 People Chain 为例:

```bash
curl -L https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/cumulus/parachains/chain-specs/people-polkadot.json \
  -o people-polkadot.json
```

把文件名换成你需要的平行链对应的 JSON 文件即可(见上方表格第五列)。

第三方平行链

没有统一的来源,到对应项目的官方文档或 GitHub 仓库里找 chain spec 文件。找到之后,后续部署流程和系统平行链完全一样。

四、Docker 部署

本节以 People Chain 为示例,其他平行链只需替换链规格文件名和容器名称。

4.1 可选:通过快照加速同步

从零同步需要数天时间。如果安装了 rclone,可以用官方快照跳过大部分同步。

各平行链的快照路径:

平行链

快照路径前缀

数据库类型

典型用途

Asset Hub

polkadot-asset-hub-rocksdb-archive

RocksDB

资产发行、DeFi、NFT、EVM 交互

Bridge Hub

polkadot-bridge-hub-paritydb-archive

ParityDB

跨链桥消息验证与中继

People Chain

polkadot-people-rocksdb-archive

RocksDB

链上身份与账户注册

Coretime Chain

polkadot-coretime-rocksdb-archive

RocksDB

Coretime 资源调度

以 People Chain 为例,创建数据目录并下载快照:

```bash
mkdir -p my-node-data/chains/people-polkadot/db
mkdir -p my-node-data/chains/polkadot/db

# 替换 INSERT_LATEST 为 snapshots.polkadot.io 上的最新版本号
export SNAPSHOT_URL="https://snapshots.polkadot.io/polkadot-people-rocksdb-archive/INSERT_LATEST"

rclone copyurl $SNAPSHOT_URL/files.txt files.txt
rclone copy --progress --transfers 20 \
  --http-url $SNAPSHOT_URL \
  --no-traverse --http-no-head --disable-http2 \
  --inplace --no-gzip-encoding --size-only \
  --retries 6 --retries-sleep 10s \
  --files-from files.txt :http: my-node-data/chains/people-polkadot/db/
rm files.txt
```

中继链快照(所有平行链通用):

```bash
export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/INSERT_LATEST"

rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
rclone copy --progress --transfers 20 \
  --http-url $SNAPSHOT_URL_RELAY \
  --no-traverse --http-no-head --disable-http2 \
  --inplace --no-gzip-encoding --size-only \
  --retries 6 --retries-sleep 10s \
  --files-from files.txt :http: my-node-data/chains/polkadot/db/
rm files.txt
```

4.2 启动归档节点

```bash
docker run -d --name people-chain-rpc --restart unless-stopped \
  -p 9944:9944 \
  -p 9933:9933 \
  -p 9615:9615 \
  -p 30334:30334 \
  -p 30333:30333 \
  -v $(pwd)/people-polkadot.json:/people-polkadot.json \
  -v $(pwd)/my-node-data:/data \
  parity/polkadot-parachain:stable2512-1 \
  --name=PeopleChainRPC \
  --base-path=/data \
  --chain=/people-polkadot.json \
  --prometheus-external \
  --prometheus-port 9615 \
  --unsafe-rpc-external \
  --rpc-port=9944 \
  --rpc-cors=all \
  --rpc-methods=safe \
  --rpc-max-connections=1000 \
  --state-pruning=archive \
  --blocks-pruning=archive \
  -- \
  --base-path=/data \
  --chain=polkadot \
  --state-pruning=256 \
  --blocks-pruning=256 \
  --rpc-port=0
```

切换到其他平行链时需要修改的地方:
- `people-polkadot.json` → 对应平行链的链规格文件名
- `--name=PeopleChainRPC` → 改成你喜欢的名字
- `my-node-data/chains/people-polkadot/db` 目录名对应链规格里的链 ID

4.3 启动修剪节点

修剪节点只需把上面命令的两个参数改掉:

```
--state-pruning=archive  →  --state-pruning=1000
--blocks-pruning=archive →  --blocks-pruning=256
```

其余完全相同。

五、Systemd 部署

5.1 下载二进制文件

```bash
wget https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-stable2512-1/polkadot-parachain
chmod +x polkadot-parachain
sudo mv polkadot-parachain /usr/local/bin/
polkadot-parachain --version
```

5.2 创建用户和目录

```bash
sudo useradd -r -s /bin/bash polkadot
sudo mkdir -p /var/lib/people-chain-rpc
sudo cp people-polkadot.json /var/lib/people-chain-rpc/
sudo chown -R polkadot:polkadot /var/lib/people-chain-rpc
```

5.3 归档节点服务文件

```bash
sudo useradd -r -s /bin/bash polkadot
sudo mkdir -p /var/lib/people-chain-rpc
sudo cp people-polkadot.json /var/lib/people-chain-rpc/
sudo chown -R polkadot:polkadot /var/lib/people-chain-rpc
```

写入:

```ini
[Unit]
Description=People Chain RPC Node
After=network.target

[Service]
Type=simple
User=polkadot
Group=polkadot
WorkingDirectory=/var/lib/people-chain-rpc

ExecStart=/usr/local/bin/polkadot-parachain \
  --name=PeopleChainRPC \
  --chain=/var/lib/people-chain-rpc/people-polkadot.json \
  --base-path=/var/lib/people-chain-rpc \
  --port=30333 \
  --rpc-port=9944 \
  --rpc-external \
  --rpc-cors=all \
  --rpc-methods=safe \
  --rpc-max-connections=1000 \
  --prometheus-port=9615 \
  --prometheus-external \
  --state-pruning=archive \
  --blocks-pruning=archive \
  -- \
  --chain=polkadot \
  --base-path=/var/lib/people-chain-rpc \
  --port=30334 \
  --state-pruning=256 \
  --blocks-pruning=256 \
  --rpc-port=0

Restart=always
RestartSec=10
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
```

修剪节点同样只改两行:`--state-pruning=1000` 和 `--blocks-pruning=256`。

5.4 启动服务

```bash
sudo systemctl daemon-reload
sudo systemctl enable people-chain-rpc
sudo systemctl start people-chain-rpc
```

六、验证同步状态

节点启动后需要一段时间同步,用下面的命令实时查看进度:

```bash
curl -H "Content-Type: application/json" \
  -d '{"id":1, "jsonrpc":"2.0", "method": "system_syncState", "params":[]}' \
  http://localhost:9944
```

`currentBlock` 追上 `highestBlock` 时同步完成:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "startingBlock": 0,
    "currentBlock": 3394816,
    "highestBlock": 3394816
  }
}
```

节点健康检查:

```bash
curl -H "Content-Type: application/json" \
  -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
  http://localhost:9944
```

七、节点管理命令速查

Docker

```bash
docker logs -f people-chain-rpc      # 实时日志
docker stop people-chain-rpc         # 停止
docker start people-chain-rpc        # 启动
docker rm people-chain-rpc           # 删除容器(数据目录保留)
```

Systemd

```bash
sudo systemctl status people-chain-rpc      # 查看状态
sudo journalctl -u people-chain-rpc -f      # 实时日志
sudo systemctl stop people-chain-rpc        # 停止
sudo systemctl start people-chain-rpc       # 启动
sudo systemctl enable people-chain-rpc      # 设为开机自启
```

八、适配其他平行链的变量速查

不管你要搭哪条平行链的节点,修改下面这几个地方就够了:

修改位置

需要做什么

原因 / 作用

示例

链规格文件名(如 people-polkadot.json)

替换为目标平行链的 chain spec 文件

决定节点启动时连接哪条链

asset-hub-polkadot.json

快照路径前缀

使用对应平行链的 snapshot 前缀

恢复正确的区块与状态数据库

polkadot-asset-hub-rocksdb-archive

数据目录路径(如 chains/people-polkadot/db)

修改为对应链的目录

每条链拥有独立数据库

chains/asset-hub-polkadot/db

Docker 容器名 / systemd 服务名

改为可区分的名称

同一服务器运行多个节点时避免混淆

polkadot-asset-hub-node

--name= 参数

设置节点显示名称

链上 peer 列表中显示的节点标识

核心的启动命令、端口映射、pruning 参数逻辑,所有 Substrate 平行链都相同。

Polkadot 系统平行链里,Asset Hub 是大多数开发者会先接触的,但 People Chain(身份)和 Bridge Hub(跨链桥)在构建更完整的应用时很快就会用到。搭节点的流程是一样的,最重要的事情是在启动之前先确认好自己要接的是哪条链——链规格文件拿错了,节点会同步到完全错误的网络,数据毫无意义。

阅读原文:https://docs.polkadot.com/node-infrastructure/run-a-node/parachain-rpc/
 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐