本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
Stable AMM 是一个独立程序,拥有自己的程序 ID。它不是 AMM v4 程序的一种模式,也不是通过 AMM v4 进行交易 — 它是单独部署、升级和调用的。它仅在费用和账户布局约定上与 AMM v4 相似。
指令清单
可调用
已移除(不再可调用)
这些在 2026-06-22 升级中被移除,不再可调用。参见已移除的指令。Deposit
添加流动性,接收 LP 代币。
参数
W,签名者 S)
兼容性:
amm_open_orders(旧 #3)和 serum_market(旧 #9)已移除。当传递14个账户时,指令使用旧的 14 账户布局解析;Serum 账户被忽略。
数学 — 使用查找表计算比率的标准按比例分配。SDK 计算所需 LP 数量的 coin/pc 对,并检查最大上限。
Withdraw
销毁 LP,按比例接收两种代币。
参数
W,签名者 S)
兼容性:九个 Serum 账户(
amm_open_orders、serum_program、serum_market、serum_coin_vault、serum_pc_vault、serum_vault_signer、serum_event_q、serum_bids、serum_asks)已移除。旧的21 个或22 个账户布局仍被接受。但是,第 22 个可选 referrer_pc_wallet 账户的推荐费逻辑已被移除 — 它仍可传递但不再生效。
前置条件
user_source_lp至少持有amount。
amountLP 代币被销毁。- 用户根据当前按比例分配接收 coin 和 pc 数量,已调整费用。
SwapBaseIn
使用查找表进行定价的精确输入交换。
参数
W,签名者 S)
兼容性:九个 OpenBook 账户(
amm_open_orders、serum_program、serum_market、serum_bids、serum_asks、serum_event_queue、serum_coin_vault、serum_pc_vault、serum_vault_signer)已移除。如果传递的账户数不是 9,指令使用旧的18 账户布局解析;Serum 账户必须仍占据其位置,但其内容不再被验证或使用。
前置条件
amm.status允许交换。user_source_token持有 ≥amount_in。
- 用户失去
amount_in,获得amount_out ≥ minimum_amount_out。 - 池费用增加
need_take_pnl_*计数器。
products/stable/math中所述的查找表插值。
SwapBaseOut
精确输出交换(SwapBaseIn 的反向)。相同的 9 账户布局,不同的数学方向。
参数
WithdrawPnl
仅限管理员。从 need_take_pnl_* 提取累积的协议费用到指定的 PnL 账户。
参数 — 无(状态驱动)。
账户 — 新布局,固定 10 个账户,仅限管理员(可写 W,签名者 S)
逻辑变更:当池的可用资金不足以提取累积的 PnL 时,池不再进入
CancelAllOrdersState / Disabled;指令直接返回 TakePnlError。可选的 referrer_pc_wallet 也已被移除。
前置条件
amm_admin必须被授权。
need_take_pnl_coin和need_take_pnl_pc被转移到管理员的账户。- 计数器被清零。
已移除的指令
以下指令在 2026-06-22 升级中被移除,不再可调用。此处记录它们仅是为了让集成者在历史交易和 SDK 中识别它们。Initialize— 原用于引导新的 Stable AMM 池。已移除。PreInitialize— 旧版预分配辅助工具。已移除。InitModelData— 原用于创建并初始化ModelDataInfo查找表。已移除。UpdateModelData— 原用于每次调用填充最多 5 个查找表元素。已移除。MonitorStep— 结算成交并重新发布订单网格的 OpenBook crank。在池停止向 OpenBook 发布后已长期闲置;现已移除。SetParams— 管理员参数更改(状态、费用、所有者、模型数据密钥等)。已移除。WithdrawSrm— 从早期 Serum 时代的池中提取 SRM 费用折扣返利。已移除。SimulateInfo— 只读报价辅助工具。已移除;使用 SDK 的链下稳定曲线辅助工具进行报价(参见代码演示)。
后续步骤
来源:raydium-stable/program/src/instruction.rs(枚举和 pack/unpack)raydium-stable/program/src/processor.rs(执行逻辑)

