CCTP

Message Format

Formatting arbitrary and application-specific CCTP messages

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

Select the applicable CCTP version below:

  • CCTP V1
  • CCTP V2
FieldOffsetSolidity TypeLength (bytes)Description
version0uint324Version identifier (0, for CCTP V1)
sourceDomain4uint324Source domain ID
destinationDomain8uint324Destination domain ID
nonce12uint648Unique message nonce (see Sequential Nonces)
sender20bytes3232Address of MessageTransmitter caller on source domain
recipient52bytes3232Address to handle message body on destination domain
destinationCaller84bytes3232Address permitted to call MessageTransmitter on destination domain, or bytes32(0) if message can be received by any address
messageBody116bytesdynamicApplication-specific message to be handled by recipient

A message nonce is a unique identifier for a message that can only be used once on the destination domain. In CCTP V1, message nonces are implemented using Sequential Nonces, where 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.

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.

Select the applicable CCTP version below:

  • CCTP V1
  • CCTP V2
FieldOffsetSolidity TypeLength (bytes)Description
version0uint324Version identifier (0, for CCTP V1)
burnToken4bytes3232Address of burned token on source domain
mintRecipient36bytes3232Address to receive minted tokens on destination domain
amount68uint25632Amount of burned tokens
messageSender100bytes3232Address of caller of depositForBurn (or depositForBurnWithCaller) on source domain
Did this page help you?
© 2023-2025 Circle Technology Services, LLC. All rights reserved.