DEV Community

Tom Wang
Tom Wang

Posted on Originally published at tomcn.uk

CCTP V2 vs USDT0: Moving Stablecoins Cross-Chain

Circle starts cutting CCTP V1 burn limits on 31 October 2026 and pauses the V1 contracts on 1 December. From then on, any integration still calling V1 stops moving USDC between chains. Some explainers that still rank give a July date, and one of the most complete third-party guides has the finality thresholds the wrong way round.

CCTP V2 is the replacement, and it changes more than contract addresses. Nonces are assigned off-chain, a transfer can settle before finality if you pay for it, and the burn message can carry hook data that CCTP never executes. On 27 October 2026 I pulled every route's fee from Circle's API and decoded three hours of live burns on Base. The numbers below come from that, followed by a comparison with USDT0, Chainlink CCIP and Wormhole NTT.

What Is CCTP V2 and How Is It Different From V1?

CCTP (Cross-Chain Transfer Protocol) burns native USDC on the source chain and mints it on the destination. There is no liquidity pool in the middle and no wrapped token at the end. Circle's attestation service, Iris, signs a message once the source chain reaches the finality you asked for, and the destination contract mints against that signature.

It is less a bridge than Circle's own mint authority behind an API. The only party you trust is the one you already trust by holding USDC.

CCTP V1 CCTP V2
Nonce uint64, in the source-chain event bytes32, assigned off-chain by Circle
Finality Hard finality only Confirmed (Fast) or finalised (Standard)
Protocol fee None Fast 0–13 bps, Standard free
Hooks None depositForBurnWithHook carries hookData
Expiry None Fast messages get an expirationBlock about 24h out
Status Limits cut from 31 Oct 2026, paused 1 Dec 2026 Current, about 30 domains

The nonce change is the one that breaks indexers. On the source chain, V2 emits zeros where the nonce, finalityThresholdExecuted, feeExecuted and expirationBlock will go, and Circle fills them in when it signs. The V2 DepositForBurn event has no nonce at all. If your V1 reconciliation keyed transfers on a nonce read from the burn event, there is nothing left to key on. Key on source domain plus transaction hash, which is what the attestation API takes anyway, and store eventNonce once Iris returns it.


Read the full article on tomcn.uk →


About the Author

I'm Tom Wang, an AI Developer & Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.

Currently open to new opportunities in fintech, crypto payments, and AI agent engineering.

Top comments (1)

Collapse
 
fintechrailsdigest profile image
Fintech Rails Digest •

the v1 sunset timeline is the part most integration plans are not built around: a cut on oct 31 plus a contract pause dec 1 means any team still testing against v1 next month is building on a deadline. the fast-path fee table is the other detail worth flagging, since 0-13 bps changes the math on small transfers entirely compared to free standard settlement.