router_address on the quote. The funds land in the escrow, a program-derived account (DvCPeroncQwfZxWBzQxHbUYNr4wpYGRZ4AoNkj2iUqhA, seed escrow); its address and token accounts derive from the program id, so nothing beyond the quote is needed to build the deposit.
Instructions
For
deposit_native and deposit_token, instruction data is 48 bytes: an 8-byte discriminator, the 32-byte quote hash, then the amount as a little-endian u64.
Accounts
- deposit_token
- deposit_native
Deposits that swap first
When the source token is not the asset that bridges, fetchGetSwapInstructions for the quote. The svm payload carries the aggregator’s setup, swap, and cleanup instructions plus lookup tables; the swap step is wrapped in the program’s deposit_swap instruction, which invokes the aggregator, checks that the escrow received at least min_bridge_out, and emits the deposit event. buildSvmSwapDeposit in the SDK assembles the whole versioned transaction.
Gasless deposits
A quote requested withgasless: true returns a sponsor_address. Build the same deposit with the sponsor as fee payer, sign it, and hand the serialized transaction to SubmitGaslessOrder; the sponsor co-signs and submits it, so the depositor needs no SOL. The SDK’s gaslessSteps does this end to end.
With the SDK
buildSvmDeposit assembles the instruction, derives the escrow accounts, resolves the token program, sets the fee payer, and attaches a recent blockhash. It returns a serialized unsigned transaction ready for a wallet to sign.
Account rent
If the recipient on a Solana destination has no associated token account for the delivered mint, one is created during fulfillment and its rent appears asdst_ata_create in the fee breakdown. The same applies on the source side for refunds, as src_ata_create. Both are already priced into amount_out.