Interacting with a smart contract
Prerequisites
Ensure Starkli and Scarb are installed correctly
Ensure that the below commands are working properly on your system.
starkli --version
scarb --version
If either of the above commands fail, see Setting up your environment.
Introduction
Starkli enables interaction with smart contracts via two primary methods:
-
call
for read-only functions. -
invoke
for write functions that modify the state.
Calling a function
The call
command allows querying a smart contract function without sending a transaction.
As an example you can use the get_owner
function which doesn’t expect any arguments and returns the address of the current owner:
starkli call \
0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
get_owner --network=sepolia
This will return the address that we passed to the constructor during deployment:
[
"0x02cdab749380950e7a7c0deff5ea8edd716feb3a2952add4e5659655077b8510"
]
Invoking a function
To modify the state of the smart contract, use the invoke
command. Unlike the call
command, invoke
submits a transaction to the network.
In this example, we’ll invoke the transfer_ownership
function to transfer the ownership from our deployer address to a different smart wallet address:
starkli invoke \
0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
transfer_ownership \
0x011088d3cbe4289bc6750ee3a9cf35e52f4fa4e0ac9f42fb0b62e983139e135a \
--network=sepolia
After the transaction is accepted on L2, you can confirm the state transition by calling the get_owner
function again:
starkli call \
0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
get_owner \
--network=sepolia
The get_owner
function now returns the new owner address, confirming the successful ownership transfer.