本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
版本信息
- SDK:
@raydium-io/raydium-sdk-v2@0.2.64-alpha - 集群:Solana
mainnet-beta - Stable AMM 程序 ID:
5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h(参见reference/program-addresses) - 最后验证:2026-09-09,针对 SDK
0.2.64-alpha源代码和raydium-sdk-V2-demoamm/trade 示例
liquidity 模块原生支持 Stable AMM 池。Stable 池在 ApiV3PoolInfoStandardItem 上显示为 version: 5(或 pooltype: "StablePool");相同的 addLiquidity / removeLiquidity / swap 辅助函数对它们和 AMM v4(version: 4)常数乘积池都适用——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 池对象交给它。两个细节容易出错:computeAmountOut 需要池的实时储备接合到池信息上(API 项本身不包含它们),其 slippage 是一个普通数字,不是 Percent:
programId 并分派到 Stable AMM 程序。不需要特殊的 programId 参数。
添加和移除流动性
addLiquidity 和 removeLiquidity 在 v4 和 v5 池上的工作方式相同:
InstructionType.AmmV5AddLiquidity,因为 pooltype.includes("StablePool") 为真。对应的 removeLiquidity 流是对称的——输入 lpAmount 和你将接受的每一侧的最小金额。
链下报价辅助函数(stable.ts)
对于服务器端报价或回测,SDK 公开了底层稳定曲线数学:ModelDataInfo 由 initLayout() 获取一次并缓存在 raydium.liquidity.stableLayout 内,可读为 .stableModelData。initStableModelLayout() 是幂等的:仅在 validDataCount === 0 时重新获取,所以再次调用 initLayout() 是免费的。传入当前储备(x、y),辅助函数通过二分搜索查找表并在两个相邻 DataElement 行之间线性插值来计算。参见 products/stable/math 了解底层算法。
通过 AMM 路由进行路由(多跳 / 最佳价格)
如果你不想自己选择场所,AMM 路由 程序将考虑每个 Raydium AMM(v4 / CPMM / CLMM / Stable)并通过最佳组合路由: 路由器是一个五调用管道而不是单个swap(),它完整地写出来——带有使其在生产中可用的缓存建议——在 products/routing/code-demos。形状是:
建议
- 对于最终用户交换,优先使用
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。

