跳转到主要内容
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
Stable AMM 是一个独立程序(拥有自己的程序 ID——不通过 AMM v4 程序交易)。它很久以前就停止向 OpenBook 发送订单;OpenBook 做市路径已经闲置多年。此次升级是清理工作:它从指令布局中移除现已失效的市场相关账户和代码。它不会改变任何实时交易行为——没有遗留的 OpenBook 订单需要停止发送。

集成者速览

  • Swap / Deposit / Withdraw 继续工作,无需更改。 使用旧账户布局构建的交易仍然可以执行——被移除的 Serum/市场账户会被忽略。你不需要发布客户端更新来保持现有流程正常运行。
  • 但你应该尽快迁移到新的、更小的布局。 新布局移除了已失效的市场账户,减少交易大小:SwapBaseIn / SwapBaseOut18 → 9 个账户,Deposit 14 → 12Withdraw 21(+1 可选)→ 12。兼容性路径将在未来版本中移除。
  • WithdrawPnl 是一项重大破坏性变更(仅限管理员)。 它从 16(+1 可选)→ 10 个账户,没有兼容性解析。发送旧布局会因账户错位而失败,出现 InvalidTokenCoin 等验证错误(旧的 #3 是 open_orders)。任何调用 WithdrawPnl 的管理员工具都必须更新。
  • WithdrawWithdrawPnl 上移除了推荐费。 可选的 referrer_pc_wallet 账户仍可在 Withdraw 的旧布局上传递以保持向后兼容,但它不再生效。
  • 池资产会计已简化。 总池资产现在为 保险库余额 − 待结 PnL;OpenBook 挂单项——实际上已经为零——从公式中移除。仍然添加 OpenOrders 项的索引器和报价代码应该移除它。
  • 大多数指令已被移除。 只有 SwapBaseInSwapBaseOutDepositWithdrawWithdrawPnl 仍可调用。InitializePreInitializeInitModelDataUpdateModelDataMonitorStepSetParamsWithdrawSrmSimulateInfo 不再可调用。

为什么这很重要(对交易者、LP 和集成者)

  • 交易者在交换行为或定价形状上看不到任何变化——查找表曲线保持不变。新布局交换成本更低,因为交易携带的账户少了九个。
  • LP 保持相同的存取经济学。流动性长期以来完全位于池保险库中,所以池价值完全在链上;此升级仅删除了陈旧的市场管道。
  • 集成者获得更小、更简单的交易和一个少了一个(已经是残留的)项的报价模型。现有集成不会中断(除了管理员 WithdrawPnl),但兼容性垫片是临时的——在移除前按你的方便进行迁移。

指令级变更

SwapBaseIn / SwapBaseOut — 18 → 9 个账户(旧布局仍兼容)

九个 OpenBook 账户(amm_open_ordersserum_programserum_marketserum_bidsserum_asksserum_event_queueserum_coin_vaultserum_pc_vaultserum_vault_signer)被移除。兼容性:如果指令接收的账户数不是 9,则使用旧的 18 账户布局进行解析;Serum 账户必须仍占据其位置,但其内容不再被验证或使用。

Deposit — 14 → 12 个账户(旧布局仍兼容)

amm_open_orders(旧的 #3)和 serum_market(旧的 #9)被移除。当传递 14 个账户时,旧布局被解析以保持兼容性。

Withdraw — 21(+1 可选)→ 12 个账户(旧布局仍兼容)

九个 Serum 账户被移除。旧的 21 或 22 账户布局仍被接受,但第 22 个可选 referrer_pc_wallet 的推荐费逻辑已被移除——账户仍可传递但不再生效。

WithdrawPnl — 16(+1 可选)→ 10 个账户(⚠️ 无兼容性路径,重大破坏性变更)

固定 10 账户、仅限管理员的布局。没有旧布局的兼容性解析;发送它会因账户错位而失败,出现 InvalidTokenCoin 等错误。逻辑变更:当池的可用资金不足以提取累积的 PnL 时,池不再进入 CancelAllOrdersState / Disabled;指令直接返回 TakePnlError。可选的 referrer_pc_wallet 同样已被移除。

池资产计算变更

历史上该公式添加了池在其 OpenBook OpenOrders 账户中作为挂单持有的资金。该项自池停止发送订单以来一直为零;此升级从公式中完全删除它,仅保留保险库计算:
公式
保险库余额 + 挂单资金(native_coin_total / native_pc_total)− 待结 PnL(need_take_pnl)
保险库余额 − 待结 PnL(need_take_pnl)

更新的页面

  • products/stable/overview — 纯 AMM 模型,移除 OpenBook 依赖,更新了比较和账户计数表。
  • products/stable/index — “它是什么”和关键事实表不再声称 OpenBook 依赖。
  • products/stable/accounts — OpenBook 账户从清单中移除;AmmInfo Serum/挂单字段标记为已弃用/未使用;添加了池资产说明。
  • products/stable/instructions — 新的 Swap / Deposit / Withdraw / WithdrawPnl 账户表,带有兼容性标注;所有其他指令(InitializePreInitializeInitModelDataUpdateModelDataMonitorStepSetParamsWithdrawSrmSimulateInfo)标记为已移除/不再可调用。
  • products/stable/math — 池资产公式更新;MonitorStep / OpenBook 部分重新表述为长期已弃用。
  • products/stable/fees — “来自 OpenBook 的 PnL”部分已弃用;收集流程不再结算 OpenBook 成交。
  • products/stable/code-demos — 账户计数指导已更新;SDK 仍然抽象布局选择。
验证对象
  • raydium-stable 程序源代码(升级后的 instruction.rs / processor.rs)。
  • Solana mainnet-beta 上的链上 Stable AMM 程序部署。