Contracts are special kinds of accounts that have code, an ABI, and state.
This is a technical description of the protocol and execution. It is recommended to interact with contracts using higher level API supported by aergocli and the various SDKs.
Contracts are deployed by sending a transaction with the contract code as payload to the null receiver (empty receiver address). Upon execution, the contract state is created at an address calculated from the sender and the nonce of the deployment transaction. You can find out the created contract address in the transaction receipt.
See here for details about address generation.
To call contract methods, send a transaction to the contract’s address specifying the function name and arguments as JSON payload.