What It Does
Move USDC between chains without leaving your Product Account. Compass integrates Circle’s Cross-Chain Transfer Protocol (CCTP) V2, enabling secure, native USDC transfers between Ethereum, Arbitrum, and Base. Unlike wrapped token bridges, CCTP burns USDC on the source chain and mints native USDC on the destination—no liquidity pools, no slippage, no wrapped tokens.Supported Chains
| Chain | CCTP Domain |
|---|---|
| Ethereum | 0 |
| Arbitrum | 3 |
| Base | 6 |
Transfer Modes
CCTP V2 offers two transfer speeds:| Mode | Speed | Fee |
|---|---|---|
| Standard | ~15-19 min | Free |
| Fast | ~30 seconds | ~0.01% |
How It Works
Bridging happens in two steps: burn on the source chain, then mint on the destination chain.Step 1: Burn USDC
Call the burn endpoint to get a transaction that burns USDC from the Product Account on the source chain.- A
transactionto sign and broadcast (oreip_712typed data if using gas sponsorship) - A
bridge_idto track the transfer
Step 2: Mint USDC
After the burn transaction confirms, Circle’s attestation service validates the transfer. Call the mint endpoint with thebridge_id and burn_tx_hash to get the mint transaction.
- 200 OK: Attestation ready, mint transaction included
- 202 Accepted: Attestation pending, poll again shortly
- 404 Not Found: Bridge ID not found
Implementation Example
This example demonstrates bridging 1 USDC from Base to Arbitrum without gas sponsorship.Note
- Full source code is available in our public GitHub repository: CompassLabs/api_usecases – cctp_bridging
Prerequisites
1
Install Dependencies
Install the required packages.
2
Set Environment Variables
Create a
.env file:Implementation
1
Import Libraries & Initialize SDK
2
Burn USDC on Source Chain
Request and broadcast the burn transaction on Base.
3
Wait for Circle Attestation
Poll the mint endpoint until Circle’s attestation is ready.
4
Mint USDC on Destination Chain
Execute the mint transaction on Arbitrum.
Gas Sponsorship
Both burn and mint transactions support gas sponsorship. Setgas_sponsorship=true to receive EIP-712 typed data instead of an unsigned transaction.
The owner signs the typed data off-chain, then you submit the signature to /gas_sponsorship/prepare to get a transaction that the sender broadcasts.
Prerequisites
Before bridging:- The owner must have a Product Account on both chains
- USDC must be in the Product Account on the source chain (use /earn/transfer to deposit)