Chain configuration
Arc Mainnet and Arc Testnet differ only in the chain ID. Every other value below is the same on both networks.- Mainnet
- Testnet
MetaMask
Add Arc as a custom network. On Chainstack, get your Arc endpoint, then in MetaMask select Add a custom network and fill in:- Network name — Arc Mainnet or Arc Testnet
- Default RPC URL — your Chainstack Arc endpoint
- Chain ID —
5042for mainnet,5042002for testnet - Currency symbol — USDC
ethers.js
Install ethers.js:send:
viem
Arc is not in viem’s bundled chain list, so define it withdefineChain:
arc_* methods, use client.request:
web3.py
Install web3.py:web3.py rejects lowercase addresses with
InvalidAddress. Wrap any address you did not get from the library itself in Web3.to_checksum_address(), as above.arc_* methods are not in the web3.eth namespace, so send them through the provider:
Two Arc behaviors that affect tooling
Only replay-protected transactions are accepted. Arc rejects pre-EIP-155 transactions on the RPC submission path with-32000 only replay-protected (EIP-155) transactions allowed over RPC. Every current library signs with the chain ID by default, so this only bites if you construct raw transactions by hand or use a very old signer.
Pending state is not readable. Subscribing to pending transactions fails, and eth_getBlockByNumber("pending") returns null rather than an error. Code that polls the pending block to estimate the next state will silently receive nothing. See What gives you mempool access.