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)已移除。舊的 2122 帳戶配置仍被接受。但請注意,第 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(執行邏輯)