Arc Data: Index USDC Payments, Contracts, and Tokens

Index Arc's contract events, USDC and token transfers, and decoded transactions in one pipeline, delivered to your own database. Real-time and complete historical data, no node to run.


Arc is Circle's open Layer 1 blockchain, purpose-built to unite programmable money and onchain innovation with real-world economic activity. It is EVM-compatible, uses USDC as its native gas token, and offers deterministic sub-second finality, with opt-in privacy on its roadmap. After a public testnet and a private mainnet phase, Arc's public mainnet is now live. You can read how the team frames it at arc.io.

That focus on stablecoins and payments is the data problem. On Arc, fees, transfers, and settlement all move in USDC, so the questions teams ask are about money flows: who paid whom, how much, and through which contracts. Indexing Co covers Arc in a single pipeline, decodes the raw chain into the shape you want, and delivers it to your own PostgreSQL, warehouse, or webhook. Real-time and full history, with no node to operate.

Source Arc L1 blocks
Ingest blocks, logs, receipts
Decode ABIs to events
Transform your JavaScript
Deliver your database

Why Arc data is hard

USDC Is the Gas Token On most EVM chains, gas is a volatile native coin and stablecoins are just ERC-20 contracts. On Arc, USDC pays for gas too, so fee accounting and payment flows sit in the same dollar unit. Your dataset has to treat USDC as both the fee asset and the main thing being moved.
Sub-Second Blocks Arc produces blocks fast and finalizes them deterministically. Keeping up with the chain head in real time while also backfilling history is a standing engineering problem for any pipeline you run yourself.
Payments Need Context A payments dataset is more than a list of transfers. You want each transfer tied to its transaction, block, and contract, so you can reconcile it against invoices, settlements, or internal ledgers.
Your Own DB, Not a Hosted API Generic RPC endpoints and hosted query APIs leave you rate-limited and renting someone else's schema. Running payments or treasury workloads on Arc means owning the data in your own store, shaped the way your product queries it.

What Indexing Co delivers for Arc

The DIY Path

Stand up and maintain the whole stack yourself.

  • Run an Arc node or wire up a third-party RPC.
  • Fetch and decode logs and receipts against the right ABIs.
  • Keep pace with sub-second blocks without dropping data.
  • Build backfill and real-time delivery from scratch.
Indexing Co

One pipeline sources, decodes, and delivers Arc to your store.

  • Arc contract events, USDC and token transfers, and decoded txs in a single pipeline.
  • Decoded data, shaped by your JavaScript transform.
  • Lands in your PostgreSQL, BigQuery, warehouse, or webhook.
  • Real-time delivery plus complete backfilled history. No node, no RPC babysitting.

What you can index

EVM data type On Arc, for example
Token transfers (ERC-20) USDC payments and other stablecoin transfers
Contract events and logs Swaps, lending, and settlement events from Arc apps
Decoded transactions Payment and contract calls with sender, target, and fee
Protocol and account state Balances and positions derived from decoded events

A transform, not a subgraph

You write the transform in JavaScript, not AssemblyScript, and change it without re-indexing from block zero. Indexing Co runs your function over each block server-side: decode the logs you care about and return rows for your destination.

// Indexing Co transform: reshape each block into rows for your database
function transform(block) {
  const results = [];
  const signatures = [
    'event Transfer(address indexed from, address indexed to, uint256 value)'
  ];

  for (const tx of block.transactions || []) {
    for (const log of tx.receipt?.logs || []) {
      const event = utils.evmDecodeLogWithMetadata(log, signatures);
      if (!event) continue;
      results.push({
        chain: block._network,
        block: Number(block.number),
        tx_hash: tx.hash,
        contract_address: log.address?.toLowerCase(),
        from: event.decoded.from,
        to: event.decoded.to,
        value: event.decoded.value,
      });
    }
  }
  return results;
}

Arc with Indexing Co

Run it yourself if

You want full control of node infrastructure and have the team to operate an Arc node, decode every contract's ABIs, and build backfill and real-time delivery in-house.

Use Indexing Co if

You want Arc USDC payments, contract events, and decoded transactions delivered to your own database, with real-time plus complete history and no infrastructure to run.

Get a DemoOpen the Console

Related Reading

FAQ

Do I need to run an Arc node?

No. Indexing Co sources Arc blocks, logs, and receipts for you, including full historical data, so you never operate a node or babysit an RPC endpoint.

Can I index USDC payments on Arc?

Yes. Native USDC on Arc has 18 decimals, and native transfers emit an EIP-7708 Transfer log from a system address. The USDC ERC-20 interface shares the same balance at 6 decimals and emits its own Transfer events. The transform above decodes Transfer events into rows with sender, recipient, and value; filter on the emitting address and normalize decimals so the same movement is not counted twice.

Can I index any contract on Arc?

Yes. Point a pipeline at any Arc contract or set of contracts, including your own deployments, and decode the events against the right ABI.

Where does the Arc data go?

Into your own destination: PostgreSQL, BigQuery, a warehouse, or a webhook. You define the output schema and own the storage.

Can I get complete historical Arc data?

Yes. We backfill from your chosen start block and merge it with real-time data, so your Arc dataset is gap-free from your start block forward.

Get Started

Index Arc in minutes. Set up your first Arc USDC or contract pipeline without running a node.

Get a DemoOpen the Console