Solana Migration Guide

Across is expanding support to Solana, enabling seamless USDC bridging between Ethereum Mainnet, other supported chains and Solana. The migration is scheduled to go live soon. All integrators and relayers are encouraged to complete the necessary updates before the migration happens to prevent disruptions.


For Solana routes, check out this utility script demonstrating how to call deposit()with the integratorID for seamless transaction execution.

Building and Executing Transactions

Developers are requested to build transactions by fetching details from the /suggested-fees API, adding integratorID and calling the deposit() function in the SVM SpokePool contract to execute deposit transactions. We will let you know as soon as Solana routes are available in the /suggested-fees API.

There are no changes in the /suggested-fees API's response body. However please note that you will be able to see Solana addresses (in Pubkey format) in fields like recipient, inputToken, outputToken, spokePoolAddress, exclusiveRelayer and destinationSpokePoolAddress .

Solana is not currently supported in the Across App-SDK. Weโ€™re actively working on expanding support and improving the developer experience for Solana. Stay tuned โ€” weโ€™ll share updates as soon as it becomes available.

If you need any help adding the integratorID, please reach out to us here.


For Relayers

Relayers supporting Solana will need:

  1. A valid Solana address to perform fill operations.

  2. The following package dependencies:

    1. @across-protocol/sdk

    2. @across-protocol/contracts

    3. @solana/kit (previously @solana/web3.js@^2.0.0)

While each relayer can decide how to manage their Solana addresses, the recommended approach is deriving the Solana address from the same private key used for EVM operations. This approach minimizes the need to store additional secrets.

Fill Mechanism Changes

For relayers, the most significant update for relayers is the transition from fillV3Relay to fillRelay for handling crosschain transactions:

  1. For deposits from Solana to EVM chains:

    1. Relayers monitor for deposit events on Solana

    2. Use fillRelay to complete the fill transaction on the EVM destination. You can learn more about it here.

  2. For deposits from EVM chains to Solana:

    1. Monitor for deposit events on EVM chains

    2. Use Solana-specific fill functions to complete the transaction

We use emit_cpi!() method in Anchor to emit events through a Cross Program Invocation (CPI) by including the event data in the instruction data. Here, you need to fetch all transactions involving the SVM Spokepool program and inspect the internal event data. Please checkout the helper in the SDK to implement this.


Technical Reference

Deposit Function

The deposit function is used when users want to transfer funds from Solana to an EVM chain:

FillRelay Function

Relayers use this function to complete crosschain transactions:


Support

Want to learn more or need personalized help? Check out developer support and reach out to us!

Last updated