Bridge to Arc
Goal: a user with funds elsewhere ends up with USDC on Arc, ready to trade.
Which rail
Section titled “Which rail”CCTP (/v1/bridge2/*) |
LI.FI (/v1/crosschain/*) |
|
|---|---|---|
| Moves | USDC only, native burn and mint | any token the provider routes, swapped and bridged |
| From | Ethereum, Base, Arbitrum, OP Mainnet, Polygon, Avalanche, Monad and the other CCTP domains | 60+ chains including Monad and Robinhood Chain (Arc as a destination is subject to provider support) |
| Speed | fast transfer, seconds to a few minutes | route-dependent, minutes |
| Gas on Arc | none for the user — Chord’s relayer submits the mint | destination gas handled by the route |
| Fee | Circle’s fee (/bridge2/fee) |
provider fee + the app fee in /crosschain/config |
USDC in, Arc out: use CCTP. Anything else: LI.FI.
CCTP fast transfer
Section titled “CCTP fast transfer”- Read the table.
GET /bridge2/config— the chains with their CCTP domains and USDC addresses, the TokenMessenger and MessageTransmitter contracts, and the relayer (address, Arc balance, enabled). - Quote the fee.
GET /bridge2/fee?src=6&dst=26→fastBpsandstandardBps. - Burn on the source chain. The user approves USDC to
contracts.tokenMessengerV2and callsdepositForBurnwith the Arc domain (arcDomain), the recipient as a 32-byte address, and the fast-finality threshold fromfastFinalityThreshold. This is the only signature. - Poll the attestation.
GET /bridge2/status?srcDomain=6&tx=0x…untilstatus: "complete". - Relay the mint.
POST /bridge2/relay { "srcDomain": 6, "tx": "0x…" }— Chord’s relayer submitsreceiveMessageon Arc and returns the mint hash.409 NOT_ATTESTEDmeans poll longer;429 DAILY_CAPmeans relay it yourself with the message and attestation from step 4.
The user never needs USDC on Arc for gas, because the relayer pays the mint.
LI.FI routes
Section titled “LI.FI routes”- Chains and tokens.
GET /crosschain/config?provider=lifilists destinations;GET /crosschain/currencies?chainId=8453&q=usdc&provider=lifilists bridgeable tokens on a chain. - Quote.
POST /crosschain/quotewithuser,originChainId,destinationChainId,originCurrency,destinationCurrency,amount(smallest unit),slippageBpsandprovider: "lifi". The answer carries the provider’s steps and fees and the transactions to sign on the origin chain; an approve step is prepended when the origin token is an ERC-20. - Sign in order and keep the deposit hash.
- Poll.
GET /crosschain/status?requestId={depositHash}&provider=lifi&fromChain=8453&toChain=5042untilsuccess, orrefund/failure.depositing→pending→submitted→successis the happy path;delayedis a route waiting on the bridge.
The Chord app embeds the LI.FI widget for this flow; the endpoints above are the same contract for a custom UI.
After the bridge
Section titled “After the bridge”The user holds USDC on Arc as the predeploy balance, which is also their gas. Quote a trade with inputMint=0x3600000000000000000000000000000000000000 and follow the Swap recipe.