> ## 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`를 읽으세요.

**펀드 수수료**와 **크리에이터 수수료** 항목은 없습니다. 이들은 AMM v4의 원래 수수료 모델에 존재하지 않았던 CPMM/CLMM의 발명품입니다.

## 분배 계산 방식

각 스왑에서 풀은 입력량에서 총 거래 수수료를 청구한 후 다음과 같이 배분합니다:

```
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. 풀 볼트에서 PnL 대상으로 `need_take_pnl_coin` / `need_take_pnl_pc`를 전송합니다.
2. 카운터를 0으로 설정합니다.

더 이상 OpenBook 정산 단계가 없습니다. 볼트 잔액이 누적된 PnL을 충당하기에 부족하면 명령어는 이제 `TakePnlError`를 직접 반환합니다. 이 작업은 곡선을 이동시키지 않습니다 — LP는 `WithdrawPnl` 호출 전후에 가격 변화를 보지 않아야 합니다. `WithdrawPnl` 계정 레이아웃은 2026-07 업그레이드에서 변경되었습니다 ([지시사항](/ko/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\_\* | 글로벌 + 틱별 + 포지션별 |

[`reference/fee-comparison`](/ko/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`](/ko/products/farm-staking) 참조.

## 다음으로 갈 곳

* [`products/amm-v4/math`](/ko/products/amm-v4/math) — 곡선 내 거래 수수료 유도.
* [`products/amm-v4/instructions`](/ko/products/amm-v4/instructions) — `WithdrawPnl` / `SetParams` 계정 목록.
* [`reference/fee-comparison`](/ko/reference/fee-comparison) — 나란히 비교 매트릭스.

출처:

* [Raydium AMM 프로그램 — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* 온체인 AMM v4 수수료 분자/분모 필드 (메인넷 `AmmInfo` 계정에 대해 검증됨).
