跳轉到主要內容
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
文件變更日誌條目。如需所有更新的索引,請參閱 reference/changelog。如需協議本身的歷史時間軸,請參閱 introduction/history-and-milestones
AMM v4 早已停止與 OpenBook(前身為 Serum)共享流動性;混合訂單簿做市路徑已休眠多年。此次升級是清理工作:它移除 Serum 依賴、所有訂單簿 CPI 和已廢棄的做市指令,使 AMM v4 成為純粹的常數乘積(x·y=k)AMM。它不會改變任何實時交易行為——沒有遺留的 OpenBook 訂單需要停止下單。

整合者速覽

  • Swap / Deposit / Withdraw 無需變更即可繼續運作。 使用舊帳戶佈局構建的交易仍會執行——已移除的 Serum/市場帳戶會被簡單忽略(無驗證、無 CPI)。SwapBaseIn / SwapBaseOut 仍需要 17 個(+1 個可選) 帳戶;DepositWithdraw 佈局保持不變。你無需發佈客戶端更新來保持現有流程運作。
  • 遷移至 V2 交換進入點。 SwapBaseInV2 / SwapBaseOutV2 不含市場帳戶和 amm_open_orders(共 8 個帳戶),因此交易更小、成本更低。路由器/聚合器應透過 V2 路由。
  • WithdrawPnl 是硬性破壞性變更(僅限管理員)。 帳戶數從 17 個(+1 個可選)→ 10 個無相容性解析;舊佈局會錯位(舊的 #5 是 amm_open_orders)並驗證失敗。管理員工具必須更新。
  • SetParams 是硬性破壞性變更(僅限管理員)。 帳戶縮減至 [amm, admin]param 列舉被重新編號Fees 9 → 2,SetOpenTime 11 → 3);AmmOwnerLastOrderDistanceUpdateOpenOrder 和網格參數已移除。
  • 多個指令不再可呼叫。 InitializePreInitializeMonitorStepMigrateToOpenBookWithdrawSrmSimulateInfoAdminCancelOrders 現在會回復。使用 Initialize2 建立池。
  • 鏈上帳戶佈局位元組穩定,錯誤代碼保持不變。 AmmInfo / StateData 保持其佈局(舊 OpenBook 欄位保留但已棄用/凍結);AmmError 編號保留,僅在末尾附加新的 NotAllowed

為什麼這很重要(對交易者、LP 和整合者)

  • 交易者在交換行為或定價上看不到變化——常數乘積曲線保持不變。V2 佈局交換成本更低,因為它們攜帶的帳戶少約 8 個。
  • LP 保持相同的存入/提取經濟學。流動性長期以來完全位於池金庫中,因此池價值完全在池上;此升級僅刪除了陳舊的市場管道。
  • 整合者獲得更小、更簡單的交易和直接從金庫讀取的報價模型。現有整合不會中斷(除了管理員 WithdrawPnl / SetParams),但 v1 交換相容性墊片是臨時的——請在方便時遷移至 V2。

指令級變更

仍可呼叫,佈局不變(向後相容)

Initialize2DepositWithdrawSwapBaseInSwapBaseOutCreateConfigAccountUpdateConfigAccount 保持其現有帳戶列表。在 SwapBaseIn / SwapBaseOutDepositWithdraw 上,OpenBook/市場帳戶仍被按位置接受,但不再被驗證或使用——不發出 CPI,池準備金僅從金庫計算。帳戶數量仍必須匹配,因此現有交易繼續無變化地執行。

SwapBaseInV2 / SwapBaseOutV2 — 推薦路徑

完全省略市場帳戶和 amm_open_orders(8 個帳戶;標籤 16 / 17)。報價數學與 v1 相同。新整合和路由器應使用 V2。

WithdrawPnl — 17 個(+1 個可選)→ 10 個帳戶(⚠️ 硬性破壞,無相容性路徑)

amm_open_orders 和所有六個市場帳戶已移除。新的固定 10 帳戶、僅限管理員的佈局沒有相容性解析;舊佈局會錯位並因 InvalidCoinVault 等錯誤而失敗。

SetParams — 縮減至 [amm, admin](⚠️ 硬性破壞)+ 重新編號的參數

權限、開放訂單、目標訂單、金庫和所有市場帳戶已移除。param 列舉被重新編號和修剪:
參數舊值新值
Status00
State11
Fees92
SetOpenTime113
所有訂單簿網格參數(OrderNumDepthAmountWaveMinPriceMultiplierMaxPriceMultiplierMinSizeVolMaxCutRatioInitOrderDepthSetSwitchTimeClearOpenTimeSeperate)加上 AmmOwnerLastOrderDistanceUpdateOpenOrder 已移除。SetParamsInstruction 結構刪除了 new_pubkeylast_order_distance

不再可呼叫(運行時回復;構建器已移除)

指令標籤替代品
Initialize0Initialize2
MonitorStep2無(訂單簿 crank,已停用)
MigrateToOpenBook5
WithdrawSrm8無(SRM 費用折扣,已停用)
PreInitialize10Initialize2
SimulateInfo12鏈下 / SDK 報價
AdminCancelOrders13

準備金 / 狀態變更

  • 池資產公式。 總池資產現為 金庫餘額 − 待處理 PnL (need_take_pnl);OpenBook 開放訂單項——實際上已為零——已刪除。報價代碼可直接從金庫餘額讀取。
  • 已棄用的狀態欄位。 StateData.total_pnl_pctotal_pnl_coinorderbook_to_init_timeswap_coin_in_amountswap_pc_out_amountswap_acc_pc_feeswap_pc_in_amountswap_coin_out_amountswap_acc_coin_fee 為了佈局相容性而保留,但不再更新。依賴 swap_* 交易量計數器的消費者應切換至交易日誌。
  • AmmInfo 初始化。 coin_lot_sizepc_lot_sizemin_size 現初始化為 0
  • 已移除的依賴和 CPI。 serum_dex crate 從 Cargo.toml 中刪除;所有 Serum DEX CPI(invoke_dex_new_order_v3invoke_dex_cancel_order_v2invoke_dex_settle_fundsinvoke_dex_init_open_orders、…)從 invokers.rs 中移除。已移除的數據結構:LastOrderDistanceSimulateParamsRunCrankDataGetPoolDataGetSwapBaseInDataGetSwapBaseOutData