We refreshed our doc site!

Bookmarked links may have changed

Read release notes

Stablecoins

Message Format

Formatting arbitrary and application-specific CCTP messages

Message Header

The top-level message header format is standard for all messages passing through CCTP:

FieldBytesTypeIndexDescription
version4uint320Version identifier
sourceDomain4uint324Source domain id
destinationDomain4uint328Destination domain id
nonce8uint6412Unique message nonce
sender32bytes3220Address of MessageTransmitter caller on source domain
recipient32bytes3252Address to handle message body on destination domain
destinationCaller32bytes3284Address permitted to call MessageTransmitter on destination domain, or bytes32(0) if message can be received by any address
messageBodydynamicbytes116Application-specific message to be handled by recipient

Message Body

The message format includes a dynamically sized messageBody field, used for application-specific messages. For example, TokenMessenger defines a BurnMessage with data related to cross-chain transfers:

FieldBytesTypeIndexDescription
version4uint320Version identifier
burnToken32bytes324Address of burned token on source domain
mintRecipient32bytes3236Address to receive minted tokens on destination domain
amount32uint25668Amount of burned tokens
messageSender32bytes32100Address of caller of depositForBurn (or depositForBurnWithCaller) on source domain

Message Nonce

A message nonce is a unique identifier for a message that can only be used once on the destination domain. The next available nonce on a source domain is an integer. On the destination domain, messages can be received in any order, and used nonces are stored as a hash of the source domain and nonce integer value.

Did this page help you?
© 2023-2024 Circle Technology Services, LLC. All rights reserved.