Skip to main content
Arc is an EVM-compatible blockchain, so standard Ethereum tooling works out of the box. However, several architectural differences affect how infrastructure providers index data, stream blocks, and expose balance APIs.

Key differences from Ethereum

Chain metadata

Additional RPC endpoints are available through Blockdaemon, dRPC, and QuickNode.

Integration considerations

Balance APIs

eth_getBalance returns the account’s native balance in USDC at 18-decimal precision. Use formatUnits(balance, 18), not formatUnits(balance, 6). If your platform displays balances, label the value as USDC rather than ETH. The same underlying balance is also accessible through the ERC-20 interface at 6-decimal precision.
Transfer log precision depends on the emitting interface: system emitter events use 18-decimal precision, ERC-20 events use 6-decimal.

No-reorg indexing

Arc’s deterministic finality means you never need to handle chain reorganizations or uncle blocks. Every block your indexer receives is permanent. You can treat a single block confirmation as final and skip reorg-recovery logic entirely.

Sub-second block streaming

Blocks arrive faster than once per second. Your ingestion pipeline must handle high-throughput streaming without assuming a minimum interval between blocks. Multiple consecutive blocks may share the same block.timestamp because sub-second blocks can fall in the same wall-clock second.

Randomness

Don’t treat PREVRANDAO as a source of randomness on Arc. It always returns 0, not a random beacon value. Any contract using it for lottery selection, shuffle logic, or relay logic will always receive 0.

USDC transfer events

Build transfer history from the system emitter (0xffffFFFfFFffffffffffffffFfFFFfffFFFfFFfE), not the ERC-20 contract (0x3600000000000000000000000000000000000000). Native USDC transfers emit no log at the ERC-20 address, so filtering on the ERC-20 address alone misses them. An ERC-20 transfer() emits from both addresses, so filtering on both double-counts every ERC-20 transfer.
For emitter addresses, the exact log format, and indexing guidance, see Index events.

Sender attribution

For EIP-3009 relayer transactions, using tx.from attributes transfers to the relayer EOA, not the token sender. Use the from field in the EIP-7708 Transfer event from the system emitter for accurate sender attribution.

Blocklist enforcement

A transfer to or from a blocklisted address reverts at runtime. The transaction is included in the block and gas is consumed, but state changes roll back. Any indexer, relayer, or settlement flow that submits USDC transfers must check receipt.status === 0 to detect a blocklist revert.

Self-hosted access

For independent verification or direct RPC access without third-party providers, you can run your own Arc node. The execution client (arc-node-execution) is Reth-based, and the consensus client (arc-node-consensus) is Malachite-based.

Running a node

Architecture overview and requirements for operating an Arc node.

Run an Arc node

Step-by-step guide to install, configure, and start both clients.

Sub-pages

Index events

Unified transfer events, no-reorg indexing, and block streaming guidance for data indexers.

Compliance

Blocklist enforcement, Memo contract monitoring, and compliance tool integrations.