v14.18.0 lets a user bring native USDC from Base (and Arbitrum, Optimism, Polygon or Ethereum) into their Chipi wallet, and send it back out, through Circle’s Cross-Chain Transfer Protocol. One hook each, the Starknet mint paid by Chipi, and every step reporting how long it usually takes. Everything is additive: 14.17.x code keeps working unchanged.
TL;DR: does this affect me?
Deposits (useCrossChainDeposit, useCctpDepositStatus)
quote({ chain, amount })returns both speeds: standard (free; about 15–20 minutes from an L2, since Circle waits for Ethereum finality) and fast (Circle’s fee, 1.3 bps from Base; about a minute). The user picks.depositAsyncburns through the user’s EVM wallet (any EIP-1193 provider; one prompt when the wallet batches with EIP-5792, two otherwise), registers the burn with Chipi the moment its hash exists, waits for Chipi to mint on Starknet, and records the deposit in the wallet’s history.onStatusreports each step with its usual duration (formatCctpEta), so the UI shows “attesting, 15 to 20 minutes” instead of a spinner.
assertMintRecipient decodes the encoded recipient back and compares it before anything is signed: a wrong recipient is the only way to lose a deposit, and it can’t happen here. Once the burn is registered, the deposit completes even if the page closes: Chipi’s delivery mints from its own account. useCctpDepositStatus(burnTxHash) resumes it on any device.
Withdrawals (useCrossChainWithdraw)
Quote from Chipi (Circle’s fast fee out of Starknet is 12 bps; sponsored says whether Chipi pays it back to the recipient), burn on Starknet with the wallet’s own signer (passkey or encryptKey), wait for the burn, record it, and have Chipi’s relayer run receiveMessage on the destination chain. Always fast finality: a standard transfer out of Starknet waits hours for the L1 proof. The destination address is checked (hex, non-zero, EIP-55 when mixed case) before signing.
Building blocks (@chipi-stack/backend)
CCTP_EVM_CHAINS,cctpEvmChainByKey,CCTP_STARKNET: addresses with their sources, each checked on-chain.verified: truemarks Base, where Chipi has run real transfers.cctpQuote,cctpRoute,cctpAttestationEta,cctpStepEta,formatCctpEta: Circle’s live fee API and attestation times per source chain and finality.depositFromEvm,discoverEvmWallets: the EIP-1193 deposit, with the chain switched and checked, balance and allowance read, batch or approve + burn, and the receipt checked.buildCctpWithdrawToEvmCalls,buildCctpWithdrawCalls,cctpMaxFee,buildCctpReceiveMessageCall: the Starknet calls.starknetAddressToMintRecipient,assertMintRecipient,evmAddressToMintRecipient,assertEvmAddress,parseUsdc,formatUsdc.decodeCctpMessage,isCctpMessageExpired: Circle’s attested message, field by field (a fast attestation expires about 24 hours after signing; Chipi re-attests it, nothing is lost).
Server (ChipiSDK)
registerCctpDeposit, getCctpDepositStatus, recordCrossChainDeposit, quoteCrossChainWithdrawal, recordCrossChainWithdrawal, finalizeCrossChainWithdrawal. Chipi reads a withdrawal’s amount, destination and recipient from the burn’s own DepositForBurn event, so the values a client records only need to agree with the chain. finalize answers 409 while the burn isn’t confirmed on Starknet yet; retry it.
Not in this release
- Solana deposits and withdrawals: coming as an optional entry point, so apps that don’t need them don’t load
@solana/web3.js. - Expo:
depositFromEvmneeds a browser EIP-1193 provider. - Python SDK: no cross-chain methods yet.
- Arbitrum, Optimism, Polygon and Ethereum are wired and listed but not yet exercised end to end by Chipi.
