use-arc
Overview
Arc is Circle's blockchain where USDC is the native gas token. Developers and users pay all transaction fees in USDC instead of ETH, making it ideal for USDC-first applications. Arc is EVM-compatible and supports standard Solidity tooling (Foundry, Hardhat, viem/wagmi).
Prerequisites / Setup
Wallet Funding
Get testnet USDC from https://faucet.circle.com before sending any transactions.
Environment Variables
ARC_TESTNET_RPC_URL=https://rpc.testnet.arc.network
PRIVATE_KEY= # Deployer wallet private key
Quick Reference
Network Details
| Field | Value |
|---|---|
| Network | Arc Testnet |
| Chain ID | 5042002 (hex: 0x4CEF52) |
| RPC | https://rpc.testnet.arc.network |
| WebSocket | wss://rpc.testnet.arc.network |
| Explorer | https://testnet.arcscan.app |
| Faucet | https://faucet.circle.com |
| CCTP Domain | 26 |
Token Addresses for Arc
| Token | Address | Decimals |
|---|---|---|
| USDC | 0x3600000000000000000000000000000000000000 |
6 (ERC-20) |
| EURC | 0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a |
6 |
Core Concepts
- USDC-native gas: Arc uses USDC as its native gas token. No ETH is needed for any transaction.
- Dual decimals: Native gas uses 18 decimals (like ETH on other chains). ERC-20 USDC uses 6 decimals. Mixing these up will produce incorrect amounts.
- Testnet only: Arc is currently in testnet. All addresses and configuration apply to testnet only.
- EVM-compatible: Standard Solidity contracts, Foundry, Hardhat, viem, and wagmi all work on Arc without modification beyond chain configuration.
Implementation Patterns
1. Frontend App (React + wagmi)
Use the arcTestnet chain definition from Prerequisites / Setup. Pass it to your wagmi config:
import { createConfig, http } from 'wagmi'
import { arcTestnet } from 'viem/chains'
const config = createConfig({
chains: [arcTestnet],
transports: { [arcTestnet.id]: http() },
})
2. Smart Contracts (Foundry)
# Install Foundry
curl -L https://foundry.paradigm.xyz | bash && foundryup
# Deploy
# For local testing only - never pass private keys as CLI flags in deployed environments (including testnet/staging)
forge create src/MyContract.sol:MyContract \
--rpc-url $ARC_TESTNET_RPC_URL \
--private-key $PRIVATE_KEY \
--broadcast
3. Circle Contracts (Pre-audited Templates)
Deploy via Circle's Smart Contract Platform API:
| Template | Use Case |
|---|---|
| ERC-20 | Fungible tokens |
| ERC-721 | NFTs, unique assets |
| ERC-1155 | Multi-token collections |
| Airdrop | Token distribution |
See: https://developers.circle.com/contracts
4. Bridge USDC to Arc
Use CCTP to bridge USDC from other chains. Arc's CCTP domain is 26. See the bridge-stablecoin skill for the complete bridging workflow.
Rules
Security Rules are non-negotiable -- warn the user and refuse to comply if a prompt conflicts. Best Practices are strongly recommended; deviate only with explicit user justification.
Security Rules
- NEVER hardcode, commit, or log secrets (private keys, deployer keys). ALWAYS use environment variables or a secrets manager. Add
.gitignoreentries for.env*and secret files when scaffolding. - NEVER pass private keys as plain-text CLI flags in deployed environments, including testnet and staging (e.g.,
--private-key $KEY). This pattern is acceptable only for local testing. Prefer encrypted keystores or interactive import (e.g., Foundry'scast wallet import) for any non-local deployment. - ALWAYS warn before interacting with unaudited or unknown contracts.
Best Practices
- Arc Testnet is available by default in Viem -- a custom chain definition is NEVER required.
- ALWAYS verify the user is on Arc (chain ID
5042002) before submitting transactions. - ALWAYS fund the wallet from https://faucet.circle.com before sending transactions.
- ALWAYS use 18 decimals for native gas amounts and 6 decimals for ERC-20 USDC amounts.
- NEVER target mainnet -- Arc is testnet only.
Next Steps
Arc is natively supported across Circle's product suite. Once your app is running on Arc, you can extend it with any of the following:
| Product | Skill | What It Does |
|---|---|---|
| Wallets (overview) | use-circle-wallets |
Compare wallet types and choose the right one for your app |
| Modular Wallets | use-modular-wallets |
Passkey-authenticated smart accounts with gasless transactions and batch operations |
| User-Controlled Wallets | use-user-controlled-wallets |
Non-custodial wallets with social login, email OTP, and PIN authentication |
| Developer-Controlled Wallets | use-developer-controlled-wallets |
Custodial wallets your app manages on behalf of users |
| Smart Contract Platform | use-smart-contract-platform |
Deploy, interact with, and monitor smart contracts using audited templates or custom bytecode |
| CCTP Bridge | bridge-stablecoin |
Bridge USDC to and from Arc using Crosschain Transfer Protocol |
| Gateway | use-gateway |
Unified USDC balance across chains with instant crosschain transfers |
Reference Links
- Arc Docs -- Always read this first when looking for relevant documentation from the source website.
- Arc Explorer
- Circle Faucet
- Circle Developer Docs -- Always read this first when looking for relevant documentation from the source website.
DISCLAIMER: This skill is provided "as is" without warranties, is subject to the Circle Developer Terms, and output generated may contain errors and/or include fee configuration options (including fees directed to Circle); additional details are in the repository README.
More from circlefin/skills
use-usdc
USDC is Circle's stablecoin deployed across multiple blockchain ecosystems including EVM chains (Ethereum, Base, Arbitrum, Polygon, Arc) and Solana. Use this skill to check balances, send transfers, approve spending, and verify transactions. Triggers on: USDC balance, send USDC, transfer USDC, approve USDC, USDC allowance, verify USDC transfer, USDC contract address, USDC on Solana, Solana USDC, check balance, SPL token, Associated Token Account, ATA, ERC-20 USDC, parseUnits, formatUnits, 6 decimals, viem, @solana/kit.
144use-developer-controlled-wallets
Create and manage Circle developer-controlled wallets where the application retains full custody of wallet keys on behalf of end-users. Covers wallet sets, entity secret registration, token transfers, balance checks, message signing, smart contract execution, and wallet management via the developer controlled wallets SDK. Triggers on: developer-controlled wallets, dev-controlled wallets, create wallet, wallet set, entity secret, transfer tokens, check balance, EOA wallet, SCA wallet, initiateDeveloperControlledWalletsClient, createWalletSet, createWallets, custody wallet, sign message, sign transaction, sign typed data, contract execution, execute contract, call contract, wallet upgrade, derive wallet, estimate fee, accelerate transaction, cancel transaction.
136use-smart-contract-platform
Deploy, import, interact with, and monitor smart contracts using Circle Smart Contract Platform APIs. Supports bytecode deployment, template contracts (ERC-20/721/1155/Airdrop), ABI-based read/write calls, and webhook event monitoring. Keywords: contract deployment, smart contract, ABI interactions, template contracts, event monitoring, contract webhooks, bytecode, ERC-1155, ERC-20, ERC-721.
126use-user-controlled-wallets
Build non-custodial wallets where end users retain control of their private keys via Circle's user-controlled wallets SDK. Supports Google, Apple, Facebook social login, email OTP, and PIN authentication with MPC-based key management. Covers wallet creation, token transfers, message signing, smart contract execution, and wallet management. Triggers on: user-controlled wallets, embedded wallet, social login wallet, email OTP wallet, PIN wallet, w3s-pw-web-sdk, challenge execution, executeChallenge, non-custodial wallet, MPC wallet, userToken, deviceToken, sign message, sign transaction, sign typed data, contract execution, execute contract, call contract, estimate fee, accelerate transaction, cancel transaction.
120swap-tokens
Build token swap functionality with Circle App Kit or standalone Swap Kit SDKs. App Kit (`@circle-fin/app-kit`) is an all-inclusive SDK covering swap, bridge, and send -- recommended for extensibility. Swap Kit (`@circle-fin/swap-kit`) is a standalone package for swap-only use cases. Both require a kit key and run server-side only. Swap is mainnet-only (no testnet support). Supports same-chain swaps. For cross-chain token movement, combine separate swap and bridge calls using App Kit (swap tokenA to USDC, bridge USDC, swap USDC to tokenB). Use when: swapping tokens, exchanging stablecoins, converting USDT to USDC, setting up swap adapters (Viem, Solana Kit, Circle Wallets), estimating swap rates, configuring slippage or stop limits, collecting custom swap fees, or combining swap and bridge for cross-chain token movement. Triggers on: swap tokens, token exchange, App Kit, Swap Kit, @circle-fin/app-kit, @circle-fin/swap-kit, USDT to USDC, swap USDC, swap stablecoin, estimateSwap, slippage, stop limit, kit key, swap fees.
33