Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
AMM v4 因為每次操作都會涉及 OpenBook 狀態,所以帳戶數量比 CPMM 或 CLMM 多得多。本頁將帳戶分為「資金池擁有」和「OpenBook 擁有」兩個部分,讓整合者快速判斷各帳戶歸屬。
清單
AMM v4 資金池在建立時會綁定到一個 OpenBook 市場。完整的即時情況如下:| 類別 | 帳戶 | 擁有者 | 角色 |
|---|---|---|---|
| 資金池 | AmmInfo | AMM v4 程式 | 資金池狀態:已累積費用、狀態、對資金庫和 OpenBook 市場的引用。 |
| 資金池 | amm_authority | AMM v4 程式 | 由程式擁有的 PDA,簽署資金庫移動。在所有 AMM v4 資金池間共享。 |
| 資金池 | amm_open_orders | OpenBook | 資金池在此市場上的 OpenBook OpenOrders 帳戶。 |
| 資金池 | amm_target_orders | AMM v4 程式 | 資金池側的目標掛單網格,用於回發到 OpenBook。 |
| 資金池 | pool_coin_token_account | SPL Token | 資金池的幣側資金庫(amm_authority 的 ATA)。 |
| 資金池 | pool_pc_token_account | SPL Token | 資金池的 pc 側資金庫。 |
| 資金池 | lp_mint | SPL Token | 可互換的 LP 代幣。 |
| 資金池 | pool_withdraw_queue | AMM v4 程式 | 延遲提款的舊版佇列;保持零長度。 |
| 資金池 | pool_temp_lp | AMM v4 程式 | Initialize 期間使用的輔助 LP 帳戶。 |
| 市場 (OpenBook) | serum_market | OpenBook | 市場本身(基礎/報價代幣、資金庫簽署者等)。 |
| 市場 | serum_bids、serum_asks | OpenBook | 買單和賣單佇列。 |
| 市場 | serum_event_queue | OpenBook | 待處理事件(成交、取消)。 |
| 市場 | serum_coin_vault、serum_pc_vault | SPL Token | OpenBook 的市場級資金庫。 |
| 市場 | serum_vault_signer | OpenBook | 市場級 PDA,簽署 serum_*_vault 移動。 |
AmmInfo
資金池的根狀態帳戶。因為同時攜帶資金池和 OpenBook 引用,所以體積較大(約 752 字元)。
coin_vault、pc_vault— 資金池的 SPL Token 資金庫。根據 Serum/OpenBook 慣例,coin是token_0(基礎),pc是token_1(報價)。coin_decimals、pc_decimals— 與代幣相符。open_orders、target_orders、market— 必須傳遞給每個 swap/deposit/withdraw 指令。fees.swap_fee_numerator / swap_fee_denominator— 總交易費用。預設25 / 10_000 = 0.25%。status— 位元遮罩用於控制操作。透過AdminSetStatus由管理員設定。state_data.need_take_pnl_*— 累積總費用與已清掃費用間的差值。TakePnl將其清零。
OpenBook 連線
不再活躍。 AMM v4 資金池不再與 OpenBook 共享流動性 — 掛單網格已停用。本部分描述的 OpenBook 帳戶仍保留在每個資金池的
AmmInfo 上,並且由 V1 swap 進入點(以及 Initialize、Deposit、Withdraw)進行驗證以維持向後相容性,但它們引用的鏈上狀態實際上是空的。使用 V2 swap 進入點(SwapBaseInV2 / SwapBaseOutV2),這些完全不需要這些帳戶,代表今天的規範執行路徑。amm_open_orders 是由 OpenBook 擁有的帳戶,保存資金池在此市場上的掛單狀態:活躍訂單、已結算餘額、推薦人等。amm_target_orders 是 AMM 側:它保存 AMM 的意圖網格(每個訂單槽的價格/大小),所以程式可以廉價地與當前發布的進行比較,並放置/取消差異。
權限 PDA
整個 AMM v4 程式恰好有一個amm_authority PDA。其種子很簡單(["amm authority"]),其 bump 儲存在每個 AmmInfo 上。此權限為所有 AMM v4 資金池的所有代幣移動簽署。
amm_authority 實際上涵蓋兩者;不同版本使用不同的衍生方式,所以在代碼中檢查特定資金池的 AmmInfo.nonce)。
資金庫
資金池的 SPL Token 資金庫是標準代幣帳戶,其owner 是 amm_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 控制操作。位元(位置可能因程式版本而異 — 透過原始碼確認):
| 位 | 旗標 | 效果 |
|---|---|---|
| 0 | SWAP_DISABLED | Swap* 拒絕。 |
| 1 | DEPOSIT_DISABLED | Deposit 拒絕。 |
| 2 | WITHDRAW_DISABLED | Withdraw 拒絕。 |
| 3 | CLMM_LIKE_MIGRATE | 由運營使用的遷移控制旗標。 |
AdminCancelOrders、AdminSetParams 等設定這些。
觀察 / 預言機
AMM v4 沒有專用觀察帳戶。 需要鏈上 TWAP 的其他協議通常間接消費 OpenBook 的簿跨越或讀取鏈外資料。如果你需要具有程式支援的 Raydium TWAP,請使用 CPMM 或 CLMM。從頭衍生資金池的帳戶
因為 AMM v4 不是為確定性每對 PDA 設計的(它早於該 Solana 慣例),規範的amm_id 是使用以下方式衍生的帶種子的密鑰對:
amm_open_orders、amm_target_orders、amm_withdraw_queue、pool_temp_lp、pool_coin_token_account、pool_pc_token_account 和 lp_mint。SDK 和 API 為你預先計算這些;見 raydium-sdk-v2 的 Liquidity.getAssociatedPoolKeys。
實際上,整合者從 GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID> 或 SDK 讀取資金池的完整帳戶集合。手動衍生很少需要。
生命週期快速參考
| 事件 | 建立的帳戶 | 刪除的帳戶 |
|---|---|---|
Initialize2 | amm_info、amm_open_orders、amm_target_orders、資金庫、lp_mint、pool_withdraw_queue、pool_temp_lp | — |
Deposit | —(可能建立使用者 LP ATA) | — |
Withdraw | — | — |
SwapBaseIn / SwapBaseOut | —(可能建立使用者 ATA) | — |
TakePnl | — | — |
MonitorStep(crank) | — | — |
AmmInfo 也保留。
讀取資源
- 數學和費用算術:
products/amm-v4/math。 - 費用分配及其與 CPMM/CLMM 的比較:
products/amm-v4/fees。 - 指令帳戶列表:
products/amm-v4/instructions。 - OpenBook 帳戶衍生:OpenBook 程式文件(
github.com/openbook-dex/program)。
- Raydium AMM 程式 —
raydium-io/raydium-amm reference/program-addresses以取得規範程式 ID- OpenBook / Serum 協議以取得對方帳戶


