The ID of a message is computed as the
hash of:
hash(byte[32] ++ byte[32] ++ byte[32] ++ uint64 ++ byte[])
. The address values are serialized as a byte array of length 32 left-padded with zeroes, and all other value types are serialized according to the standard
transaction serialization . Note that the message data length is not included since there is only one dynamically sized field and can be implicitly determined by the hash preimage size.
The nonce value for
InputMessage
is determined by the sending system and is published at the time the message is sent. The nonce value for
OutputMessage
is computed as the
hash of the
Transaction ID that emitted the message and the index of the message receipt
uint16
(with canonical encoding):
hash(byte[32] ++ canonical(uint16))
.
The UTXO ID of collected fees in a block is the block height as a 32-byte big-endian unsigned integer (i.e. the first byte of the 32-byte array is the most significant byte, and so on).