跳轉到主要內容
本頁內容由 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

指令清單

可呼叫

指令類別備註
Deposit流動性新增流動性,接收 LP。新的 12 帳戶配置;舊的 14 帳戶配置仍相容。
Withdraw流動性銷毀 LP,接收雙邊。新的 12 帳戶配置;舊的 21/22 帳戶配置仍相容。
SwapBaseIn交換精確輸入交換。新的 9 帳戶配置;舊的 18 帳戶配置仍相容。
SwapBaseOut交換精確輸出交換。新的 9 帳戶配置;舊的 18 帳戶配置仍相容。
WithdrawPnl管理員清掃累積的協議費用。新的 10 帳戶配置(硬性破壞 — 無舊配置相容性)。

已移除(無法再呼叫)

這些在 2026-06-22 升級中被移除,無法再被呼叫。請參閱已移除的指令
指令前類別前用途
Initialize生命週期建立資金池。
PreInitialize生命週期舊版預分配輔助工具。
InitModelData模型設定建立並初始化查詢表。
UpdateModelData模型設定每次呼叫最多填充 5 個表格元素。
MonitorStepCrank結算 OpenBook 成交,重新發佈訂單。
SetParams管理員變更資金池參數。
WithdrawSrm舊版清掃 SRM 費用折扣回扣。
SimulateInfo診斷唯讀報價輔助工具。

Deposit

新增流動性,接收 LP 代幣。 引數
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base on coin, 1 = base on pc
帳戶 — 新配置,12 個帳戶(可寫 W、簽署者 S
#名稱WS備註
0token_programSPL Token。
1ammW資金池的 AmmInfo
2amm_authority程式範圍 PDA。
3amm_target_ordersW
4amm_lp_mintWLP 鑄幣。
5amm_coin_vaultW資金池 coin 金庫。
6amm_pc_vaultW資金池 pc 金庫。
7model_data_account唯讀查詢表。
8user_source_coinW使用者的 coin 輸入。
9user_source_pcW使用者的 pc 輸入。
10user_dest_lpW使用者的 LP ATA。
11user_source_ownerS交易簽署者。
相容性amm_open_orders(舊 #3)和 serum_market(舊 #9)已移除。當傳遞 14 個帳戶時,指令使用舊的 14 帳戶配置進行解析;Serum 帳戶被忽略。 數學 — 使用查詢表計算比率的標準按比例分配。SDK 計算所需 LP 數量的 coin/pc 對,並檢查最大上限。

Withdraw

銷毀 LP,按比例接收雙邊。 引數
amount: u64            // 要銷毀的 LP 代幣
帳戶 — 新配置,12 個帳戶(可寫 W、簽署者 S
#名稱WS備註
0token_programSPL Token。
1ammW資金池的 AmmInfo
2amm_authority程式範圍 PDA。
3amm_target_ordersW
4amm_lp_mintWLP 鑄幣。
5amm_coin_vaultW資金池 coin 金庫。
6amm_pc_vaultW資金池 pc 金庫。
7model_data_account唯讀查詢表。
8user_source_lpW使用者的 LP 來源。
9user_dest_coinW使用者的 coin 輸出。
10user_dest_pcW使用者的 pc 輸出。
11user_lp_ownerS交易簽署者。
相容性:九個 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

使用查詢表進行定價的精確輸入交換。 引數
amount_in: u64
minimum_amount_out: u64
帳戶 — 新配置,9 個帳戶(可寫 W、簽署者 S
#名稱WS備註
0spl_token programSPL Token。
1ammW資金池的 AmmInfo
2amm_authority程式範圍 PDA。
3amm_coin_vaultW資金池 coin 金庫。
4amm_pc_vaultW資金池 pc 金庫。
5model_data_account唯讀查詢表。
6user_source_tokenW使用者的輸入代幣帳戶。
7user_destination_tokenW使用者的輸出代幣帳戶。
8user_source_ownerS使用者(交易簽署者)。
相容性:九個 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 帳戶配置,不同的數學方向。 引數
max_amount_in: u64
amount_out: u64

WithdrawPnl

僅限管理員。從 need_take_pnl_* 清掃累積的協議費用到指定的 PnL 帳戶。
硬性破壞性變更 — 沒有相容性路徑。 此指令沒有舊配置的解析。發送舊配置會因帳戶錯位而失敗,出現驗證錯誤,例如 InvalidTokenCoin(舊 #3 是 open_orders)。呼叫 WithdrawPnl 的管理員工具必須更新到新的 10 帳戶配置。
引數 — 無(狀態驅動)。 帳戶 — 新配置,固定 10 個帳戶,僅限管理員(可寫 W、簽署者 S
#名稱WS備註
0spl_token programSPL Token。
1ammW資金池的 AmmInfo
2amm_authority程式範圍 PDA。
3amm_coin_vaultW資金池 coin 金庫。
4amm_pc_vaultW資金池 pc 金庫。
5amm_target_ordersW
6model_data查詢表。
7user_coinW管理員的 coin 帳戶(接收費用)。
8user_pcW管理員的 pc 帳戶(接收費用)。
9amm_adminS資金池管理員(簽署者)。
邏輯變更:當資金池的可用資金不足以提取累積的 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(執行邏輯)