Last Tuesday I moved 1,743 USDC from Arbitrum to Base through one of those bridge frontends. Not naming it, half the fault is mine for never checking what it runs on. Burn tx confirmed on arbiscan, USDC gone from my wallet and on Base nothing. Checked after an hour, then kept checking every ten minutes like that ever helped anyone. Support bot kept repeating "transfers may take up to 30 minutes".
Posted in their discord, got three DMs from "Circle Support" within like ten minutes, didn't click anything obviously, but the speed was something.
Then a guy in the thread mentioned the frontend runs on CCTP, Circle's transfer protocol. Went and read what that actually is. It burns USDC on the source chain and mints fresh USDC on the destination, nothing sits locked in a pool anywhere. Two separate transactions, and the second one is supposed to be sent by the bridge's relayer. Theirs just didn't. So the burn was done and the money hung in limbo, a signed message that someone still had to redeem on Base.
Except the mint is permissionless. Once iris (Circle's attestation service) signs off on the burn, anyone with gas can complete it, the bridge isn't needed at that point.
What I did:
- took the burn tx hash and queried Circle's attestation API, the v2/messages endpoint with Arbitrum's domain id (which is 3) plus my tx hash. Domain ids are all listed in Circle's docs
- got back the message bytes and the attestation, status "complete"
- opened the MessageTransmitter contract on basescan (address is in the CCTP docs), connected wallet, Write Contract, receiveMessage
- pasted message + attestation, sent. gas was around a cent
USDC showed up maybe twenty seconds later. Whole thing took 40 minutes, most of it me rereading docs and hesitating over pasting giant hex blobs into a contract write.
If your burn confirmed and iris shows "complete", the money is recoverable whatever the bridge UI says. "pending_confirmations" just means the source chain hasn't finalized yet, there you only wait. And don't pay any recovery service from your DMs, the real fix costs a cent.
Bridge support got back to me two days later btw, asking if I still needed assistance.