Prerequisites
Before you begin, ensure that you’ve:- Gained familiarity with EVM-based blockchain integrations.
- Reviewed the EVM differences page for Arc-specific protocol behavior.
- Obtained access to Arc RPC endpoints for deposit monitoring and transaction broadcasting.
- Set up infrastructure for deposit detection and withdrawal processing on EVM blockchains.
- Installed the
viemTypeScript library (used in the address validation example).
Steps
Configure network parameters
Register Arc with the following parameters in your platform’s chain registry:Arc uses USDC as both the native gas token and the primary transfer asset.
There is no separate gas token like ETH. Configure your platform with a single
asset entry for USDC on Arc.
Detect deposits for buy orders
When a user completes a fiat purchase and you need to detect the resulting onchain USDC deposit, use the sameTransfer event monitoring pattern used by
exchanges. Every native USDC movement emits a standard ERC-20
Transfer(address,address,uint256) event from the system emitter 0xffff…fffe.
Arc implements EIP-7708, an Ethereum
Improvement Proposal that unifies native value movements and ERC-20 token
transfers into a single standard Transfer event. This covers native sends and
the native leg of ERC-20 transfers.
Key points for ramp deposit detection:
- Subscribe to blocks using WebSocket (
eth_subscribe("newHeads")) or poll using HTTP. - Filter
Transferevents on the native USDC system emitter (0xfffffffffffffffffffffffffffffffffffffffe). Do not filter on the ERC-20 contract (0x3600…0000), which misses plain native sends. - Credit immediately after 1 confirmation. Arc’s deterministic finality guarantees no reorgs.
- The
valuefield uses 18 decimals (native). Divide by 10^12 for 6-decimal USDC.
Process withdrawals for sell orders
When a user sells crypto for fiat and you need to send USDC to a settlement address or back to the user, the withdrawal flow is identical to exchange withdrawals:- Validate the destination address (EIP-55 checksum).
- Check the blocklist before sending.
- Build and sign a native USDC transfer (the recommended path, cheaper in gas and universally receivable).
- Broadcast and confirm (single confirmation = final).
Display Arc in your UI
Arc’s native USDC model affects how you present the network to end users:Configure settlement timing
Arc provides sub-second deterministic finality. Once a transaction is included in a block, it is final. There are no reorgs, no probabilistic confirmation windows, and no need to wait for additional blocks. For your ramp platform, this means:- Buy orders: Credit the user’s crypto balance immediately upon 1 confirmation.
- Sell orders: Mark the withdrawal as complete after the transaction receipt is returned.
- Settlement display: Show instant confirmation to the user rather than a progress bar or block countdown.
Validate addresses
Arc uses standard Ethereum addresses:- 20 bytes,
0x-prefixed (42 characters total). - EIP-55 mixed-case checksum encoding.
- Compatible with existing Ethereum address validation logic in your platform.
Screen for compliance
Arc enforces a USDC blocklist at multiple levels:- Pre-mempool: Transactions from or to blocklisted addresses are rejected before entering the mempool.
- Runtime: Transfers involving blocklisted addresses revert during execution.
Route USDC crosschain
If your platform supports crosschain transfers (for example, a user buys USDC on Ethereum and wants delivery on Arc), use Circle’s Cross-Chain Transfer Protocol (CCTP), a permissionless onchain utility that enables USDC to move natively between supported blockchains. Arc’s CCTP domain is26.
For bridging implementation details, see
Bridge USDC with CCTP.