(1)创建 Scrab project
mkdir stk1
cd stk1
scarb init
创建后的工程目录如下:
(2)修改Scarb.toml
[package]
name = "stk1"
version = "0.1.0"
[dependencies]
starknet = "=2.3.1"
[[target.starknet-contract]]
如下:
(3)编辑合约源码文件 lib.cairo
此代码是使用snforge init projectname 时自动生成的代码,snforge init与scarb init 作用相同,可参见Introduction - The Starknet Foundry Book
(3)执行编译
编译的命令为:scarb build
清除命令为:scarb clean
编译之后会生成target目录:
如果有编写单元测试用例,可以执行scarb test,此处省略。
(4)声明合约
使用starkli declare执行,命令如下:
starkli declare target/dev/stk1_HelloStarknet.contract_class.json --account ../account/account_test1.json --keystore ../account/keystore_test1.json --rpc https://starknet-goerli.infura.io/v3/7efae806fda24a77b225da56a27eaba3
其中的account、keystore是上一步生成的,参考《在Starknet测试网上部署合约(1)-创建账户》
(5)部署合约
使用starkli deploy执行,命令如下:
starkli deploy 0x0313ebd88341d41185e0eead714223bd26f76fdc9fdfda58fad91e24e7dac31e --account ../account/account_test1.json --keystore ../account/keystore_test1.json --rpc https://starknet-goerli.infura.io/v3/7efae806fda24a77b225da56a27eaba3
其中:0x0313ebd88341d41185e0eead714223bd26f76fdc9fdfda58fad91e24e7dac31e是上一步declare时Class hash declared:输出的hash。
(6)检测
可以在https://testnet.starkscan.co/网站上查询刚刚部署的合约
上一步 The contract will be deployed at address 后面接的就是合约地址,使用该地址即可在网站上查询到。