Last updated
Last updated
Bitcoin and Solana cross-chain swaps are now on Squid!
The cross-chain swap mechanism is powered by .
Currently, Bitcoin and Solana integrations are in a closed beta. Please reach out if you would like to have the functionality enabled for your integrator ID.
This brief outlines what you need to know in order to enable swaps to and from Bitcoin and Solana. You can also explore the detailed.
Currently swaps are only supported to EVM chains. You can swap from EVM chains to Solana and BTC just as you would in a typical cross-chain swap.
When swapping from Solana or BTC. instead of submitting a cross-chain swap, you will be submitting a deposit via a simple asset transfer to a deposit address( depositAddress
).
A depositAddress is generated by submitting a typical route request to the route endpoint(). From there you will take the transactionRequest
body and submit it to the deposit address endpoint() using the same headers as the route request endpoint.
IMPORTANT NOTE: The deposit transfer must be initiated within 20 seconds of receiving the depositAddress from the deposit-address endpoint when submitting a the transfer to the deposit address. Otherwise, you will have to call the endpoint again for a new depositAddress and chainflipStatusTrackingID.
ChainID: bitcoin
Native Token: satoshi
Minimum Swap Amount: .0007 BTC
The Bitcoin wallet address should be a Native SegWit (Bech32) address
ChainID: solana-mainnet-beta
Native Token: 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Supported Tokens: SOL, USDC(EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
)
Minimum Swap Amount: $20 USD
Unlike EVM-to-EVM, EVM-to-Cosmos swaps, or EVM-to-SOL/BTC, swaps from Bitcoin and Solana require setting abridgeType
parameter and setting the transactionId
parameter as the chainflipStatusTrackingId returned from the deposit-address endpoint .
Bitcoin Example
Solana Example
You have to retrieve the deposit address from the /deposit-address endpoint
The transfer must be initiated within 20 seconds of receiving the deposit address
Both chains use the Chainflip bridge and require the bridgeType parameter for status checks
Status monitoring should use the chainflipId from the deposit-address response
Transaction confirmation times vary significantly between chains
The deposit address endpoint() will return the deposit address(depositAddress) which is where the asset should be transferred, the amount(amount
), which is the amount that should be transferred, and the chainflipStatusTrackingId
, which will be used for the status tracking.
When calling the status API(), the bridgeType should be set as chainflip
if the bridge destination is Arbitrum(42161) or chainflipmultihop
if the bridge destination is another EVM chain that is not Arbitrum
This chainflipID can be found in the returned object from the endpoint.