← Protocols
Sanctum
01Description

LST infrastructure on Solana: the Sanctum Router for atomic cross-LST swaps, the Infinity (INF) multi-LST liquidity pool, and tooling that lets any validator launch a branded liquid-staking token. Built by Igneous Labs.

02Best for
  • 01swapping between any pair of Solana LSTs (jitoSOL, mSOL, bSOL, INF, etc.)
  • 02minting / redeeming the INF multi-LST index
  • 03launching a validator-branded LST
  • 04LP'ing into the Infinity pool for diversified LST yield
03Install
  • pnpm add @solana/web3.js @coral-xyz/anchor
04Environment variables
VariableScopeDescription
SOLANA_RPC_URLServerSolana mainnet RPC. Sanctum Router cranks load many stake-pool state accounts per swap.
05Prompt snippet
Sanctum exposes its router primarily via Jupiter — for app code, `@jup-ag/api` will already route LST↔LST through Sanctum and you should NOT reimplement it. For direct integration use the open-source `igneous-labs/sanctum-router-sdk` (Rust + WASM bindings) or hit the Sanctum quote/swap HTTP API at `https://sanctum-extra-api.ngrok.dev` (`GET /v1/swap/quote`, `POST /v1/swap`). For minting INF, fetch the LST stake-pool program addresses from `learn.sanctum.so/docs` and compose a deposit-stake or deposit-sol instruction. Always read the underlying stake pool's `lastUpdateEpoch` to confirm prices are fresh for the current epoch.
06Gotchas
  • LST↔LST conversion rates only update once per epoch (~2 days on Solana) — quote responses include `epoch` and `lastUpdate`; reject swaps where `currentEpoch > stakePool.lastUpdateEpoch` and force a `UpdateStakePool` crank ix first.
  • Sanctum Router can fan out to many sub-accounts per swap; CU consumption can exceed 1.2M. Set `setComputeUnitLimit({ units: 1_400_000 })` and a priority fee or the tx silently fails.
  • Withdrawals from a stake pool to native SOL require the pool's reserve to have liquidity — INF redemptions can return a stake account (not SOL) when liquidity is thin; handle the `StakeAccount` return path explicitly.
  • INF pool is a multi-asset pool, so deposit/withdraw composition affects the price impact — for large flows, route through Jupiter or split the deposit across multiple LSTs.
  • Validator-branded LSTs use SPL stake-pool program variants — the program ID may differ per LST; verify `stakePool.programId` before signing.
  • Sanctum has no published @sanctumso npm package; integrations are typically via Jupiter routing or the Igneous Labs Rust SDK with WASM bindings.
07Alternatives