> ## 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%와 그 분배입니다.

## 회수

관리자(Raydium 멀티시그)는 `WithdrawPnl` / `TakePnl`을 호출하여 `need_take_pnl_*`을 프로그램의 `AmmConfig`에 구성된 풀 수준 "PnL 소유자" 계정으로 회수합니다 (다른 프로그램 범위 구성 — 풀당 CPMM 스타일 AmmConfig가 아님). 회수 작업:

1. 먼저 보류 중인 OpenBook 체결을 정산합니다. *(OpenBook이 비활성 상태이므로 이제는 작동하지 않습니다.)*
2. `need_take_pnl_coin` / `need_take_pnl_pc`을 풀 볼트에서 PnL 대상으로 전송합니다.
3. 카운터를 0으로 설정합니다.

이 작업은 곡선을 이동하지 않습니다. LP는 `TakePnl` 호출 전후에 가격 변화를 보지 않아야 합니다.

## LP 수수료 조회

"LP 수수료 수집" 전용 명령어가 없습니다. LP 수수료는 볼트에 누적되고 시간 경과에 따라 `k`를 인상합니다. LP는 `Withdraw`를 통해 LP 토큰을 태워서 이를 실현합니다. LP 토큰의 가치는 `(coin_reserve_effective, pc_reserve_effective)`이 증가함에 따라 단조증가합니다.

## 시각화: 1,000 USDC 거래량의 흐름

기본 파라미터 풀에 대한 USDC 중심 스왑 \$1,000의 경우:

```
총 거래 수수료 (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`를 가져오세요. 원본 볼트 잔액에 대해 직접 견적을 계산하지 **마세요** — OpenBook 에스크로우 금액과 PnL 제외 모두 유효 예비금을 `getTokenAccountBalance`가 보여주는 것에서 벗어나게 합니다.
* **오래된 수수료 파라미터.** 원칙적으로 `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` 계정에 대해 검증됨).
