# 如何与Starknet智能合约交互 **Published by:** [tala](https://paragraph.com/@talang/) **Published on:** 2023-11-21 **URL:** https://paragraph.com/@talang/starknet-4 ## Content 先决条件确保 Starkli 和 Scarb 安装正确确保以下命令在您的系统上正常运行。starkli --version scarb --version 介绍Starkli 通过两种主要方法实现与智能合约的交互:call用于只读功能。invoke用于修改状态的写入函数。调用函数该call命令允许在不发送交易的情况下查询智能合约功能。 作为示例,您可以使用get_owner不需要任何参数并返回当前所有者的地址的函数:starkli call \ 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \ get_owner --network=goerli-1 这将返回我们在部署期间传递给构造函数的地址:[ "0x02cdab749380950e7a7c0deff5ea8edd716feb3a2952add4e5659655077b8510"] 调用函数要修改智能合约的状态,请使用该invoke命令。与命令不同call,invoke向网络提交交易。 在此示例中,我们将调用该transfer_ownership函数将所有权从部署者地址转移到不同的智能钱包地址:starkli invoke \ 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \ transfer_ownership \ 0x011088d3cbe4289bc6750ee3a9cf35e52f4fa4e0ac9f42fb0b62e983139e135a \ --network=goerli-1 当交易在L2上被接受后,您可以通过get_owner再次调用该函数来确认状态转换:starkli call \ 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \ get_owner \ --network=goerli-1 该get_owner函数现在返回新的所有者地址,确认所有权转移成功。 ## Publication Information - [tala](https://paragraph.com/@talang/): Publication homepage - [All Posts](https://paragraph.com/@talang/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@talang): Subscribe to updates - [Twitter](https://twitter.com/xuweitalang): Follow on Twitter