Módulos

Redes (Networks)

Perfis de rede mainnet/testnet e registry de endereços de contrato.

O módulo arc_devkit.networks centraliza a configuração de rede — chain ID, RPC (HTTP + WebSocket), block explorer e endereços de contrato — para que trocar entre mainnet e testnet seja só configuração, nunca uma mudança de código. As duas redes já vêm totalmente configuradas com valores oficiais, com fonte verificada contra docs.arc.io em 18/09/2026.

Importação

from arc_devkit.networks import NETWORKS, get_network

Perfis disponíveis

profile = get_network("mainnet")

print(profile.chain_id)     # 5042
print(profile.rpc_url)      # https://rpc.mainnet.arc.io
print(profile.explorer_url) # https://explorer.arc.io
print(profile.contracts.usdc)  # 0x3600000000000000000000000000000000000000
RedeChain IDRPC padrãoExplorer
mainnet (padrão)5042https://rpc.mainnet.arc.iohttps://explorer.arc.io
testnet5042002https://rpc.testnet.arc.iohttps://explorer.testnet.arc.io

✦Interface dupla do USDC

O USDC na Arc é tanto o token de gas nativo (18 decimais, lido como ETH via eth_getBalance) quanto um ERC-20 (6 decimais) em um endereço fixo, compartilhado entre as redes (profile.contracts.usdc, 0x3600...0000). As duas visões compartilham o mesmo saldo — veja o módulo USDC para como ler cada uma corretamente.

Todos os campos de ContractAddresses estão preenchidos nas duas redes: usdc, eurc, cctp_token_messenger, cctp_message_transmitter, cctp_token_minter, cctp_message, cctp_domain (26 na Arc), gateway_wallet, gateway_minter, multicall3, permit2.

Selecionando a rede ativa

A variável ARC_NETWORK (mainnet por padrão) seleciona os defaults de RPC/chain ID/contratos:

# .env
ARC_NETWORK=testnet   # troque para testnet durante o desenvolvimento

ARC_RPC_URL/ARC_CHAIN_ID, se definidos explicitamente, sempre têm prioridade sobre o perfil — útil para apontar para seu próprio provedor (Alchemy, QuickNode, self-hosted) em vez do RPC padrão da Circle.

from arc_devkit.config import settings

print(settings.arc_network)   # "mainnet"
print(settings.network.name)  # "mainnet" — NetworkProfile resolvido

⚠config.py nunca adivinha um chain ID

Se um perfil de rede não tem chain ID e ARC_CHAIN_ID não foi definido explicitamente, config.py levanta um erro claro na inicialização em vez de cair silenciosamente no chain ID de outra rede — uma classe de bug que existia antes do suporte à Arc Mainnet e que poderia ter levado a uma transação assinada para a chain errada sem nenhum aviso.

A fachada Arc

from arc_devkit import Arc

arc = Arc.mainnet()          # ou Arc.testnet()
arc = Arc.mainnet(rpc_url="https://seu-provedor.example.com")  # RPC customizado

print(arc.network.chain_id, arc.network.rpc_url)
print(arc.latest_block()["number"])
print(arc.health_check())

Arc é uma camada de conveniência aditiva sobre os mesmos módulos documentados neste site — todo import por módulo já existente (from arc_devkit.debugger import TxAnalyzer, etc.) continua funcionando sem alteração.

Verificando a saúde da rede

arcdevkit network list
arcdevkit network show mainnet
arcdevkit network check-mainnet
arcdevkit doctor

doctor (também Arc.health_check()) é uma checagem somente leitura — nunca assina ou envia nada — que verifica alcançabilidade do RPC, correspondência do chain ID, bloco mais recente, latência, e se o contrato USDC realmente tem código deployado on-chain (eth_getCode, não apenas "um endereço está configurado").

Referência da API

get_network(name: str) -> NetworkProfile

ParâmetroTipoDescrição
namestr"mainnet" ou "testnet"

Levanta ValueError para nomes desconhecidos.

NetworkProfile

CampoTipoDescrição
namestrNome da rede
chain_idint | NoneChain ID
rpc_urlstr | NoneURL de RPC padrão
ws_rpc_urlstr | NoneURL de RPC WebSocket padrão (o primário de mainnet é HTTP-only)
explorer_urlstr | NoneURL do block explorer
native_currency_symbolstr"USDC"
native_currency_decimalsint18
contractsContractAddressesEndereços de USDC, EURC, USYC, CCTP V2, Gateway, Multicall3, Permit2