Parabola

The developer platform for Arc ↔ Stellar

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 },});