DEV Community

Tom Wang
Tom Wang

Posted on Originally published at tomcn.uk

Circle Gateway vs CCTP: Unified USDC Balance Guide

Circle Gateway can mint USDC on another chain in under half a second, but only after your deposit has sat through 13 to 19 minutes of Ethereum finality. Getting that deposit back without Circle's API takes about a week, and the two functions that do it stop working whenever Circle pauses the contract.

None of that makes Gateway a bad product, just a different one from CCTP, and the pages ranking for "Circle Gateway" don't explain how. They are Circle's own docs, launch coverage that stops at "under 500 ms", and one competitor's comparison that lists CCTP's latency as Gateway's. None prices a transfer. The figures below come from Circle's docs, the contracts on GitHub, live calls to the Gateway API and on-chain reads of the wallet contracts on 31 October 2026.

What Is Circle Gateway?

Gateway gives a wallet address one USDC balance spread across several chains. You deposit USDC into a GatewayWallet contract on any supported chain. Circle's off-chain ledger credits your unified balance once the deposit finalises, and from then on you can mint that value on any other supported chain by signing a message.

It went live on mainnet on 19 August 2025 on seven chains. It now covers 13 domains: Ethereum, Avalanche, OP, Arbitrum, Solana, Base, Polygon PoS, Unichain, Sonic, World Chain, Sei, HyperEVM and Arc. Solana arrived on 14 January 2026 and Arc on 16 September 2026. EURC (on six chains) and cirBTC (on Ethereum and Arc) joined USDC on 23 October 2026.

The EVM contracts share one address on every chain: GatewayWallet at 0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE and GatewayMinter at 0x2222222d7164433c4C09B0b0D809a9b52C04C205. Gateway reuses CCTP's domain IDs (Ethereum 0, Base 6, Arc 26) and nothing else. It has its own contracts, its own attestation signers, its own API, and its own USDC minter role. On Base, GatewayMinter's minter allowance stood at about 44.9m USDC when I read it.

How Does Circle Gateway Work?

A transfer has five steps, and their order is what matters.

  1. Deposit. Call deposit, depositFor, depositWithPermit (EIP-2612) or depositWithAuthorization (EIP-3009) on the wallet contract. A plain ERC-20 transfer to the contract is not credited, and Circle's docs say that USDC is lost.
  2. Sign a burn intent. On EVM chains this is EIP-712 typed data. On Solana it's an ed25519 signature over the byte-encoded struct behind a 16-byte prefix.
  3. Request the transfer. POST /v1/transfer with an array of signed intents. The API checks the signature, fee and balance, then returns HTTP 201 with a transferId, an attestation and Circle's signature.
  4. Mint. Anyone can submit gatewayMint(attestation, signature) on the destination chain, unless you set destinationCaller, in which case only that address can. Attestations expire after 10 minutes, and an unused one is credited back to your balance.
  5. Burn, later. Circle's operator calls gatewayBurn on the source chain. The contract re-verifies your signature, sends the fee to Circle and burns the rest.

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 (0)