使用 Zombienet 运行平行链网络

原文作者:PaperMoon团队

Zombienet 是一个面向 Polkadot SDK 区块链网络的高性能测试框架。它支持开发者在 Kubernetes、Podman 以及本地环境中快速部署临时测试网络(Ephemeral Network),用于验证网络行为、测试功能以及评估性能。

通过 Zombienet 提供的统一 CLI 工具,开发者可以:

• 快速创建多节点网络环境

• 自动化运行测试用例

• 验证区块生产、共识、跨链通信等功能

• 模拟真实运行环境下的网络行为

本指南将介绍:

• Zombienet 的安装方式

• 不同运行环境(Provider)的配置方法

• 网络配置文件结构

• 常用 CLI 命令

• 中继链与平行链配置规范

帮助开发者快速构建完整的测试网络环境。

安装 Zombienet

Zombienet 的发行版本托管在官方 GitHub 仓库中。

根据使用环境的不同,可以选择多种安装方式:

• 使用可执行文件

• 使用 Nix

• 使用 Docker

本文重点介绍可执行文件安装方式。

1. 使用可执行文件安装

访问最新发布页面并下载对应操作系统的版本。

Zombienet 使用 pkg 打包生成独立可执行文件,无需额外安装 Node.js。

下载完成后,设置执行权限:

复制代码
chmod +x zombienet-macos-arm64

验证是否安装成功:

复制代码
./zombienet-macos-arm64 version

若输出版本信息,则说明安装成功。

将可执行文件加入 PATH:

复制代码
mv zombienet-macos-arm64 /usr/local/bin/zombienet

之后即可直接使用:

复制代码
zombienet version

运行环境提供器(Providers)

Zombienet 支持多种节点运行后端(Provider):

• kubernetes

• podman

• native(本地进程)

指定 Provider 的方式:

CLI 指定:

复制代码
zombienet spawn network.toml --provider INSERT_PROVIDER

配置文件指定:

复制代码
[settings]
provider = "INSERT_PROVIDER"

不同 Provider 对应不同的部署方式和功能支持。

Kubernetes Provider

Kubernetes 是容器编排平台,适合大规模测试环境部署。

支持的平台包括:

• Google Kubernetes Engine

• Docker Desktop

• kind

1. 要求

必须安装 kubectl:

用于管理集群资源。

需要具备以下权限:

• 创建 Namespace

• 创建 Pod

• 创建 CronJob

这些权限用于管理 Zombienet 部署的节点资源。

2. 特性

• 支持 Prometheus Operator

• 自动部署监控组件

• 提供网络运行状态可视化

Podman Provider

Podman 是无守护进程的容器运行时,支持 Rootless 运行模式。

注意:Zombienet 仅支持 Linux 原生 Podman,不支持 macOS 虚拟机环境。

  1. 要求

安装 Podman:

参考官网文档进行安装。

  1. 特性

自动部署监控组件:

• Prometheus

• Tempo

• Grafana

访问地址示例:

复制代码
Prometheus: http://127.0.0.1:34123
Tempo: http://127.0.0.1:34125
Grafana: http://127.0.0.1:41461

Grafana 默认使用管理员权限。

当网络停止后,相关容器会自动清理。

本地 Provider(Local / Native)

本地 Provider 以进程方式运行节点,不依赖容器环境。

适合开发调试阶段使用。

  1. 要求

必须提前准备二进制文件:

• polkadot

• polkadot-parachain

安装命令:

复制代码
zombienet setup polkadot polkadot-parachain
  1. 使用自定义节点

示例(OpenZeppelin 模板):

复制代码
git clone https://github.com/OpenZeppelin/polkadot-runtime-templates \
&& cd polkadot-runtime-templates/generic-template

构建:

复制代码
cargo build --release

加入 PATH:

复制代码
export PATH=$PATH:INSERT_PATH_TO_RUNTIME_TEMPLATES/parachain-template-node/target/release

配置示例:

复制代码
[relaychain]
chain = "rococo-local"
default_command = "./bin-v1.6.0/polkadot"

[parachain]
id = 1000

    [parachain.collators]
    name = "collator01"
    command = "./target/release/parachain-template-node"
  1. 特性

本地模式不提供额外监控组件。

配置 Zombienet

Zombienet 使用 JSON 或 TOML 文件进行网络配置。

用于定义:

• 节点结构

• 资源限制

• 共识参数

• 平行链信息

• XCM 通道

CLI 使用方法

基本语法:

复制代码
zombienet <arguments> <commands>
  1. CLI 命令
命令 说明
spawn 启动网络
test 执行测试
setup 下载二进制
convert 转换配置
version 显示版本
help 帮助
  1. CLI 参数

    -p, --provider
    -d, --dir
    -f, --force
    -l, --logType
    -m, --monitor
    -c, --spawn-concurrency
    -h, --help

全局设置(Settings)

接口定义:

复制代码
export interface GlobalVolume {
  name: string;
  fs_type: string;
  mount_path: string;
}

可配置项:

• timeout

• bootnode

• provider

• grafana

• prometheus

• telemetry

• tracing

• image_pull_policy

• local_ip

• node_verifier

示例:

复制代码
[settings]
timeout = 1000
bootnode = false
provider = "kubernetes"
backchannel = false

中继链配置(Relay Chain Configuration)

资源定义:

复制代码
export interface Resources {
  resources: {
    requests?: {
      memory?: string;
      cpu?: string;
    };
    limits?: {
      memory?: string;
      cpu?: string;
    };
  };
}

CLI 版本枚举:

复制代码
export enum SubstrateCliArgsVersion {
  V0 = 0,
  V1 = 1,
  V2 = 2,
  V3 = 3,
}

节点示例

复制代码
[relaychain]
default_command = "polkadot"
default_image = "polkadot-debug:master"
chain = "rococo-local"
chain_spec_path = "INSERT_PATH_TO_CHAIN_SPEC"
default_args = ["--chain", "rococo-local"]

[[relaychain.nodes]]
name = "alice"
validator = true
balance = 1000000000000

[[relaychain.nodes]]
name = "bob"
validator = true
balance = 1000000000000

节点组配置(Node Groups)

示例:

复制代码
[[relaychain.node_groups]]
name = "group-1"
count = 2
image = "polkadot-debug:master"
command = "polkadot"
args = ["--chain", "rococo-local"]

用于批量部署同类型节点。

平行链配置(Parachain Configuration)

主要参数:

• id

• genesis_wasm_path

• genesis_state_path

• chain_spec_path

• add_to_genesis

• onboard_as_parachain

示例:

复制代码
[parachain]
id = 100
add_to_genesis = true
cumulus_based = true
genesis_wasm_path = "INSERT_PATH_TO_WASM"
genesis_state_path = "INSERT_PATH_TO_STATE"

整理者配置(Collator)

示例:

复制代码
[[parachain.collators]]
name = "alice"
image = "polkadot-parachain"
command = "polkadot-parachain"

Collator 负责平行链区块生产。

整理者组配置(Collator Groups)

示例:

复制代码
[[parachain.collator_groups]]
name = "group-1"
count = 2
image = "polkadot-parachain"
command = "polkadot-parachain"

用于部署多个 Collator 实例。

XCM 配置(HRMP Channels)

接口定义:

复制代码
export interface HrmpChannelsConfig {
  sender: number;
  recipient: number;
  max_capacity: number;
  max_message_size: number;
}

参数说明:

• sender:发送链 ID

• recipient:接收链 ID

• max_capacity:最大队列容量

• max_message_size:最大消息体积

用于配置平行链间通信通道。

总结

Zombienet 为 Polkadot 生态提供了标准化网络测试框架,支持:

• 多 Provider 运行环境

• 自动化部署

• 监控集成

• 跨链测试

• 灵活配置管理

通过合理配置网络文件与 Provider,可构建完整的本地或云端测试环境,为平行链开发、调试与上线提供可靠保障。

原文链接:https://docs.polkadot.com/parachains/testing/run-a-parachain-network/

相关推荐
qyresearch_13 小时前
移动感应健身:全球市场扩张下的中国机遇与破局之道
大数据·人工智能·区块链
软件工程小施同学16 小时前
区块链论文速读 CCF A--VLDB 2025 (2) 附pdf下载
pdf·区块链
MQLYES1 天前
26-总结
区块链
Rockbean2 天前
10分钟智能合约:进阶实战-3.3 拒绝服务攻击
web3·智能合约·solidity
MQLYES2 天前
25-ETH-美链
区块链
China_Yanhy2 天前
入职 Web3 运维日记 · 第 13 日:洗钱风云 —— 链上合规 (KYT) 与多签钱包的权力游戏
运维·web3
王解2 天前
SDK 与 API: 从概念到应用的深度解析
sdk
量化炼金 (CodeAlchemy)3 天前
【交易策略】低通滤波器策略:在小时图上捕捉中期动量
大数据·人工智能·机器学习·区块链
那年那棵树3 天前
【WebGis】基于WebGis的系统设计与开发(2026.2.11更新)
web3·课程设计