Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Banner de versão.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.42-alpha - Cluster: Solana
mainnet-beta - ID do programa Stable AMM:
5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h(vejareference/program-addresses) - Última verificação: 2026-04
liquidity do SDK lida nativamente com pools Stable AMM. Pools estáveis aparecem como version: 5 (ou pooltype: "StablePool") em ApiV3PoolInfoStandardItem; os mesmos helpers addLiquidity / removeLiquidity / swap funcionam para eles como para pools de produto constante AMM v4 (version: 4) — o SDK detecta a variante e emite as instruções corretas automaticamente. A matemática off-chain da curva estável fica em src/raydium/liquidity/stable.ts.Configuração
Identificando um pool Stable
Dois sinais equivalentes emApiV3PoolInfoStandardItem:
version: 4, produto constante) quanto Stable AMM (version: 5) fluem através da mesma API LiquidityModule no SDK. Internamente o módulo despacha para:
InstructionType.AmmV4AddLiquidity/AmmV4RemoveLiquiditypara pools v4InstructionType.AmmV5AddLiquidity/AmmV5RemoveLiquiditypara pools v5 (Stable)
programId do pool (retornado com as chaves do pool) diz ao SDK qual programa fazer CPI; você não precisa codificá-lo.
Encontrar um pool por par de mints
Fazer swap através de um pool Stable
O fluxoLiquidityModule.swap tem a mesma forma que para pools v4 — apenas passe um objeto pool v5:
programId do pool a partir das chaves do pool e despacha para o programa Stable AMM. Nenhum argumento programId especial é necessário.
Adicionar e remover liquidez
addLiquidity e removeLiquidity funcionam identicamente em pools v4 e v5:
InstructionType.AmmV5AddLiquidity porque pooltype.includes("StablePool") é verdadeiro. O fluxo correspondente de removeLiquidity é simétrico — forneça lpAmount e os valores mínimos que você aceitará em cada lado.
Helpers de quote off-chain (stable.ts)
Para quoting do lado do servidor ou backtesting, o SDK expõe a matemática subjacente da curva estável:ModelDataInfo on-chain é buscado uma vez por initLayout() e armazenado em cache em raydium.liquidity.stableLayout. Passe as reservas atuais (x, y) e os helpers computam fazendo busca binária na tabela de lookup e interpolação linear entre as duas linhas DataElement circundantes. Veja products/stable/math para o algoritmo subjacente.
Roteamento através do AMM Routing (multi-hop / melhor preço)
Se você não quer escolher um venue você mesmo, o programa AMM Routing considerará cada AMM Raydium (v4 / CPMM / CLMM / Stable) e roteará através de qualquer combinação que seja melhor:Recomendações
- Para swaps de usuário final, prefira o fluxo de roteamento
tradeV2. Ele lida com cada tipo de pool Raydium incluindo Stable. - Para operações específicas de pool (LP add / remove em um pool Stable conhecido), use o
LiquidityModulediretamente — ele detecta automaticamente pools v5. - Para quoting off-chain / análise, chame
getStablePrice/getDyByDxBaseIn/getDxByDyBaseInapósinitLayout(). Sem tráfego RPC por quote após o modelo de dados ser armazenado em cache. - Não codifique manualmente instruções
SwapBaseInbrutas. A atualização de 2026-06-22 removeu as contas OpenBook mortas, então o novo layout de swap leva 9 contas (o layout antigo de 18 contas ainda analisa para compatibilidade com versões anteriores).Depositagora é 12 contas (14 antigas compatíveis),Withdraw12 (21/22 antigas compatíveis), eWithdrawPnl10 com nenhum caminho de compatibilidade. Os helpers pré-construídos do SDK selecionam o layout e ordenação corretos para você; fazer o seu próprio é propenso a erros. Vejaproducts/stable/instructionspara as tabelas de contas completas.
Para onde ir a seguir
- Math — como funciona a interpolação da tabela de lookup.
- Instructions — referência completa de instruções.
- AMM Routing — roteamento multi-pool através de AMM v4, CPMM, CLMM, Stable.
raydium-sdk-V2/src/raydium/liquidity/liquidity.ts— ponto de entrada do módulo; despacho v4 / v5.raydium-sdk-V2/src/raydium/liquidity/stable.ts—StableLayout,getStablePrice,getDxByDyBaseIn,getDyByDxBaseIn.

