Contract host functions¶
This is a reference of the functions in the concordium
module supplied by a
host running smart contract Wasm module.
Warning
These functions are not meant to be called directly by smart contract writers. Instead, they are to be used behind a more idiomatic, language-specific API supplied by a library, such as concordium-std for Rust.
Logging events¶
-
concordium.
log_event
(start, length)¶ Adds a log item from an array of bytes. If not enough data can be read then this function will trap and abort execution of the smart contract.
- Parameters
start (i32) – Pointer to start of the item in linear memory.
length (i32) – Number of bytes in the item.
Function parameter¶
-
concordium.
get_parameter_size
() → i32¶ Get the byte size of the parameter.
- Returns
byte size of the parameter
- Return type
i32
-
concordium.
get_parameter_section
(location, length, offset) → i32¶ Read a section of the parameter to the given location. Return the number of bytes read. The location is assumed to contain enough memory to write the requested length into.
- Parameters
location (i32) – Pointer (in Wasm linear memory) of the write location.
length (i32) – Number of bytes to read from the parameter.
offset (i32) – Starting offset in the parameter bytes.
- Returns
The number of actual bytes read. This is always less than or equal to
length
. It is less if the parameter does not have enough bytes available (i.e., ifoffset + length > parameter_size
).- Return type
i32
Smart contract instance state¶
-
concordium.
state_size
() → i32¶ Get the byte size of the contract state.
- Returns
byte size of the contract state
- Return type
i32
-
concordium.
load_state
(location, length, offset) → i32¶ Read a section of the state to the given location. Return the number of bytes written. The location is assumed to contain enough memory to write the requested length into. If not, the function will trap and abort execution of the contract.
- Parameters
location (i32) – Pointer to write location.
length (i32) – Number of bytes to read
offset (i32) – Starting offset in the bytes
- Returns
The number of read bytes
- Return type
i32
-
concordium.
write_state
(location, length, offset) → i32¶ Write a section of the state to the given location. Return the number of bytes written. The location is assumed to contain enough memory to write the requested length into.
- Parameters
location (i32) – Pointer to read location
length (i32) – Number of bytes to write
offset (i32) – Starting offset in the bytes
- Returns
The number of written bytes
- Return type
i32
-
concordium.
resize_state
(new_size) → i32¶ Resize state to the new value (truncate if new size is smaller). The additional state is initialized to 0.
- Parameters
new_size (i32) – New size of contract state in bytes.
- Returns
0 if this was unsuccessful (new state too big), or 1 if successful
- Return type
i32
Chain data¶
Functions for reading information about the chain.
-
concordium.
get_slot_time
() → i64¶ Get time in milliseconds at the beginning of this block.
- Returns
Time in milliseconds
- Return type
i64
-
concordium.
get_slot_number
() → i64¶ Get the slot number of the current block.
- Returns
Slot number
- Return type
i64
-
concordium.
get_block_height
() → i64¶ Get block height of the current block.
- Returns
Block height
- Return type
i64
-
concordium.
get_finalized_height
() → i64¶ Get the height of the last finalized block, i.e., block to which the current block has a finalized pointer to.
- Returns
Finalized height
- Return type
i64
Only in init function¶
Functions only accessible for smart contract init functions. If called from a receive function execution will abort.
-
concordium.
get_init_origin
(start)¶ Get the address of the account that triggered the init function.
- Parameters
start (i32) – Pointer of location to put the address. The address is 32 bytes and the memory must be large enough to contain it.
Only in receive function¶
Functions only accessible for smart contract receive functions.
-
concordium.
get_receive_invoker
(start)¶ Get the address of the account that initiated the top-level transaction which lead to triggering the receive function.
- Parameters
start (i32) – Pointer of location to put the address
-
concordium.
get_receive_sender
(start)¶ Get the address of the account or contract, triggering the receive function.
- Parameters
start (i32) – Pointer of location to put the address
-
concordium.
get_receive_self_address
(start)¶ Get the address of the contract instance, running the receive function.
- Parameters
start (i32) – Pointer of location to put the address
-
concordium.
get_receive_owner
(start)¶ Get the address of the account, which created the contract instance.
- Parameters
start (i32) – Pointer of location to put the address
-
concordium.
get_receive_self_balance
() → i64¶ Get the current balance of the contract instance.
- Returns
Current balance of the contract instance
- Return type
i64
Action description¶
The description of actions to execute on the chain, returned by smart contract receive function.
-
concordium.
accept
() → i32¶ Constructs a accept action, indicating the function was successful.
- Returns
Identifier of the resulting action.
- Return type
i32
-
concordium.
simple_transfer
(addr_bytes, amount) → i32¶ Constructs a simple transfer of GTU action.
- Parameters
addr_bytes (i32) – Pointer to the address of the receiver
amount (i64) – The amount of GTU to send
- Returns
Identifier of the resulting action.
- Return type
i32
-
concordium.
send
(addr_index, addr_subindex, receive_name, receive_name_len, amount, parameter, parameter_len) → i32¶ Constructs an action for sending a message to another smart contract instance.
- Parameters
addr_index (i64) – Index of the smart contract instance address to send to
addr_subindex (i64) – Subindex of the smart contract instance address to send to
receive_name (i32) – Pointer to a memory location containing the name of the receive function to invoke
receive_name_len (i32) – Length of the receive function name. Determines how much memory will be read by the host.
amount (i64) – The amount of GTU to invoke the receive function with
parameter (i32) – Pointer to a memory location containing the parameters to the receive function
parameter_len (i32) – Length of the parameters
- Returns
Identifier of the resulting action.
- Return type
i32
-
concordium.
combine_and
(first, second) → i32¶ Combine two actions using
and
. Only run the second if the first succeeds. If the given identifiers are not valid, i.e., returned by a previous call to one of theactions
functions, this function will abort.- Parameters
first (i32) – Identifier of the first action.
second (i32) – Identifier of the second action.
- Returns
Identifier of the resulting action.
- Return type
i32
-
concordium.
combine_or
(first, second) → i32¶ Combine two actions using
or
. Only runs the second of the first fails. If the given identifiers are not valid, i.e., returned by a previous call to one of theactions
functions, this function will abort.- Parameters
first (i32) – Identifier of the first action.
second (i32) – Identifier of the second action.
- Returns
Identifier of the resulting action.
- Return type
i32