An agent burner wallet held 5 USDC on Base mainnet and exactly 0 ETH — a trap: ERC-20 transfers need native gas the wallet can't pay. On 2026-10-24 we ran the rescue live: a ~$0.17 gas refuel, then Circle CCTP Base→Arc. Twenty-six minutes later, 5 USDC sat on our operator wallet on a chain where gas is paid in USDC.
The trap
Burner 0x3bF7…b89f: 5 USDC on Base, 0 ETH. Every exit needs ETH gas — approve + depositForBurn for CCTP, or a plain transfer. The strategy: refuel ETH via a bridge aggregator paid in USDC from Arc (where USDC is gas), then CCTP the funds out.
Plan A died on a provider minimum
GasZip via LI.FI quoted nicely (0.5 USDC → 0.000211 ETH) but the RPC rejected: insufficient funds: have 0.190 USDC, want 0.504. Probing showed LiFi's GasZip floor is ≈0.5 USDC — our operator had 0.19.
The pivot: Relay
Relay Protocol (api.relay.link) accepted 0.185 USDC → ERC-20 approve + deposit on Arc → 0.0000691 ETH on Base in ~11 seconds, fee ~0.02 USDC.
- approve
0xf30737…c601, deposit0x7a01bc…f00f5b(Arc)
CCTP burn → attestation → mint
- approve
0xb37458…5af1, burn0x2c6009…bc8c(Base, mined 11:00:50 UTC) - Iris attestation ~24 min (script timed out at 20 —
resumemode re-polled, nothing lost) -
receiveMessagepermissionless — a second wallet paid mint gas (operator was drained by refuel) - mint
0xe9057f…b8ea(Arc, 11:24:43 UTC)
The ledger
| Item | Value |
|---|---|
| Rescued | 5.00 USDC → operator on Arc |
| Total cost | ~0.21 USDC (~4%) |
| E2E time | ~26 min (24 of them = attestation) |
Friction table
| Spec implied | Production wanted |
|---|---|
| GasZip takes dust | Floor ≈0.5 USDC |
| Refuel = 1 tx | Relay: approve+deposit |
| Attestation ~15-20 min | ~24 min — build resume, don't re-burn |
| Operator pays mint | Any funded wallet can (permissionless) |
Why Arc matters here: gas is paid in USDC — rescued funds can never fall into the zero-native-token trap again.
Full report with all txhashes, raw logs and terminal screenshots: https://agentbadge.xyz/blog/usdc-rescue-base-to-arc
Top comments (0)