如何与Starknet智能合约交互

先决条件

确保 Starkli 和 Scarb 安装正确

确保以下命令在您的系统上正常运行。

starkli --version
scarb --version

介绍

Starkli 通过两种主要方法实现与智能合约的交互:

  • call用于只读功能。

  • invoke用于修改状态的写入函数。

调用函数

call命令允许在不发送交易的情况下查询智能合约功能。

作为示例,您可以使用get_owner不需要任何参数并返回当前所有者的地址的函数:

starkli call \
    0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
    get_owner
    --network=goerli-1

这将返回我们在部署期间传递给构造函数的地址:

[    "0x02cdab749380950e7a7c0deff5ea8edd716feb3a2952add4e5659655077b8510"]

调用函数

要修改智能合约的状态,请使用该invoke命令。与命令不同callinvoke向网络提交交易。

在此示例中,我们将调用该transfer_ownership函数将所有权从部署者地址转移到不同的智能钱包地址:

starkli invoke \
    0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
    transfer_ownership \
    0x011088d3cbe4289bc6750ee3a9cf35e52f4fa4e0ac9f42fb0b62e983139e135a \
    --network=goerli-1

当交易在L2上被接受后,您可以通过get_owner再次调用该函数来确认状态转换:

starkli call \
    0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
    get_owner \
    --network=goerli-1

get_owner函数现在返回新的所有者地址,确认所有权转移成功。