TokenMessengerV2 contract. Solana’s CCTP implementation does not have the
depositForBurnWithAuth, and there is no CctpExtension contract for Solana.
As such, transfers from Solana to HyperCore follow the standard CCTP flow, with
the addition of hook data to call the CctpForwarder contract on HyperEVM.
This guide does not provide full example code for the transfer to HyperCore from
Solana.
Note: Fast Transfers from Solana to HyperEVM incur a variable fee and a
small forwarding fee for transfers to HyperCore. Fast Transfer is the default
for transfers from Solana to HyperEVM.
Steps
Use the following steps to transfer USDC from Solana to HyperCore.Step 1. Get CCTP fees from the API
Query the CCTP API for the fees for transferring USDC from Solana to HyperCore. This value is passed to themaxFee parameter in the depositForBurnWithHook
transaction. The following is an example request to the CCTP using source domain
5 (Solana) and destination domain 19 (HyperEVM):
Step 2. Calculate the USDC amounts minus fees
There is a variable fee to deposit USDC from Solana to HyperEVM and a small forwarding fee for the transfer to HyperCore. The CCTP protocol fee is 1 basis point (0.01%) of the transfer amount. The forwarding fee is 0.20 USDC (0_200_000 subunits). For a 10 USDC transfer from Solana to HyperCore, the
protocol fee is 0.001 USDC (10 USDC × 0.0001) and the forwarding fee is 0.20
USDC, for a total fee of 0.201 USDC.
Step 3. Sign and broadcast a depositForBurnWithHook transaction on the TokenMessengerV2 contract
Create a depositForBurnWithHook transaction for the TokenMessengerV2
contract with the following parameters:
amount: The amount of USDC to transferdestinationDomain: 19 (HyperEVM)mintRecipient: The address of theCctpForwardercontract on HyperEVMdestinationCaller: The address of theCctpForwardercontract on HyperEVMmaxFee:0_201_000(0.201 USDC, from step 2)minFinalityThreshold:1000(Fast Transfer)hookData: The hook data to call theCctpForwardercontract on HyperEVM
hookData is the data to execute the forwarder to HyperCore. The following
is an example of the hook data:
TypeScript
depositForBurnWithHook function, see the
Solana CCTP V2 example on GitHub.
Once the deposit transaction is confirmed, the USDC is minted on HyperEVM and
automatically forwarded to your address on HyperCore.
By default (when hyperCoreDestinationDex is 0), deposits credit the perps
balance on HyperCore. To deposit to the spot balance, set
hyperCoreDestinationDex to 4294967295 (uint32 max value).