UnitFlow LogoUnitFlow Docs

Bridge

The Bridge page lets you transfer USDC between Arc Testnet and other supported EVM chains. It uses Circle's Cross-Chain Transfer Protocol (CCTP) and Circle's Bridge Kit SDK.

How the Bridge Works

CCTP operates by burning USDC on the source chain and minting native USDC on the destination chain. The process involves:

  1. Approve — allow the TokenMessenger contract to spend your USDC.
  2. Burn — call depositForBurn on the source chain's TokenMessenger.
  3. Attestation — wait for Circle's attestation service to sign the burn event.
  4. Switch Network — switch your wallet to the destination chain.
  5. Mint — call receiveMessage on the destination chain's MessageTransmitter.

Supported Chains

ChainChain IDCCTP DomainUSDC Decimals
Arc Testnet50420022618
Ethereum Sepolia1115511106
Avalanche Fuji4311316
Arbitrum Sepolia42161436
Base Sepolia8453266
Optimism Sepolia1115542026
Polygon Amoy8000276
ℹ️
Arc Testnet uses 18 decimal places for native USDC, while most other chains use 6. The bridge UI handles this conversion automatically.

Bridge Kit (Primary Interface)

The main bridge UI uses Circle's @circle-fin/bridge-kit SDK (BridgeKitBridge component). This provides a streamlined bridging experience with built-in transaction tracking.

CCTP Manual Bridge

A lower-level CCTP interface (CCTPBridge component) is also available for users who need more control. It exposes each step of the CCTP flow individually and supports an "external burn" mode for recovering transactions where the burn was initiated outside the UI.

Transaction Recovery

The bridge includes automatic recovery for incomplete transactions:

  • On page load, the app scans all supported chains for pending bridge transactions associated with your wallet.
  • Recovered transactions appear in the Pending Transactions panel.
  • You can also manually add a transaction hash via Add Manual Transaction.
  • Completed and pending bridges are stored in Bridge History (local storage).

Key Contract Addresses (Arc Testnet)

ContractAddress
TokenMessenger0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA
MessageTransmitter0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275
Native USDC0x3600000000000000000000000000000000000000