Skip to main content
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
版本信息
  • SDK: @raydium-io/raydium-sdk-v2@0.2.42-alpha
  • 集群: Solana mainnet-beta
  • Stable AMM 程序 ID: 5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h(见 reference/program-addresses
  • 最后验证: 2026-04
SDK 的 liquidity 模块原生支持 Stable AMM 池。Stable 池在 ApiV3PoolInfoStandardItem 上显示为 version: 5(或 pooltype: "StablePool");与 AMM v4(version: 4)常数乘积池相同的 addLiquidity / removeLiquidity / swap 辅助函数也适用于它们——SDK 会自动检测变体并发出正确的指令。链下稳定曲线数学位于 src/raydium/liquidity/stable.ts

设置

识别 Stable 池

ApiV3PoolInfoStandardItem 上的两个等效信号:
AMM v4(version: 4,常数乘积)和 Stable AMM(version: 5)都通过 SDK 上相同的 LiquidityModule API 流动。在内部,模块分派到:
  • InstructionType.AmmV4AddLiquidity / AmmV4RemoveLiquidity 用于 v4 池
  • InstructionType.AmmV5AddLiquidity / AmmV5RemoveLiquidity 用于 v5(Stable)池
池的 programId(与池密钥一起返回)告诉 SDK 要 CPI 到哪个程序;你不需要硬编码它。

按代币对查找池

如果代币对同时有 v4(常数乘积)池和 v5(stable)池,响应包含两者——选择你的流程需要的那个,或将它们交给 AMM 路由 程序,让它选择最佳路由。

通过 Stable 池进行交换

LiquidityModule.swap 流的形状与 v4 池相同——只需将 v5 池对象交给它:
SDK 从池密钥中读取池的 programId 并分派到 Stable AMM 程序。不需要特殊的 programId 参数。

添加和移除流动性

addLiquidityremoveLiquidity 在 v4 和 v5 池上的工作方式相同:
在内部,SDK 发出 InstructionType.AmmV5AddLiquidity,因为 pooltype.includes("StablePool") 为真。对应的 removeLiquidity 流是对称的——输入 lpAmount 和你将接受的每一侧的最小数量。

链下报价辅助函数(stable.ts)

对于服务器端报价或回测,SDK 公开了底层稳定曲线数学:
这些是纯函数——无 RPC,无签署。链上 ModelDataInfoinitLayout() 获取一次并缓存在 raydium.liquidity.stableLayout 中。传递当前储备量(xy),辅助函数通过二分搜索查找表并在两个相邻 DataElement 行之间线性插值来计算。有关底层算法,见 products/stable/math

通过 AMM 路由进行路由(多跳 / 最佳价格)

如果你不想自己选择场所,AMM 路由 程序将考虑每个 Raydium AMM(v4 / CPMM / CLMM / Stable)并通过最佳组合进行路由:
这是生产交换器和聚合器的推荐路径——你永远不需要手动决定 Stable 池是否存在或它是否是今天更好的场所。

建议

  1. 对于最终用户交换,优先使用 tradeV2 路由流。它处理每个 Raydium 池类型,包括 Stable。
  2. 对于池特定操作(已知 Stable 池上的 LP 添加 / 移除),直接使用 LiquidityModule——它自动检测 v5 池。
  3. 对于链下报价 / 分析,在 initLayout() 后调用 getStablePrice / getDyByDxBaseIn / getDxByDyBaseIn。模型数据缓存后,每个报价无 RPC 流量。
  4. 不要手工编码原始 SwapBaseIn 指令。 2026-06-22 升级 移除了已弃用的 OpenBook 账户,所以新的交换布局需要 9 个账户(旧的 18 账户布局仍然可以解析以实现向后兼容性)。Deposit 现在是 12 个账户(旧的 14 个兼容),Withdraw 12 个(旧的 21/22 个兼容),WithdrawPnl 10 个,没有兼容性路径。SDK 的预构建辅助函数为你选择正确的布局和顺序;自己编写容易出错。有关完整的账户表,见 products/stable/instructions

接下来去哪里

  • 数学——查找表插值的工作原理。
  • 指令——完整的指令参考。
  • AMM 路由——跨 AMM v4、CPMM、CLMM、Stable 的多池路由。
来源: