在Starknet测试网上部署合约(2)-部署合约

(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 后面接的就是合约地址,使用该地址即可在网站上查询到。

参考:Starkli 101 - Starkli Book

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于Python合约交易,您可以使用Starknet提供的相关工具和库来进行交互。在官方文档中,给出了两种执行交易的方式。 第一种方式是使用合约接口进行交易。您可以通过以下代码示例来执行交易: ``` await (await map_contract.functions["put"].invoke(key=10, value=20, max_fee=int(1e16))).wait_for_acceptance() ``` 这种方式适用于只有一个调用的情况。 第二种方式是使用AccountClient的execute方法进行交易。您可以通过以下代码示例来执行交易: ``` call = map_contract.functions["put"].prepare(key=10, value=20) resp = await account_client.execute(calls=call, max_fee=int(1e16)) await account_client.wait_for_tx(resp.transaction_hash) ``` 在这种方式下,您可以在一个交易中执行多个调用。您可以通过准备多个调用,并将它们作为列表传递给execute方法来实现: ``` calls = [ map_contract.functions["put"].prepare(key=10, value=20), map_contract.functions["put"].prepare(key=30, value=40), map_contract.functions["put"].prepare(key=50, value=60), ] resp = await account_client.execute(calls=calls, max_fee=int(1e16)) await account_client.wait_for_tx(resp.transaction_hash) ``` 通过使用这些方法,您可以在Python中进行Starknet合约交易。请确保您已经按照官方文档提供的步骤正确设置了环境和依赖。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [使用python和starknet.js在一笔交易内调用多个合约](https://blog.csdn.net/kongtaoxing/article/details/128596172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [deal:通过具有静态检查器和测试生成功能的Python合约设计](https://download.csdn.net/download/weixin_42116713/18275198)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值