Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
自 2026-07 升級起,AMM v4 的 OpenBook / Serum 依賴已被 移除 — 沒有指令再讀取或寫入 OpenBook 狀態。下列市場帳戶僅作為舊版 v1 指令佈局上的位置佔位符(被接受但忽略)以及 AmmInfo 上的參考欄位保留。請使用 V2 交換進入點,它們完全省略了這些帳戶。本頁仍將帳戶分組為「池擁有」和「OpenBook(舊版)」部分,以便閱讀較舊的交易。

清單

AMM v4 池在建立時在 AmmInfo 上記錄一個綁定的市場。完整情況如下: 注意:為了向後相容性,「serum」前綴在 AMM v4 的 IDL 和欄位名稱中保留。OpenBook 移除後,這些帳戶不再有功能。

AmmInfo

池的根狀態帳戶。大小(約 752 位元組),因為它內聯攜帶池和 OpenBook 參考。
結構 佈局未變(位元組相容),所以現有的反序列化器繼續工作,但在 OpenBook 移除後,上面標記為 已棄用 的欄位 不再被寫入swap_* 交易量計數器在其最後值處凍結。對於交易量分析,請使用交易日誌而不是這些欄位。只有 need_take_pnl_*pool_open_time 被主動維護。
面向整合者的欄位:
  • coin_vaultpc_vault — 池的 SPL Token 金庫。根據 Serum/OpenBook 慣例,cointoken_0(基礎),pctoken_1(報價)。
  • coin_decimalspc_decimals — 與鑄幣相匹配。
  • open_orderstarget_ordersmarket — 舊版參考欄位。仍在 AmmInfo 上,仍在 v1 指令佈局上按位置傳遞,但程式不再讀取或驗證它們。V2 交換進入點省略了它們。
  • fees.swap_fee_numerator / swap_fee_denominator — 合併的交易費。預設 25 / 10_000 = 0.25%
  • status — 位掩碼控制操作。可通過 AdminSetStatus 由管理員設定。
  • state_data.need_take_pnl_* — 累積總費用與已清掃費用之間的差值。TakePnl 將這些清零。

OpenBook 接線

已移除。 OpenBook / Serum 依賴已從程式中刪除(2026-07 升級)。本部分描述的帳戶不再被驗證或使用。它們作為 AmmInfo 上的參考欄位和舊版 v1 指令佈局上的位置佔位符保留。使用 V2 交換進入點SwapBaseInV2 / SwapBaseOutV2),它們完全跳過這些帳戶。
當你呼叫舊版 v1 SwapBaseIn / SwapBaseOutDepositWithdraw 指令時,帳戶 計數 必須仍然符合舊佈局(市場帳戶佔據其歷史位置),但它們的 內容不再被檢查 — 不會針對它們發出 CPI。新程式碼應使用 V2 交換變體,它們根本不接受這些帳戶。
AMM 的 amm_open_orders 是一個 OpenBook 擁有的帳戶,在此市場上持有池的限價訂單狀態:活躍訂單、已結算餘額、推薦人等。amm_target_orders 是 AMM 側:它持有 AMM 的 預期 網格(每個訂單槽的價格/大小),以便程式可以廉價地與當前發佈的內容進行比較,並放置/取消差值。

授權 PDA

整個 AMM v4 程式恰好有一個 amm_authority PDA。其種子很簡單(["amm authority"]),其 bump 存儲在每個 AmmInfo 上。此授權簽署所有 AMM v4 池的所有代幣移動。
有一個單獨的 池範圍 授權,每個池衍生一個,以簽署 OpenBook 操作(上面的 amm_authority 實際上在此程式的設計中涵蓋兩者;不同版本使用不同的衍生,所以在程式碼中檢查特定池的 AmmInfo.nonce)。

金庫

池的 SPL Token 金庫是標準代幣帳戶,其 owneramm_authority。不是 ATA — 它們的地址是在 Initialize 時衍生的特定 PDA,使用 ["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id] 種子。地址存儲在 AmmInfo 上;衍生是一次性的好奇心。 不支援 Token-2022。程式為所有金庫移動硬編碼 SPL Token 的程式 ID。嘗試將 AMM v4 池綁定到 Token-2022 鑄幣在 Initialize 時失敗。

LP 鑄幣

一個經典的 SPL Token 鑄幣,其授權是 amm_authority。總供應量追蹤 LP 對池的所有權;燃燒 LP 按比例從兩個金庫返回代幣。因為 AMM v4 早於 CPMM,池狀態中沒有 lp_supply 鏡像 — 直接讀取鑄幣的鏈上供應量。

狀態位掩碼

AmmInfo.status 控制操作。位(位置可能因程式版本而異 — 通過源確認): Raydium 多簽通過 SetParams(使用 param = Status)設定這些。(AdminCancelOrders 已被移除。)

觀察 / 預言機

AMM v4 沒有專用的觀察帳戶。 需要鏈上 TWAP 的其他協議通常間接消費 OpenBook 的簿交叉或讀取鏈下數據。如果你需要具有程式支援的 Raydium TWAP,請使用 CPMM 或 CLMM。

從頭衍生池的帳戶

因為 AMM v4 不是為確定性的每對 PDA 設計的(它早於該 Solana 慣例),規範的 amm_id 是一個 有種子的密鑰對,衍生方式如下:
相同的有種子密鑰模式適用於 amm_open_ordersamm_target_ordersamm_withdraw_queuepool_temp_lppool_coin_token_accountpool_pc_token_accountlp_mint。SDK 和 API 為你預先計算這些;請參閱 raydium-sdk-v2Liquidity.getAssociatedPoolKeys 實際上,整合者從 GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID> 或 SDK 讀取池的完整帳戶集。手動衍生很少需要。

生命週期快速參考

池及其帳戶無限期地持續。即使流動性完全提取,AmmInfo 仍然存在。

在哪裡讀取什麼

來源: