Interacting with contracts
Before sending transactions to contracts with the Octez client, make sure that your client is configured to use an RPC node for the network that you want to use.
To verify the RPC node that you are using, run octez-client config show
and look at the value in the entrypoint
field.
Sending tez
To send tez from a source account to a target account, use the octez-client transfer
command, as in this example:
octez-client transfer 42 from account1 to account2 --fee-cap 0.9
You can use addresses or local aliases for the source and target accounts, but Octez must have the private key for the source account to sign the transaction.
To check the balance of an account after a transaction, use the octez-client get balance for
command and pass the alias or address of an account, as in this example:
octez-client get balance for account1
Calling smart contracts
To call a smart contract, use the octez-client transfer
command.
Contracts can have aliases in the Octez client like accounts.
This example calls a contract with the alias my-counter
:
octez-client --wait none transfer 0 \
from account1 to my-counter \
--entrypoint 'increment' --arg '5' --burn-cap 0.1
This command calls the increment
entrypoint of the my-counter
contract and includes 0 tez and up to 0.1 tez in fees with the transaction.
It passes the parameter "5" to the entrypoint.
You can use a local alias or the full address for the smart contract.
Because entrypoints accept parameters in Michelson code, you must encode the values that you send as Michelson values. The high-level languages have tools to help you encode values in Michelson. For example, if you are using LIGO to create an entrypoint that accepts an integer, address, and string as a parameter, you can pass the parameter values as a LIGO expression and get the Michelson version with this command:
ligo compile parameter MyContract.jsligo -e "myentrypoint" \
'[5, "tz1QCVQinE8iVj1H2fckqx6oiM85CNJSK9Sx" as address, "hello"]'
The compiled parameter value looks like this:
(Pair 5 "tz1QCVQinE8iVj1H2fckqx6oiM85CNJSK9Sx" "hello")
Then you can use this value for the value of the --arg
argument in the octez-client transfer
command.
Originating (deploying) smart contracts
To deploy (originate) a smart contract to the current network, use the octez-client originate contract
command, as in this example from the Deploy a smart contract tutorial:
octez-client originate contract my-counter \
transferring 0 from account1 \
running increment.tz \
--init 10 --burn-cap 0.1 --force
This command accepts the compiled version of the contract as a Michelson .tz
file.
See the documentation for the high-level language you are using for how to compile a contract.
Like the command to call a smart contract, this command accepts the initial value of the contract storage as a Michelson-encoded value.
After you originate the contract, you can use the local alias from this command to send transactions to its entrypoints.
You can see the aliases of contracts by running the command octez-client list known contracts
.