本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
版本信息
- SDK:
@raydium-io/raydium-sdk-v2@0.2.42-alpha - 集群: Solana
mainnet-beta - Stable AMM 程序 ID:
5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h(见reference/program-addresses) - 最后验证: 2026-04
liquidity 模块原生支持 Stable AMM 池。Stable 池在 ApiV3PoolInfoStandardItem 上显示为 version: 5(或 pooltype: "StablePool");与 AMM v4(version: 4)常数乘积池相同的 addLiquidity / removeLiquidity / swap 辅助函数也适用于它们——SDK 会自动检测变体并发出正确的指令。链下稳定曲线数学位于 src/raydium/liquidity/stable.ts。设置
识别 Stable 池
ApiV3PoolInfoStandardItem 上的两个等效信号:
version: 4,常数乘积)和 Stable AMM(version: 5)都通过 SDK 上相同的 LiquidityModule API 流动。在内部,模块分派到:
InstructionType.AmmV4AddLiquidity/AmmV4RemoveLiquidity用于 v4 池InstructionType.AmmV5AddLiquidity/AmmV5RemoveLiquidity用于 v5(Stable)池
programId(与池密钥一起返回)告诉 SDK 要 CPI 到哪个程序;你不需要硬编码它。
按代币对查找池
通过 Stable 池进行交换
LiquidityModule.swap 流的形状与 v4 池相同——只需将 v5 池对象交给它:
programId 并分派到 Stable AMM 程序。不需要特殊的 programId 参数。
添加和移除流动性
addLiquidity 和 removeLiquidity 在 v4 和 v5 池上的工作方式相同:
InstructionType.AmmV5AddLiquidity,因为 pooltype.includes("StablePool") 为真。对应的 removeLiquidity 流是对称的——输入 lpAmount 和你将接受的每一侧的最小数量。
链下报价辅助函数(stable.ts)
对于服务器端报价或回测,SDK 公开了底层稳定曲线数学:ModelDataInfo 由 initLayout() 获取一次并缓存在 raydium.liquidity.stableLayout 中。传递当前储备量(x、y),辅助函数通过二分搜索查找表并在两个相邻 DataElement 行之间线性插值来计算。有关底层算法,见 products/stable/math。
通过 AMM 路由进行路由(多跳 / 最佳价格)
如果你不想自己选择场所,AMM 路由 程序将考虑每个 Raydium AMM(v4 / CPMM / CLMM / Stable)并通过最佳组合进行路由:建议
- 对于最终用户交换,优先使用
tradeV2路由流。它处理每个 Raydium 池类型,包括 Stable。 - 对于池特定操作(已知 Stable 池上的 LP 添加 / 移除),直接使用
LiquidityModule——它自动检测 v5 池。 - 对于链下报价 / 分析,在
initLayout()后调用getStablePrice/getDyByDxBaseIn/getDxByDyBaseIn。模型数据缓存后,每个报价无 RPC 流量。 - 不要手工编码原始
SwapBaseIn指令。 2026-06-22 升级 移除了已弃用的 OpenBook 账户,所以新的交换布局需要 9 个账户(旧的 18 账户布局仍然可以解析以实现向后兼容性)。Deposit现在是 12 个账户(旧的 14 个兼容),Withdraw12 个(旧的 21/22 个兼容),WithdrawPnl10 个,没有兼容性路径。SDK 的预构建辅助函数为你选择正确的布局和顺序;自己编写容易出错。有关完整的账户表,见products/stable/instructions。
接下来去哪里
来源:raydium-sdk-V2/src/raydium/liquidity/liquidity.ts——模块入口点;v4 / v5 分派。raydium-sdk-V2/src/raydium/liquidity/stable.ts——StableLayout、getStablePrice、getDxByDyBaseIn、getDyByDxBaseIn。

