1 个不稳定版本
0.0.0 | 2024年4月11日 |
---|
#11 在 #e2e
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文档
与智能合约交互
- 只读操作:对于仅需要从区块链状态中读取的操作。此方法不需要提交外联(跳过
x/--execute
标志)。例如使用get()消息
pop call contract -p ./my_contract --contract $INSTANTIATED_CONTRACT_ADDRESS --message get --suri //Alice
- 修改状态的操作:对于更改存储值的操作,从而改变区块链状态。包括
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将无法实现!
- 由zombienet-sdk提供本地网络部署
- cargo contract是开发基于ink的Wasm智能合约的设置和部署工具!
依赖项
~19–38MB
~676K SLoC