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

# Phí AMM v4

> Phí giao dịch 0,25%, sự phân chia giữa LP và giao thức, tạo lập PnL từ lượt fill OpenBook, và cách admin thu gom phí giao thức tích lũy.

<Info>
  **Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.**

  [Xem bản tiếng Anh →](/products/amm-v4/fees)
</Info>

## Tầng đơn duy nhất được công bố

Khác với CPMM và CLMM, AMM v4 **không có tài khoản `AmmConfig`**. Phí được lưu trữ trực tiếp trên struct `AmmInfo.fees` của mỗi pool và được cố định khi tạo pool. Giá trị mặc định áp dụng cho về cơ bản mọi pool AMM v4 đang hoạt động:

| Trường on-chain                                     | Mặc định      | Ý nghĩa                                                                                                                         |
| --------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `swap_fee_numerator / swap_fee_denominator`         | `25 / 10_000` | **Phí giao dịch gồm trên các swap theo đường AMM: 0,25% khối lượng input.**                                                     |
| `trade_fee_numerator / trade_fee_denominator`       | `25 / 10_000` | Được sử dụng bởi tích hợp OpenBook để tính giá lệnh giới hạn có bao gồm phí. Mặc định cũng là `0,25%` như `swap_fee`.           |
| `pnl_numerator / pnl_denominator`                   | `12 / 100`    | **Phần của giao thức trên phí swap: 12%** — tức là `0,25% × 12% = 0,03%` khối lượng. Tích lũy vào các bộ đếm `need_take_pnl_*`. |
| `min_separate_numerator / min_separate_denominator` | `5 / 10_000`  | Ngưỡng độ chính xác nội bộ được sử dụng bởi logic làm tròn phân chia phí.                                                       |

Lưu ý rằng `pnl_numerator / pnl_denominator` là một phân số **của phí swap**, chứ không phải khối lượng giao dịch — đây là một sự nhầm lẫn phổ biến. Phần của LP là phần bổ sung (`88%` của phí = `0,22%` khối lượng) và là ngầm định; không có numerator "phần LP" riêng biệt.

Một số pool sớm được tạo với các numerator khác nhau; luôn đọc `AmmInfo.fees` trước khi trích dẫn.

**Không có phí quỹ** và **không có phí tạo lập**: đây là phát minh của CPMM/CLMM không tồn tại trong mô hình phí gốc của AMM v4.

## Cách thực hiện phân chia

Trên mỗi swap, pool tính phí giao dịch gồm từ số tiền input, sau đó phân bổ:

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

* `lp_portion` được giữ lại trong vault và góp phần vào `k` tiếp theo. LP nắm bắt nó bằng cách đốt token LP sau này qua `Withdraw`.
* `pnl_portion` tăng `AmmInfo.state_data.need_take_pnl_coin` hoặc `need_take_pnl_pc` tùy thuộc vào input swap ở phía nào.

Sử dụng cùng một thủ thuật bảo toàn bất biến như CPMM: số tiền PnL vật lý nằm trong vault nhưng bị trừ từ các dự trữ được sử dụng trong đường cong, vì vậy `TakePnl` chuyển token mà không thay đổi giá.

## PnL từ OpenBook (lịch sử)

<Note>
  **Không còn tích lũy.** Tích hợp OpenBook đã bị vô hiệu hóa, vì vậy *luồng PnL thứ hai* được mô tả trong phần này không còn được tạo ra. Các bộ đếm `total_pnl_{coin,pc}` trên các pool hiện tại có thể mang những giá trị lịch sử, nhưng không có số tiền mới nào được thêm vào. Đường dẫn phí giao thức 0,03% (ở trên) không bị ảnh hưởng và vẫn hoạt động.
</Note>

Từ lâu, AMM v4 có một *luồng doanh thu giống phí thứ hai*: khi các lệnh giới hạn của nó trên OpenBook được thực hiện, pool có thể ở phía taker của lượt fill và kiếm hoặc trả spread maker/taker của thị trường. Các sự kiện PnL này được giải quyết vào các vault pool trong `MonitorStep` và chương trình đã ghi chúng vào `state_data.total_pnl_{coin,pc}` như các bộ đếm thông tin.

* Khi lưới được đăng ký của pool được hiệu chỉnh chính xác xung quanh giá đường cong, các lượt fill OpenBook có xu hướng **tích cực về phí** cho pool — AMM đang tạo thị trường trên OpenBook và kiếm được rebate maker.
* Khi OpenBook tạm dừng hoặc hàng đợi sự kiện đầy, pool có thể nằm trên các lệnh cũ được thực hiện với giá không thuận lợi, tạo ra PnL âm. Sự kết hợp hoạt động này là một trong những động lực thúc đẩy việc chuyển đi khỏi thiết kế hybrid.

PnL OpenBook này **không** giống như phí giao thức 0,03%. OpenBook PnL làm tăng trực tiếp dự trữ pool (mang lợi ích cho LP + giao thức theo tỷ lệ phân chia phí), trong khi phí giao thức 0,03% được gắn thẻ cụ thể cho quét admin. Với phía OpenBook tắt, tích lũy phí duy nhất ngày hôm nay là 0,25% trên các swap AMM và phân chia 22/3 của nó.

## Thu thập

Admin (multisig Raydium) gọi `WithdrawPnl` / `TakePnl` để quét `need_take_pnl_*` vào các tài khoản "chủ sở hữu PnL" cấp pool được cấu hình trên `AmmConfig` của chương trình (một config khác, có phạm vi chương trình — không phải `AmmConfig` kiểu CPMM theo từng pool). Quét:

1. Giải quyết bất kỳ lượt fill OpenBook nào đang chờ xử lý trước. *(Không hoạt động bây giờ khi OpenBook không hoạt động.)*
2. Chuyển `need_take_pnl_coin` / `need_take_pnl_pc` từ các vault pool đến đích PnL.
3. Đặt lại các bộ đếm về 0.

Thao tác này không chuyển đường cong. LP không nên thấy bất kỳ thay đổi giá nào trên một lệnh gọi `TakePnl`.

## Hoàn lại phí LP

Không có hướng dẫn "thu thập phí LP" chuyên dụng. Phí LP tích lũy trong các vault và làm tăng `k` theo thời gian; LP nhận chúng bằng cách đốt token LP qua `Withdraw`. Giá trị của một token LP tăng đơn điệu khi `(coin_reserve_effective, pc_reserve_effective)` tăng.

## Trực quan hóa: 1.000 USDC khối lượng đi đâu

Trên một swap nặng USDC với giá trị \$1.000 so với một pool có tham số mặc định:

```
Phí giao dịch gồm (0,25%):   $2.50
  Phần LP     (0,22%):       $2.20   → ở lại trong pool, tăng k
  Phần PnL    (0,03%):       $0.30   → need_take_pnl_pc, được quét bởi TakePnl
Còn lại gửi cho người dùng:  $997.50   (trừ tác động giá do đường cong)
```

So sánh với CPMM `AmmConfig[0]` (tầng 0,25%, không có phí tạo lập): LP nhận \$2.10, giao thức \$0.30, quỹ \$0.10. CPMM giới thiệu phí quỹ bằng cách cắt nó từ phần có thể là của LP trong tầng tương đương AMM v4.

## Bảng so sánh

|                    | AMM v4                           | CPMM `index=0`                                   | CLMM `index=2`                     |
| ------------------ | -------------------------------- | ------------------------------------------------ | ---------------------------------- |
| Phí giao dịch      | 0,25%                            | 0,25%                                            | 0,25%                              |
| LP                 | 0,22%                            | 0,21%                                            | Khác nhau theo phát hành           |
| Giao thức          | 0,03%                            | 0,03%                                            | Theo tầng                          |
| Quỹ                | N/A                              | 0,01%                                            | Theo tầng                          |
| Tạo lập (tùy chọn) | N/A                              | 0 mặc định                                       | N/A                                |
| Phí nằm ở đâu      | Pool vault + need\_take\_pnl\_\* | Pool vault + protocol\_fees\_\* + fund\_fees\_\* | Toàn cục + theo tick + theo vị trí |

Ma trận đầy đủ trong [`reference/fee-comparison`](/vi/reference/fee-comparison).

## Ghi chú cho người tích hợp

* **Báo giá.** Lấy `AmmInfo` qua SDK hoặc `api-v3.raydium.io/pools/info/ids`. **Không** tính toán báo giá của riêng bạn so với số dư vault thô — các số tiền ký quỹ OpenBook và loại trừ PnL đều kéo dự trữ có hiệu lực khỏi những gì `getTokenAccountBalance` hiển thị.
* **Tham số phí cũ.** Về nguyên tắc `SetParams` có thể thay đổi `swap_fee_numerator`, nhưng trong thực tế multisig Raydium chưa bao giờ thay đổi mặc định cho bất kỳ pool hoạt động nào. Tuy nhiên, luôn đọc từ trạng thái on-chain thay vì mã hóa cứng.
* **Không có phần thưởng.** AMM v4 không hỗ trợ phát hành phần thưởng trên pool. Các nông trại hệ sinh thái cũ (Farm v3 / v5 / v6) là tương đương của lớp staking — xem [`products/farm-staking`](/vi/products/farm-staking).

## Bước tiếp theo

* [`products/amm-v4/math`](/vi/products/amm-v4/math) — sự dẫn xuất phí giao dịch bên trong đường cong.
* [`products/amm-v4/instructions`](/vi/products/amm-v4/instructions) — danh sách tài khoản `WithdrawPnl` / `SetParams`.
* [`reference/fee-comparison`](/vi/reference/fee-comparison) — ma trận so sánh cạnh nhau.

Nguồn:

* [Chương trình Raydium AMM — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* Các trường numerator/denominator phí AMM v4 on-chain (được xác minh so với các tài khoản `AmmInfo` chính thức).
