Icon HelpCircleForumIcon Link

⌘K

Icon HelpCircleForumIcon Link

Icon LinkInteracting With Contracts

There are 4 ways to interact with contracts: get, dryRun, simulate, call.

Icon Linkget

The get method should be used to read data from the blockchain without using resources. It can be used with an unfunded wallet or even without a wallet at all:

const contract = new Contract(contractId, abi, provider);
 
const { value } = await contract.functions.get_count().get();

Icon LinkdryRun

The dryRun method should be used to dry-run a contract call. It does not spend resources and can be used with an unfunded wallet or even without a wallet at all:

const contract = new Contract(contractId, abi, provider);
 
const { value } = await contract.functions.increment_count(1).dryRun();

Icon Linksimulate

The simulate method should be used to dry-run a contract call, ensuring that the wallet used has sufficient funds to cover the transaction fees, without consuming any resources.

A funded wallet it's required:

const contract = new Contract(contractId, abi, fundedWallet);
 
const { value } = await contract.functions.increment_count(10).simulate();

Icon Linkcall

The call method should be used to submit a real contract call transaction to the node.

Real resources are consumed, and any operations executed by the contract function will be processed on the blockchain.

await contract.functions.increment_count(10).call();