Each transaction can have metadata attached to it by the block producer. One metadata is attached per input. This allows for fraud proofs without state commitments. (See also: Compact Fraud Proofs for UTXO Chains Without Intermediate State Serialization.)

Note that all metadata objects are exactly 8 bytes.


name type size description
blockHeight uint32 4 Rollup block height.
rootIndex uint8 1 Root index in block.
transactionIndex uint16 2 Transaction index in root.
outputIndex uint8 1 Output index in transaction.

Metadata uniquely identifies an exact output in the ledger, first by the block height, then the root, transaction index, and finally output index. Essentially, metadata "references" an exact output. This allows for both compact fraud proofs without serializing the state, leveraging the property that UTXOs are produced and consumed at most once, and smaller transaction payloads than using UTXO IDs directly (a 32-byte hash).


name type size description
token uint32 4 Token ID.
blockNumber uint32 4 Ethereum block number.

Deposit metadata partially uniquely identifies a deposit. The last part of the deposit registry key is the owner address, which can be recovered from the witness (of valid transactions).