secp256k1 signing, EIP-1559 fees, and
standard RPC methods. Arc’s USDC-native design requires changes to balance
display, fee labels, transaction history, and approval handling.
Key differences for wallets
Three Arc design decisions affect every wallet integration:Arc behaviors relevant to this integration
The following Arc behaviors can affect wallet operations. See the integration guides on this page and the EVM differences page for details:- Blocklist enforcement: The USDC blocklist is enforced at runtime. If
either the sender or recipient of a
transferortransferFromcall is blocklisted, the call reverts. Checkreceipt.status === 0to detect reverts. For details, see Transaction lifecycle. - Dust amounts:
balanceOf()returns 0 for amounts smaller than 1×10⁻⁶ USDC (the 6-decimal minimum). The native balance can hold amounts smaller than that threshold (dust). Dust is still spendable as gas. AbalanceOf()of 0 does not mean the address has no USDC. - Transaction history requires system emitter events: Plain native USDC
sends emit no log at the ERC-20 contract address (
0x3600…0000). Filtering that address only captures ERC-20 transfers and misses native sends. Filter the system emitter (0xffff…fffe) instead. See Add Arc to a wallet. - Don’t count
Transferlogs from both the system emitter and the ERC-20 contract: An ERC-20transfer()emits from both. Counting both records the same transfer twice in your transaction history. Use the system emitter only. - Fee floor: Arc enforces a 20 Gwei minimum
maxFeePerGas. Transactions under this floor are silently dropped by the mempool with no error receipt. See Display transaction fees.
What you need
Before you start, confirm you have the following:Integration guides
Add Arc to a wallet
Chain configuration, balance display, transaction history, and fee handling
for wallet providers.
Transaction lifecycle
Arc uses two states: pending or final. There are no intermediate
confirmation states.
Display transaction fees
Fetch, estimate, and display transaction fees in USDC.