Jump anywhere, copy an address, change the theme.
Everything a developer needs to build against the same rails XyloNet uses on Arc mainnet.
Arc is EVM-compatible; a standard viem chain definition is all you need. Use the public RPC published by Circle or your own provider, and never ship credentialed RPC URLs to the browser.
import { defineChain } from 'viem'
export const arc = defineChain({
id: 5042,
name: 'Arc',
nativeCurrency: { name: 'USDC', symbol: 'USDC', decimals: 18 },
rpcUrls: { default: { http: [process.env.ARC_RPC_URL!] } }, // Circle's public RPC or your own provider
blockExplorers: { default: { name: 'Arc Explorer', url: 'https://explorer.arc.io' } },
contracts: { multicall3: { address: '0xcA11bde05977b3631167028862bE2a173976CA11' } },
})The native balance (what eth_getBalance returns) is 18-decimal; the ERC-20 interface at 0x3600000000000000000000000000000000000000 is 6-decimal. Both represent the same USDC.
import { createPublicClient, http, erc20Abi, formatUnits } from 'viem'
import { arc } from './arc'
const client = createPublicClient({ chain: arc, transport: http() })
// ERC-20 view of USDC (6 decimals)
const raw = await client.readContract({
address: '0x3600000000000000000000000000000000000000',
abi: erc20Abi,
functionName: 'balanceOf',
args: [account],
})
console.log(formatUnits(raw, 6), 'USDC')XyloNet Exchange is a LI.FI integration. You can call the same API directly; the response includes a ready-to-send transactionRequest. Routes execute through the LI.FI Diamond at 0xA4072583658Fae592A3506A42431cb6316a8d40b.
// Ask LI.FI for a quote into USDC on Arc (chain 5042)
const url = new URL('https://li.quest/v1/quote')
url.search = new URLSearchParams({
fromChain: '8453', // Base
toChain: '5042', // Arc
fromToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC on Base
toToken: '0x3600000000000000000000000000000000000000',
fromAmount: '1000000', // 1 USDC
fromAddress: account,
integrator: 'xylonet',
}).toString()
const quote = await fetch(url).then((r) => r.json())
// quote.transactionRequest is ready to send with your wallet clientSee LI.FI's documentation for the SDK, widget and fee configuration.
For USDC-only transfers, call Circle's contracts directly. Arc is domain 26.
// CCTP v2 burn on the source chain → mint on Arc (domain 26)
// 1. approve TokenMessengerV2 on the source chain for `amount`
// 2. depositForBurn(amount, 26, bytes32(recipientOnArc), sourceUsdc, bytes32(0), maxFee, minFinalityThreshold)
// 3. poll https://iris-api.circle.com/v2/messages/{sourceDomain}?transactionHash=...
// 4. receiveMessage(message, attestation) on MessageTransmitterV2 at
// 0x81D40F21F12A8F0E3252Bccb954D722d4c464B64 (Arc)Full parameter reference and Fast/Standard transfer semantics are in Circle's CCTP v2 developer docs.
The PayX contract exposes a small interface for sending a USDC payment to an X handle and for claiming with a server-signed authorization. The ABI and integration notes live in the PayX smart contract page.