Skip to main content
Submit a gas-sponsored CCTP deposit from Arbitrum to HyperCore using the CctpExtensionV2 contract. This workflow suits users who hold USDC on Arbitrum but lack native gas tokens. A relayer submits the Arbitrum transaction on their behalf. For self-custody integrators who pay their own gas, use Transfer USDC from Arbitrum to HyperCore with CctpExtension instead. For background on the contract, see CctpExtensionV2 Contract Interface.

Prerequisites

Before you begin, ensure that you’ve:
  • Deployed or operate a relayer that can submit transactions on Arbitrum and pay ETH gas
  • Collected an EIP-3009 ReceiveWithAuthorization signature from each depositor
  • Identified the CctpExtensionV2 proxy address for your environment (see HyperCore contract addresses)
  • Configured CCTP deposit parameters for HyperCore (HyperEVM domain 19, CctpForwarder as mintRecipient / destinationCaller, and forwarder hook data for the HyperCore recipient)

Steps

Step 1. Collect the user’s EIP-3009 signature

The user signs ReceiveWithAuthorization with:
  • from: depositor address
  • to: CctpExtensionV2 proxy address
  • value: total USDC amount covered by this authorization
  • validAfter / validBefore: authorization time window
  • nonce: deterministic value equal to keccak256(abi.encode(from, amount, validAfter, validBefore, depositData)), where depositData is the ABI-encoded SponsoredDepositForBurnData struct for this deposit
Binding the nonce to depositData prevents a relayer from redirecting funds to a different destination or fee configuration than the user signed.

Step 2. Submit the deposit via your relayer

Call batchSponsorDepositForBurn on the CctpExtensionV2 proxy with:
  • _authData: ReceiveWithAuthorizationDataWithFrom[] (includes explicit from)
  • _depositData: SponsoredDepositForBurnData[] with CCTP fields aligned to your HyperCore destination
Use the same forwarder hook encoding as Transfer USDC from Arbitrum to HyperCore. You may batch multiple users in one transaction. Entries with an already-consumed nonce or insufficient balance are skipped (SponsoredDepositForBurnSkipped event) without reverting the whole batch.

Step 3. Monitor the crosschain transfer

After the Arbitrum transaction confirms, Circle’s attestation service picks up the burn event. The CctpForwarder on HyperEVM receives the minted USDC and routes it to the HyperCore recipient via the forwarder hook. No special handling is required beyond standard CCTP and forwarder monitoring. For details, see CCTP on HyperCore.