#parachain #polkadot #tool #version #e2e #zombie-net #pop

app lollipop

Polkadot 开发的多功能工具

1 个不稳定版本

0.0.0 2024年4月11日

#11#e2e

MIT 许可证

150KB
2.5K SLoC

Pop CLI

Polkadot 开发的多功能工具。

安装

以下是如何安装 Pop CLI

cargo install --locked --git https://github.com/r0gue-io/pop-cli

ℹ️ 将很快提供一个 crates.io 版本!

入门

并行链

使用 pop 从模板生成新的并行链

# Create a minimal parachain
pop new parachain my-app
# Get a pallet-contracts enabled parachain
pop new parachain my-app cpt
# Get a evm compatible parachain
pop new parachain my-app fpt

使用 pop 构建你的并行链。

# Build your parachain
pop build parachain -p ./my-app

或者

cd my-app
pop build parachain

你也可以通过提供代币符号(如链元数据中所示)、代币小数和开发账户的初始捐赠来定制你的并行链。以下是方法

# Create a minimal parachain with "DOT" as token symbol, 6 token decimals and 1 billion tokens per dev account
pop new parachain my-app --symbol DOT --decimals 6 --endowment 1_000_000_000

还有一个简短版本

pop new parachain my-app -s DOT -d 6 -i 1_000_000_000

要创建一个新的模块,只需 pop new pallet。然后就可以了。你将有一个准备好的 pallet-template 供你修改。要定制新模块,可以参考以下选项

# create a pallet with name `pallet-awesome` in the current working directory
pop new pallet pallet-awesome
# or with options
pop new pallet pallet-awesome --authors Me --description "This pallet oozes awesomeness" --path my_app/pallets

最后,你需要构建和运行它。

cd my-app
pop build parachain --release

对于运行任何并行链,我们建议使用 zombienet。有关使用 pop up parachain 的更多信息,请参阅以下内容。

合约

使用 pop 创建智能合约

# Create a minimal smart contract
pop new contract my_contract

测试智能合约

# Test an existing smart contract
pop test contract -p ./my_contract

构建智能合约

# Build an existing smart contract
pop build contract -p ./my_contract

要部署合约,你需要你的链正在运行。为了测试目的,一个选项是运行 substrate-contracts-node

cargo install contracts-node
substrate-contracts-node

ℹ️ 我们计划在将来自动化此过程。

部署和实例化智能合约

pop up contract -p ./my_contract --constructor new --args "false" --suri //Alice

一些可用的选项包括

  • 指定要使用的合约 constructor ,在这个例子中是 new()
  • 指定构造函数的参数(args),在这个例子中是 false
  • 指定使用 --suri 上传和实例化合约的账户,在这个例子中是默认的开发账户 //Alice。对于其他账户,必须提供实际的密钥,例如以 0x 前缀的 64 位十六进制字符串,或助记词。

⚠️ 仅限开发使用:在将此功能用于生产项目之前,请在此处使用更安全的签名方法。我们将在未来寻找提供替代解决方案!

  • 您还可以使用--url ws://your-endpoint指定您的节点url,默认情况下,它使用ws://localhost:9944

有关选项的更多信息,请参阅cargo-contract文档

与智能合约交互

  1. 只读操作:对于仅需要从区块链状态中读取的操作。此方法不需要提交外联(跳过x/--execute标志)。例如使用get()消息
pop call contract -p ./my_contract --contract $INSTANTIATED_CONTRACT_ADDRESS --message get --suri //Alice
  1. 修改状态的操作:对于更改存储值的操作,从而改变区块链状态。包括x/--execute标志,以在链上提交外联。

执行flip()消息的示例

pop call contract -p ./my_contract --contract $INSTANTIATED_CONTRACT_ADDRESS --message flip --suri //Alice -x

E2E测试

进行端到端测试时,您需要一个带有pallet contracts的Substrate节点。您不需要在后台运行它,因为节点是为每个测试独立启动的。要安装最新版本

cargo install contracts-node --git https://github.com/paritytech/substrate-contracts-node.git

如果您想运行带有pallet-contracts的其他节点,您需要更改CONTRACTS_NODE环境变量

export CONTRACTS_NODE="YOUR_CONTRACTS_NODE_PATH"

在智能合约上运行e2e测试

# Run e2e tests for an existing smart contract
 pop test contract  -p ./my_contract --features e2e-tests

本地构建Pop CLI

使用所有功能本地构建工具

cargo build --all-features

仅针对 parachain 功能构建工具

cargo build --features parachain

仅针对合约功能构建工具

cargo build --features contract

使用Zombienet启动网络

您可以使用以下方式使用zombienet启动本地网络

pop up parachain -f ./tests/zombienet.toml -p https://github.com/r0gue-io/pop-node

ℹ️ Pop CLI会自动获取必要的polkadot二进制文件。目前,如果不在Linux系统上,这些文件将被构建。

测试Pop CLI

要本地测试工具。

运行单元测试

cargo test

由于构建测试或合约可能需要时间,因此一些测试已从正常测试流程中分离出来。

运行涉及构建合约的单元测试

cargo test --features unit_contract

运行涉及构建 parachain 的单元测试

cargo test --features unit_parachain

然后我们有检查整个流程是否正确的测试

运行合约功能的e2e测试

cargo test --features e2e_contract

运行 parachain 功能的e2e测试

cargo test --features e2e_parachain

运行所有测试

cargo test --all-features

致谢

没有这些出色的crate,Pop CLI将无法实现!

依赖项

~19–38MB
~676K SLoC