# Arc

> Chain 5042 — Circle's USDC-native L1. Ids, RPC, the two faces of USDC, contracts, venues and launchers as Chord indexes them.

Source: https://getchord.xyz/docs/networks/arc/

| | |
| --- | --- |
| Chain id | `5042` |
| Gas | USDC — native (18 decimals) with an ERC-20 face at the predeploy `0x3600000000000000000000000000000000000000` (6 decimals) |
| Finality | sub-second |
| Explorer | [explorer.arc.io](https://explorer.arc.io) |
| Public RPC | `https://rpc.mainnet.arc.io` (rate-limited; Chord lists alternatives at [getchord.xyz/rpc](https://getchord.xyz/rpc)) |
| Chord index since | genesis (rollups reach `genesisHour`; pool discovery reached genesis) |

## USDC, twice

Native USDC pays gas and appears as `currency0 = address(0)` in Uniswap V4 pools with 18 decimals; the predeploy is the same balance seen as an ERC-20 with 6 decimals (`balanceOf == native / 1e12`). There is no wrapped-native contract. The API takes the predeploy, treats the zero address as its alias, and always builds transactions with `value: "0"`. Details in [Chains, addresses and amounts](/docs/concepts/chains-and-amounts/).

Other anchors: EURC `0xbef5f6d51cb62b58e6a8f77868681825c6fe21c1` (6 decimals, tagged `fx`), VIRTUAL `0x8c4252c87081c88c6ad57d6dd97e1cafebf842b7` (Virtuals launcher quote asset, priced from its USDC prints). Beware tokens named USDC that are not the predeploy — the API flags them `impostor`.

## Chord contracts

| Contract | Address |
| --- | --- |
| Router (UUPS proxy) — `transaction.to` in every `/swap` answer | `0x1b1fee89a381e595fe6536b99ba91f3e16e9601a` |
| Fee collector (UUPS proxy) — `feeBpsFor(token)` is the on-chain fee authority | `0x6c66229675fd9ceda9a9b2ea2bd983b3d8255834` |
| Adapter registry (UUPS proxy) — the approved venue adapters | `0x6cf25d2af1a58d7094b0ac253ae616a8e1f2ea3f` |

Adapters (one per venue family: Uniswap V3 and forks, Uniswap V4 with native currency, V2 with tax detection) are returned inside every quote's `routePlan`; never hardcode them. The fee schedule: USDC and EURC 0 bps, every other token 5 bps.

## Protocol contracts Chord reads

| | Address |
| --- | --- |
| Uniswap V3 factory | `0xf0db7b58379503491d857db50ac9ece64c653918` |
| Uniswap V3 QuoterV2 | `0x7dfd4f31be6814d2906bde155c3e1b146eac1468` |
| Uniswap V3 NonfungiblePositionManager | `0x39654a85a4c05127f5fd6ed22caec077a0fb1377` |
| Uniswap V2 factory | `0x89e5db8b5aa49aa85ac63f691524311aeb649eba` |
| Uniswap V4 PoolManager | `0x8366a39cc670b4001a1121b8f6a443a643e40951` |
| Uniswap V4 PositionManager | `0x6049c9a0e26405c0985f9e3685c87d0ae917f82b` |
| Uniswap V4 StateView | `0xf3334192d15450cdd385c8b70e03f9a6bd9e673b` |
| Uniswap V4 Quoter | `0x8dc178efb8111bb0973dd9d722ebeff267c98f94` |
| SwapRouter02 | `0x53bf6b0684ec7ef91e1387da3d1a1769bc5a6f77` |
| Permit2 | `0x000000000022d473030f116ddee9f6b43ac78ba3` |
| Multicall3 | `0xca11bde05977b3631167028862be2a173976ca11` |

## Venues

Every pool from every factory and the V4 PoolManager is indexed for data; routing covers the Uniswap trio plus verified launchpad hooks and the named forks. Venue ids as they appear in `dex` fields:

| id | Venue |
| --- | --- |
| `uniswap_v4` | Uniswap V4 (most launches live here; hooked pools are per-launcher curves) |
| `uniswap_v3` · `uniswap_v2` | Uniswap V3 / V2 |
| `pools_trade` | Pools.trade — V4 pools (fee 2500, tick spacing 25) through its launcher |
| `synthra_v3` | Synthra |
| `sushi_v2` · `sushi_v3` | SushiSwap V2 / V3 |
| `dyorswap` | DYORSwap |
| `slipstream_fork` | an Aerodrome Slipstream fork ("Aero") |
| `v3fork_<8hex>` · `v2fork_<8hex>` | unnamed forks, keyed by the first 8 hex of the factory |

`GET /v1/arc/venues` is the live list with volume and share. Names for display are in [Venue ids](/docs/resources/venue-ids/).

## Launchers

Arc's tokens are mostly born through launcher contracts. Chord names 27 of them and indexes the rest by address; the [Launchpads](/docs/launchpads/) page lists them and `GET /v1/arc/launchers` reports their activity.

## Data lanes

| Lane | Freshness | Endpoint to check |
| --- | --- | --- |
| Trade tape (every swap, priced) | seconds behind the head (WebSocket head trigger + a forward crawler) | `/v1/arc/status` → `recentAt`, `staleSec` |
| Hourly / daily rollups | rolled every few minutes | `/v1/arc/status` → `coverage` |
| Pool index (V2 / V3 / V4 discovery) | minutes | `/v1/arc/status` → `index` |
| Holder ledger (Transfer logs for tracked tokens) | forward lane near the head; backfill per token | `/v1/arc/status` → `holders`; per token `complete` |
| Liquidity events, pools, positions | minutes | `/v1/lp/status` |
| Live prices | per print, over WebSocket | subscribe `prices` |
