Parabola

The developer platform for ArcStellar

The problem

Stellar is the odd one out in Circle's CCTP ecosystem

01

No direct mint

Inbound transfers must route through Circle's CctpForwarder contract. Direct minting to a Stellar address isn't supported by the protocol.

02

Different addresses

Stellar uses G.../C... strkeys, not hex. Every recipient needs translating into the 32-byte format CCTP expects.

03

Different precision

USDC is 7 decimals on Stellar, 6 on Arc. Get the conversion wrong and you truncate or overpay.

How it works

Burn, attest, mint — behind one function

Burn depositForBurn(WithHook)

Locks USDC on the source chain. The Stellar-bound path encodes a forward-recipient hook.

Attest Iris polling

Circle's Iris service signs an attestation once source-chain finality is reached.

Mint receiveMessage / mint_and_forward

Submits on the destination chain. Stellar routes through CctpForwarder.

// one function, either directionconst result = await transfer({  from: "arc",  to: "stellar",  amount: "10.50",  recipient: "GBZXN7PIRZ...QRXFDNMADI",  speed: "fast",  signer: arcSigner,  options: { maxFee: "0.05", destinationSigner },});