Skip to main content
The tokens_arc.transfers table contains token movement data for assets on Arc, Circle’s Layer-1 built for stablecoin payments. It brings native USDC movement and ERC-20 transfers into one table with a shared schema, prices, and normalized amounts. This dataset includes:
  • Native USDC movement, captured from Arc’s EIP-7708 transfer logs
  • ERC-20 transfer events for every other token on the chain
  • Normalized amounts alongside raw base units
  • USD valuation where a price is available for the token
Arc’s gas token is USDC, so “native” rows on Arc are USDC movements rather than a separate gas asset. Native rows carry the zero address (0x0000...0000) in contract_address, following the same convention used across Dune’s EVM balance and transfer tables.

Utility

The Arc transfers table gives you a single view of token movement on Arc, letting you:
  • Track USDC flows between wallets and contracts, including gas-token movement
  • Analyze transfer activity by token, counterparty, and day
  • Measure USD volume for priced tokens
  • Join to tokens_arc.erc20 for token metadata, or to prices_arc.minute for pricing

Methodology

Arc implements EIP-7708, which makes native value transfers emit a log rather than being visible only in traces. On Arc these logs are emitted by the system address 0xfffffffffffffffffffffffffffffffffffffffe using the standard ERC-20 Transfer topic, with the amount in 18-decimal base units. This table is built around that:
  • Native USDC comes from the EIP-7708 system emitter at 18 decimals, in place of the traces leg used on other EVM chains.
  • All other tokens come from their own ERC-20 Transfer events.
  • The 6-decimal USDC ERC-20 interface at 0x3600000000000000000000000000000000000000 is deliberately excluded, because the EIP-7708 emitter already records the movements made through it. Including both would double-count the same transfer.

The two views of USDC

Arc exposes USDC two ways over the same pool of funds, and the distinction matters when you compare amounts: The two differ by exactly 1012: eth_getBalance(addr) / 1e12 == balanceOf(addr). There is no wrapped USDC on Arc — the native asset satisfies IERC20 directly. Because this table sources native movement from the EIP-7708 emitter, amounts for native USDC rows are normalized from the 18-decimal view.
Some tokens on Arc use the ticker of a well-known asset without being that asset. Match on contract_address, not on symbol, when you care about which token you are measuring.

Table Schema

Sample Queries

Daily USDC transfer volume Native USDC movement per day, with USD value:
Most active tokens by transfers and unique wallets Ranking tokens by activity, counting each address once whether it sent or received:
Transfer history for a single wallet Incoming and outgoing movement for one address: