Módulos

Stablecoins (USDC/EURC)

StablecoinToken genérico para USDC e EURC — 6 decimais (view ERC-20).

O módulo arc_devkit.stablecoins generaliza o antigo usdc/token.py em um wrapper único para qualquer stablecoin da Circle na Arc.

✦Interface dupla do USDC

O USDC na Arc é tanto o token de gas nativo (18 decimais, lido via arc.get_balance() / native_usdc_balance()) quanto um ERC-20 (6 decimais, este módulo) em um endereço fixo, compartilhado entre as redes. As duas visões compartilham o mesmo saldo — veja Redes e nunca confunda as duas escalas decimais.

Importação

from arc_devkit.stablecoins import USDCToken, EURCToken, StablecoinToken

✦Compatibilidade retroativa

arc_devkit.usdc.token continua funcionando como um shim de re-export — código existente que importa de lá não quebra. Código novo deve importar de arc_devkit.stablecoins.

USDC

usdc = USDCToken()  # já usa o endereço ERC-20 real — idêntico em mainnet e testnet
balance = usdc.balance("0xCarteira")
print(f"{balance} USDC")

USDCToken() sem argumento resolve para arc_devkit.networks.USDC_ERC20_ADDRESS (0x3600...0000) — versões anteriores usavam um endereço zero como placeholder; isso foi substituído pelo endereço real e oficial publicado pela Circle.

EURC

from arc_devkit.config import settings

eurc = EURCToken(contract_address=settings.network.contracts.eurc)
balance = eurc.balance("0xCarteira")

✦Endereços de EURC já foram publicados

Diferente do USDC (um único endereço compartilhado entre as redes), o EURC tem um endereço distinto por rede — leia de settings.network.contracts.eurc em vez de fixar o valor, já que ele difere entre mainnet e testnet.

Transferências, approve e transferFrom

tx_hash = usdc.transfer(to="0xDestino", amount=Decimal("10.5"), private_key="0x...")
tx_hash = usdc.approve(spender="0xContrato", amount=Decimal("100"), private_key="0x...")
allowance = usdc.allowance(owner="0xDono", spender="0xContrato")
tx_hash = usdc.transfer_from(owner="0xDono", to="0xDestino", amount=Decimal("5"), private_key="0xChaveDoSpender")

Referência da API

StablecoinToken(contract_address, w3=None, symbol="USDC", decimals=6)

ParâmetroTipoDescrição
contract_addressstrEndereço do contrato ERC-20
w3Web3 | NoneInstância opcional (usa get_web3() por padrão)
symbolstrSímbolo exibido (ex: "USDC", "EURC")
decimalsintCasas decimais (stablecoins da Circle usam 6 via interface ERC-20)
MétodoDescrição
balance(address)Saldo em Decimal
allowance(owner, spender)Allowance atual
transfer(to, amount, private_key)Transfere e retorna tx hash
approve(spender, amount, private_key)Aprova gasto e retorna tx hash
transfer_from(owner, to, amount, private_key)Transfere usando uma allowance existente e retorna tx hash

native_usdc_balance(address, w3=None) -> Decimal

Lê o saldo nativo de USDC (18 decimais) via eth_getBalance — não a view ERC-20 acima. Veja Redes.