Skip to main content
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
Stable AMM 是一个独立程序,拥有自己的程序 ID。它不是 AMM v4 程序的一种模式,也不是通过 AMM v4 进行交易 — 它是单独部署、升级和调用的。它仅在费用和账户布局约定上与 AMM v4 相似。
2026-06-22 升级 — 移除已弃用的 OpenBook(市场)代码。 Stable AMM 很久以前就停止向 OpenBook 发布订单;订单簿做市路径已经闲置多年。此升级删除了剩余的市场相关账户和代码 — 它不会改变实时交易行为。对集成者的两个影响:
  1. 更小的账户布局。 SwapBaseIn / SwapBaseOut18 → 9)、Deposit14 → 12)和 Withdraw21/22 → 12)移除了已弃用的 Serum/市场账户。旧布局仍可解析以保持向后兼容性。WithdrawPnl16 → 10)是硬性破坏性变更,没有兼容性路径(仅限管理员)。
  2. 大多数指令已移除。SwapBaseInSwapBaseOutDepositWithdrawWithdrawPnl 保持可调用。所有其他指令不再可调用。
更新日志:reference/changelog

指令清单

可调用

已移除(不再可调用)

这些在 2026-06-22 升级中被移除,不再可调用。参见已移除的指令

Deposit

添加流动性,接收 LP 代币。 参数
账户 — 新布局,12 个账户(可写 W,签名者 S 兼容性amm_open_orders(旧 #3)和 serum_market(旧 #9)已移除。当传递14个账户时,指令使用旧的 14 账户布局解析;Serum 账户被忽略。 数学 — 使用查找表计算比率的标准按比例分配。SDK 计算所需 LP 数量的 coin/pc 对,并检查最大上限。

Withdraw

销毁 LP,按比例接收两种代币。 参数
账户 — 新布局,12 个账户(可写 W,签名者 S 兼容性:九个 Serum 账户(amm_open_ordersserum_programserum_marketserum_coin_vaultserum_pc_vaultserum_vault_signerserum_event_qserum_bidsserum_asks)已移除。旧的21 个22 个账户布局仍被接受。但是,第 22 个可选 referrer_pc_wallet 账户的推荐费逻辑已被移除 — 它仍可传递但不再生效。 前置条件
  • user_source_lp 至少持有 amount
后置条件
  • amount LP 代币被销毁。
  • 用户根据当前按比例分配接收 coin 和 pc 数量,已调整费用。

SwapBaseIn

使用查找表进行定价的精确输入交换。 参数
账户 — 新布局,9 个账户(可写 W,签名者 S 兼容性:九个 OpenBook 账户(amm_open_ordersserum_programserum_marketserum_bidsserum_asksserum_event_queueserum_coin_vaultserum_pc_vaultserum_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 账户。
硬性破坏性变更 — 无兼容性路径。 此指令没有旧布局的解析。发送旧布局会因账户错位而失败,出现验证错误如 InvalidTokenCoin(旧 #3 是 open_orders)。调用 WithdrawPnl 的管理员工具必须更新到新的 10 账户布局。
参数 — 无(状态驱动)。 账户 — 新布局,固定 10 个账户,仅限管理员(可写 W,签名者 S 逻辑变更:当池的可用资金不足以提取累积的 PnL 时,池不再进入 CancelAllOrdersState / Disabled;指令直接返回 TakePnlError。可选的 referrer_pc_wallet 也已被移除。 前置条件
  • amm_admin 必须被授权。
后置条件
  • need_take_pnl_coinneed_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 的链下稳定曲线辅助工具进行报价(参见代码演示)。

后续步骤

  • 账户 — 账户字段布局和大小。
  • 数学 — 查找表插值逻辑。
  • 代码演示 — 了解如何从 SDK 调用这些。
来源:
  • raydium-stable/program/src/instruction.rs(枚举和 pack/unpack)
  • raydium-stable/program/src/processor.rs(执行逻辑)