Circle's CCTP V1 and V2 Use Incompatible Nonce Systems, Breaking Cross-Chain Checks
A developer building a cross-chain USDC transfer tracker on Base discovered a critical incompatibility between Circle's CCTP V1 and V2 protocols. In V1, a uint64 nonce is emitted per source domain in the DepositForBurn event, while V2 uses a globally computed bytes32 nonce that does not appear in the event at all. This mismatch means developers cannot directly convert a V1 nonce to verify transfer arrival on a V2 MessageTransmitter contract, causing usedNonces calls to silently revert. The issue surfaces specifically on chains where a V1 TokenMessenger coexists with a V2 MessageTransmitter, such as Base to Ethereum transfers. Developers are advised to confirm contract versions on both source and destination chains before querying nonce-based arrival status.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.


Discussion (0)
Log in to join the discussion and vote.
Log in