> ## 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.

# AMM v4 費用

> 0.25% 交易費用、其 LP / 協議分配、OpenBook 成交的 PnL 生成，以及管理員如何清掃累積的協議費用。

<Info>
  **本頁內容由 AI 自動翻譯，所有內容以英文版本為準。**

  [查看英文版 →](/products/amm-v4/fees)
</Info>

## 唯一發佈的層級

與 CPMM 和 CLMM 不同，AMM v4 **沒有 `AmmConfig` 帳戶**。費用直接儲存在每個池的 `AmmInfo.fees` 結構中，並在池建立時固定。涵蓋基本上所有現有 AMM v4 池的預設值：

| 鏈上欄位                                                | 預設值           | 含義                                                                          |
| --------------------------------------------------- | ------------- | --------------------------------------------------------------------------- |
| `swap_fee_numerator / swap_fee_denominator`         | `25 / 10_000` | **AMM 路徑交換的總交易費用：輸入量的 0.25%。**                                              |
| `trade_fee_numerator / trade_fee_denominator`       | `25 / 10_000` | OpenBook 移除後的遺留項目（歷史上用於限價單定價）。預設與 `swap_fee` 相同，為 `0.25%`。                  |
| `pnl_numerator / pnl_denominator`                   | `12 / 100`    | **協議的交易費用份額：12%** — 即 `0.25% × 12% = 0.03%` 的交易量。累積到 `need_take_pnl_*` 計數器。 |
| `min_separate_numerator / min_separate_denominator` | `5 / 10_000`  | 費用分配四捨五入邏輯使用的內部精度下限。                                                        |

請注意，`pnl_numerator / pnl_denominator` 是交易費用的分數，**而非交易量的分數** — 這是常見的誤讀。LP 份額是補集（費用的 `88%` = 交易量的 `0.22%`），是隱含的；沒有單獨的「LP 份額」分子。

少數早期池以不同的分子建立；引用前務必閱讀 `AmmInfo.fees`。

**沒有基金費用**和**沒有創建者費用**行：這些是 CPMM/CLMM 的發明，在 AMM v4 的原始費用模型中不存在。

## 分配如何計算

在每次交換時，池從輸入金額中收取總交易費用，然後分配：

```
gross_fee   = ceil(amount_in * swap_fee_numerator / swap_fee_denominator)        // amount_in 的 0.25%
pnl_portion = gross_fee * pnl_numerator / pnl_denominator                        // gross_fee 的 12%
lp_portion  = gross_fee − pnl_portion                                            // gross_fee 的 88%
```

* `lp_portion` 留在金庫中，並對下一個 `k` 有所貢獻。LP 稍後通過贖回 LP 代幣來獲取它。
* `pnl_portion` 增加 `AmmInfo.state_data.need_take_pnl_coin` 或 `need_take_pnl_pc`，取決於交換輸入是哪一側。

與 CPMM 相同的不變量保護技巧：PnL 金額物理上位於金庫中，但從曲線中使用的準備金中減去，因此 `TakePnl` 移動代幣而不改變價格。

## OpenBook 的 PnL（歷史）

<Note>
  **已移除。** OpenBook 整合已從程序中移除，因此本節描述的*第二個* PnL 流不再生成。`total_pnl_{coin,pc}` 計數器現在是已棄用的欄位 — 它們保持凍結的歷史值，永遠不會更新。0.03% 協議費用路徑（上方）不受影響，仍然活躍。
</Note>

歷史上，AMM v4 有*第二個*類似費用的收入流：當其在 OpenBook 上的限價單成交時，池可能是成交的接受方，並賺取或支付市場的做市商/接受方價差。這些 PnL 事件在 `MonitorStep` 期間結算到池金庫中，程序將其記入 `state_data.total_pnl_{coin,pc}` 作為信息計數器。

* 當池的發佈網格在曲線價格周圍正確校準時，OpenBook 成交往往對池**費用為正** — AMM 實際上在 OpenBook 上做市並賺取做市商回扣。
* 當 OpenBook 暫停或事件隊列填滿時，池可能會持有以不利價格成交的過時訂單，產生負 PnL。這種操作耦合是遠離混合設計的動機之一。

這個 OpenBook PnL **不同於** 0.03% 協議費用。OpenBook PnL 直接增加池準備金（按費用分配比例使 LP 和協議受益），而 0.03% 協議費用特別標記為管理員清掃。隨著 OpenBook 方面的關閉，今天唯一的費用累積是 AMM 交換上的 0.25% 及其 22/3 分配。

## 收集

管理員（Raydium 多簽）呼叫 `WithdrawPnl` 將 `need_take_pnl_*` 清掃到在程序的 `AmmConfig` 上配置的池級「PnL 所有者」帳戶（一個不同的、程序範圍的配置 — 不是每個池的 CPMM 風格 AmmConfig）。清掃：

1. 從池金庫將 `need_take_pnl_coin` / `need_take_pnl_pc` 轉移到 PnL 目的地。
2. 將計數器歸零。

不再有 OpenBook 結算步驟。如果金庫餘額不足以覆蓋累積的 PnL，指令現在直接返回 `TakePnlError`。該操作不移動曲線 — LP 在 `WithdrawPnl` 呼叫中不應看到任何價格變化。請注意 `WithdrawPnl` 帳戶佈局在 2026-07 升級中有所改變（見[指令](/zh-Hant/products/amm-v4/instructions#withdrawpnl-takepnl)）。

## LP 費用贖回

沒有專用的「收集 LP 費用」指令。LP 費用在金庫中累積並隨著時間推移增加 `k`；LP 通過 `Withdraw` 燒毀 LP 代幣來實現它們。LP 代幣的價值隨著 `(coin_reserve_effective, pc_reserve_effective)` 增長而單調增長。

## 視覺化：1,000 USDC 交易量的去向

在針對預設參數池的 1,000 美元 USDC 重交換上：

```
總交易費用 (0.25%):   $2.50
  LP 份額   (0.22%):       $2.20   → 留在池中，提高 k
  PnL 份額  (0.03%):       $0.30   → need_take_pnl_pc，由 TakePnl 清掃
發送給使用者的餘額：   $997.50   (減去曲線驅動的價格影響)
```

與 CPMM `AmmConfig[0]`（0.25% 層級，無創建者費用）比較：LP 獲得 \$2.10，協議 \$0.30，基金 \$0.10。CPMM 通過從 AMM v4 等效層級中 LP 本應獲得的部分中切割出來引入基金行。

## 比較表

|         | AMM v4                    | CPMM `index=0`                            | CLMM `index=2`    |
| ------- | ------------------------- | ----------------------------------------- | ----------------- |
| 交易費用    | 0.25%                     | 0.25%                                     | 0.25%             |
| LP      | 0.22%                     | 0.21%                                     | 按排放量變化            |
| 協議      | 0.03%                     | 0.03%                                     | 按層級               |
| 基金      | N/A                       | 0.01%                                     | 按層級               |
| 創建者（可選） | N/A                       | 預設為 0                                     | N/A               |
| 費用位置    | 池金庫 + need\_take\_pnl\_\* | 池金庫 + protocol\_fees\_\* + fund\_fees\_\* | 全局 + 按 tick + 按頭寸 |

完整矩陣在 [`reference/fee-comparison`](/zh-Hant/reference/fee-comparison)。

## 整合商注意事項

* **報價。** 通過 SDK 或 `api-v3.raydium.io/pools/info/ids` 獲取 `AmmInfo`。準備金現在僅限於金庫，因此你可以直接針對金庫餘額進行報價 — 只需記住減去 `need_take_pnl_*`（累積的 PnL 保存在金庫中但從曲線中排除）。
* **過時的費用參數。** 原則上 `SetParams` 可以改變 `swap_fee_numerator`，但實際上 Raydium 多簽尚未為任何現有池改變預設值。儘管如此，始終從鏈上狀態讀取而不是硬編碼。
* **無獎勵。** AMM v4 不支持池上獎勵排放。遺留生態系統農場（Farm v3 / v5 / v6）是質押層等效物 — 見 [`products/farm-staking`](/zh-Hant/products/farm-staking)。

## 接下來去哪裡

* [`products/amm-v4/math`](/zh-Hant/products/amm-v4/math) — 曲線內的交易費用推導。
* [`products/amm-v4/instructions`](/zh-Hant/products/amm-v4/instructions) — `WithdrawPnl` / `SetParams` 帳戶列表。
* [`reference/fee-comparison`](/zh-Hant/reference/fee-comparison) — 並排矩陣。

來源：

* [Raydium AMM 程序 — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* 鏈上 AMM v4 費用分子/分母欄位（針對主網 `AmmInfo` 帳戶驗證）。
