这篇文章上次修改于 492 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
本文讲述如何将合约部署到测试网。
如果想部署到 dev net,可以参考 Run a CKB Dev Blockchain 先启动一条 dev chain,合约部署过程是一样的。
1 生成账户
根据密钥生成地址:https://ckb.tools/generator
或者使用 ckb-cli 生成账户:
ckb-cli account new
测试网充值:https://faucet.nervos.org/
2 将账户导入 ckb-cli
# 创建账户
echo 111111b054d5dd04013156dced8ba2ce4d8cc5973e10d905a228ea1abc267e60 >> privkey
# 将账户导入 ckb-cli
$ ckb-cli account import --privkey-path privkey
Password:
address:
mainnet: ckb1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqw0q40f6t2slk2pyraxmxqh9z5mu4dl7wcykl27s
testnet: ckt1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqw0q40f6t2slk2pyraxmxqh9z5mu4dl7wc2y595g
address(deprecated):
mainnet: ckb1qyqv7p27n5k4plv5zg86dkvpw29fhe2mluas5xgaqk
testnet: ckt1qyqv7p27n5k4plv5zg86dkvpw29fhe2mluasfrkzv2
lock_arg: 0xcf055e9d2d50fd94120fa6d981728a9be55bff3b
# 查看余额
$ ckb-cli wallet get-capacity --address ckt1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqw0q40f6t2slk2pyraxmxqh9z5mu4dl7wc2y595g
total: 20000000000.0 (CKB)
3 切换 ckb-cli 的 url
将 ckb-cli 的 url 切换为测试网:
ckb-cli
config --url https://testnet.ckb.dev
4 编译合约
参考:https://github.com/axonweb3/axon-contract/tree/main
capsule build -n stake --release
其中,stake 是合约项目名。
5 部署合约
参考:https://github.com/wenyuanhust/axon-contract/blob/d1/deployment-stake.toml
在 capsule 根目录下添加文件 deploy.toml,添加如下内容
[[cells]]
name = "stake"
enable_type_id = true
location = { file = "build/release/stake" }
# Replace with your own lock if you want to unlock deployed cells.
# For example the secp256k1 lock
[lock]
code_hash = "0x1111116f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8"
args = "0x111111aa92da8821d432700cb6be72d7a8971917"
hash_type = "type"
创建空目录 migrations-stake,
执行如下命令:
ckb-cli deploy gen-txs --deployment-config ./deployment-stake.toml --migration-dir ./migrations-stake --from-address ckt1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqdwcq424yk63qsagvnspjmtuukh4zt3j9cdgn4kv --info-file ./info-stake.json --sign-now
ckb-cli deploy sign-txs --from-account ckt1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqdwcq424yk63qsagvnspjmtuukh4zt3j9cdgn4kv --info-file ./info-stake.json --add-signatures
ckb-cli deploy apply-txs --info-file ./info-stake.json --migration-dir ./migrations-stake
6 升级合约
ckb-cli deploy gen-txs --deployment-config ./deployment-stake.toml --migration-dir ./migrations-stake --from-address ckt1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqdwcq424yk63qsagvnspjmtuukh4zt3j9cdgn4kv --info-file ./info-stake0.json --sign-now
ckb-cli deploy sign-txs --from-account ckt1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsqdwcq424yk63qsagvnspjmtuukh4zt3j9cdgn4kv --info-file ./info-stake0.json --add-signatures
ckb-cli deploy apply-txs --info-file ./info-stake0.json --migration-dir ./migrations-stake
参考
How to use ckb-cli to deploy a contract
dapps-on-ckb-workshop-code
没有评论