This tutorial will guide you through bridging USDC across different blockchain networks using Circle's Cross-Chain Transfer Protocol (CCTP).
📍 Deployed at: https://cctp-bridged.vercel.app/
💻 Source code: https://github.com/anhoangphuc/cctp-bridged
USDC bridging allows you to transfer USDC tokens from one blockchain network to another. Unlike traditional bridges that lock tokens, CCTP burns USDC on the source chain and mints an equivalent amount on the destination chain, ensuring the USDC remains native and fully backed. The platform currently supports only testnet mode. For mainnet, you can pull your code and run yourself.
For EVM Chains (Ethereum, Polygon, etc.):
For Solana:
You need USDC on the source chain you're bridging from
✅ You're ready! You'll now see your wallet balances displayed.
Before you start bridging, let's understand what happens in each step.
What it does: Gives permission to the bridge contract to spend your USDC
Why it's needed: Smart contracts on EVM chains need explicit permission to move tokens from your wallet. This is a security feature.
⏱️ Time: ~15-60 seconds
💰 Gas cost: Low (~$0.10-$2)
What it does: Burns your USDC on the source chain
Why it's needed: CCTP works by destroying USDC on the source chain and creating fresh USDC on the destination chain. This maintains 1:1 backing.
⚠️ Important: After this step, your USDC is burned. You must complete the remaining steps to receive it on the destination chain.
⏱️ Time: ~30 seconds - 2 minutes
💰 Gas cost: Medium (~$0.20-$5)
What it does: Gets a cryptographic proof from Circle's attestation service
Why it's needed: The destination chain needs proof that USDC was actually burned on the source chain.
⏱️ Time: ~1-3 minutes
💰 Gas cost: None (read operation)
💡 Note: No wallet interaction needed. The app handles this automatically.
What it does: Mints fresh USDC on the destination chain
Why it's needed: This is the final step where you receive your USDC on the destination chain.
⏱️ Time: ~30 seconds - 2 minutes
💰 Gas cost: Medium (~$0.20-$5)
✅ Success: You now have USDC on the destination chain!
When bridging from Solana, there are only 3 steps (no approval needed because Solana uses a different token model).
Step 1: Deposit 🔥 (Burns USDC on Solana)
Step 2: Fetch Attestation 📝 (Gets Circle's proof)
Step 3: Claim 🎉 (Mints USDC on destination)
Transfer USDC between Ethereum-compatible chains (e.g., Ethereum → Polygon)
Look for the bridge card showing your connected EVM chain. You'll see your balances displayed.
✅ Done! Your USDC is now on the destination chain. Click + New Bridge to bridge more.
Transfer USDC from any EVM chain to Solana
Follow the same process as EVM to EVM, but select "Solana" (or "Solana Devnet") as your destination. The recipient will be your Solana wallet address, and in Step 4 (Claim), you'll sign with your Solana wallet instead of switching networks.
Transfer USDC from Solana to any EVM chain
The process is similar but with 3 steps instead of 4 (no approval needed):
Step 1: Deposit 🔥 - Click Deposit → Confirm in Solana wallet → Wait for confirmation
Step 2: Fetch Attestation 📝 - Click button → Wait ~1-2 minutes
Step 3: Claim 🎉 - Wallet switches to destination EVM chain → Confirm → Done!
EVM Chains (in native tokens like ETH, MATIC):
Solana (in SOL):
💡 Tip: Gas fees vary by network congestion. Use testnets for practice!
Problem: Not enough USDC or gas tokens
Solution:
Problem: Network congestion or RPC issues
Solution:
Problem: Wallet extension not detected or locked
Solution:
Problem: Circle's attestation service may be delayed
Solution:
Yes! This bridge uses Circle's official CCTP protocol:
Testnet USDC Faucets:
Testnet Native Tokens:
solana airdrop 1 with Solana CLICurrently, the bridge sends USDC to your connected wallet address on the destination chain. Support for custom recipient addresses may be added in the future.
Need to bridge more USDC? Just click + New Bridge and repeat the process!
Start Bridging Now →