原文作者: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 虚拟机环境。
- 要求
安装 Podman:
参考官网文档进行安装。
- 特性
自动部署监控组件:
• 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 以进程方式运行节点,不依赖容器环境。
适合开发调试阶段使用。
- 要求
必须提前准备二进制文件:
• polkadot
• polkadot-parachain
安装命令:
zombienet setup polkadot polkadot-parachain
- 使用自定义节点
示例(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"
- 特性
本地模式不提供额外监控组件。
配置 Zombienet
Zombienet 使用 JSON 或 TOML 文件进行网络配置。
用于定义:
• 节点结构
• 资源限制
• 共识参数
• 平行链信息
• XCM 通道
CLI 使用方法
基本语法:
zombienet <arguments> <commands>
- CLI 命令
| 命令 | 说明 |
|---|---|
| spawn | 启动网络 |
| test | 执行测试 |
| setup | 下载二进制 |
| convert | 转换配置 |
| version | 显示版本 |
| help | 帮助 |
-
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/