recv_internal
andmain
haveid = 0
recv_external
hasid = -1
run_ticktock
hasid = -2
split_prepare
hasid = -3
split_install
hasid = -4
id = 0
, meaning it must define either recv_internal
or main
, but not both.
Receive internal
Therecv_internal
function is invoked when a smart contract receives an inbound internal message.
Any of the following recv_internal
declarations can be used.
balance
is the smart contract balance in nanotons after adding the amountmsg_value
in the inbound message. It is an integer.msg_value
is the amount in nanotons included in the inbound message. It is an integer.in_msg_cell
is the inbound message, given as a cell.in_msg_body
is the inbound message body, equal to the body field inin_msg_cell
. The body is given as a cell slice.
Main
main
is an alias for recv_internal
.
If the intention of the code is to handle inbound internal messages, it is preferable to use recv_internal
over main
,
since recv_internal
states more clearly the intention of the code.
Receive external
Therecv_external
function handles inbound external messages. It allows declarations similar to those for recv_internal
:
msg_value
is always 0
, since external messages cannot carry coins, as they are created outside the blockchain.
The behavior of the stack is identical to the behavior described for recv_internal
.
Run ticktock
Therun_ticktock
triggers when tick and tock transactions occur. It allows the following possible declarations:
balance
is the smart contract balance in nanotons. It is an integer.address
is the address of the current account inside the MasterChain. It is an unsigned 256-bit integer.is_tock
a flag that indicates if it is a tock transaction (-1
) or a tick transaction (0
).
recv_internal
.
Split prepare
Thesplit_prepare
would trigger when a split prepare transaction occurs. Even though the split_prepare
name is currently reserved,
split prepare transactions are currently not in use.
Split install
Thesplit_install
would trigger when a split install transaction occurs. Even though the split_install
name is currently reserved,
split install transactions are currently unavailable.