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

# CLMM 개요

> Raydium의 CLMM이 무엇인지, 집중화된 유동성이 상수곱 풀과 어떻게 다른지, 그리고 CPMM 또는 AMM v4보다 CLMM을 선택해야 하는 경우를 설명합니다.

<Info>
  **이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.**

  [영문판 보기 →](/products/clmm/overview)
</Info>

## 한 문단 요약

CLMM — **C**oncentrated **L**iquidity **M**arket **M**aker — 은 Raydium의 Uniswap-v3 스타일 AMM입니다. 유동성 공급자의 예치금을 전체 가격 곡선에 분산하는 대신, CLMM을 사용하면 LP가 **특정 가격 범위**에 예치할 수 있습니다. 해당 범위 내에서 각 달러의 예치금은 CPMM 풀의 경우보다 수배 이상 더 생산적입니다. 범위 외에서는 예치금이 수익을 창출하지 않으며 일방적인 잔액으로 남아있습니다. 프로토콜은 **틱**(이산화된 가격 버킷) 당 유동성을 추적하고, 가격 제곱근을 Q64.64 고정소수점 수로 인코딩한 값(`sqrt_price_x64`)으로 풀 상태를 가격 책정하며, 대체 가능한 LP 토큰 대신 각 LP 포지션마다 **NFT**를 발행합니다.

## 새로운 기능

최신 CLMM 릴리스는 Uniswap-v3 스타일의 핵심 위에 세 가지 기능을 추가했습니다. 이들은 풀 생성 시점에 선택적이며 기존 풀 및 포지션과 역호환됩니다:

* **제한 주문(Limit orders).** LP는 특정 가격에서 단일 틱 주문을 예약할 수 있으며, 스왑이 해당 틱을 통과할 때 스왑 경로가 FIFO 순서대로 이를 체결합니다. 주문은 제한 가격으로 소유자의 ATA에 정산되며, 오프체인 키퍼(`limit_order_admin`)가 소유자가 온라인 상태가 아닌 동안에도 체결된 주문을 수집할 수 있습니다. [Instructions → OpenLimitOrder / SettleLimitOrder](/ko/products/clmm/instructions) 및 [Math → Limit-order matching during swap](/ko/products/clmm/math)를 참조하세요.
* **일방적 수수료(`CollectFeeOn`).** 풀은 입력 측에서 스왑 수수료를 가져오도록(레거시 동작, 모드 `0`), 또는 항상 `token_0`(`1`)에서, 또는 항상 `token_1`(`2`)에서 가져오도록 구성할 수 있습니다. 페어의 한쪽이 정규 회계 토큰(예: USDC)일 때 유용합니다. [Fees → Single-sided fee](/ko/products/clmm/fees)를 참조하세요.
* **동적 수수료(Dynamic fee).** 풀은 급격한 틱 변동으로 올라가고 시간이 지나면서 감소하는 변동성 추적 수수료 할증료를 선택할 수 있습니다. 티어별 `DynamicFeeConfig`와 풀별 `DynamicFeeInfo`로 조정됩니다. [Fees → Dynamic fee](/ko/products/clmm/fees) 및 [Math → Dynamic fee derivation](/ko/products/clmm/math)를 참조하세요.

새로운 명령어 `CreateCustomizablePool`은 풀 생성 시간에 세 가지 옵션을 모두 노출합니다. 클래식 `CreatePool`은 제한 주문이나 동적 수수료 없는 기본 수수료 풀에서 계속 작동합니다.

## CLMM이 제공하는 것

* **자본 효율성.** 같음 수준 부근의 ±0.1% 대역에 유동성을 집중하는 스테이블코인-스테이블코인 LP는 같은 페어의 CPMM 풀 대비 TVL당 달러당 수수료의 100배 이상을 벌 수 있습니다.
* **포지션 수준의 수수료 회계.** 수수료는 LP 민트별이 아니라 포지션별로 발생합니다. 같은 풀의 두 포지션은 범위와 가격이 이동한 경로에 따라 서로 다른 수수료 금액을 벌게 됩니다.
* **페어당 여러 수수료 티어.** 페어는 각각 자체 거래 수수료 비율과 틱 간격이 있는 다른 `AmmConfig`에 바인딩된 여러 CLMM 풀을 가질 수 있습니다. 웹 UI와 라우터는 현재 가격에서 가장 많은 유동성을 가진 티어를 표시합니다.
* **풀에서 직접 인센티브화 가능.** 최대 3개의 보상 토큰 스트림을 풀에 첨부할 수 있으며, 포지션은 그들이 기여하는 범위 내 초 × 유동성에 따라 비례적으로 보상을 수집합니다. [`products/clmm/fees`](/ko/products/clmm/fees)를 참조하세요.
* **NFT 포지션.** 각 포지션은 결정론적 PDA와 같은 민트를 가진 대체 불가능 토큰입니다. NFT를 이전하면 포지션이 이전됩니다. 지갑과 UI는 포지션을 수집품과 같은 방식으로 표시할 수 있습니다.
* **Token-2022 지원** - 페어의 양쪽에서 CPMM과 동일한 확장 제한 사항을 포함합니다.

## CLMM은 무엇이 아닌가

* **설정 후 방치하는 방식이 아닙니다.** SOL이 \$160일 때 설정한 범위는 SOL이 \$80으로 이동할 경우 적극적으로 조정하지 않으면 수익을 창출하지 않습니다. CLMM은 활동적인 LP에게 보상합니다. 수동적인 LP는 CPMM을 사용해야 합니다.
* **개설에 비용이 없는 것은 아닙니다.** 포지션이 통과하는 각 새 틱 배열을 초기화해야 하며 렌트가 발생합니다. 넓은 범위가 더 저렴하고, 좁은 범위는 그렇지 않습니다.
* **CLOB이 아닙니다.** AMM v4와 달리 CLMM은 OpenBook 의존성이 없습니다. 모든 유동성은 틱 맵에 있습니다.
* **CPMM의 상위 집합이 아닙니다.** 최대 범위에서 `[tick_min, tick_max]`에 걸친 CLMM 포지션은 CPMM과 *비슷*하게 동작하지만, 다른 가스 비용, 다른 수수료 회계 모델, 대체 가능한 LP 토큰이 없습니다. 단순한 대체 가능한 LP 풀을 원하면 CPMM을 사용하세요.

## CLMM이 CPMM 및 AMM v4와 다른 점

| 차원         | AMM v4       | CPMM                         | CLMM                 |
| ---------- | ------------ | ---------------------------- | -------------------- |
| 곡선         | 상수곱          | 상수곱                          | 집중화됨(틱 기반)           |
| LP 지분      | 대체 가능한 LP 민트 | 대체 가능한 LP 민트                 | 포지션별 NFT             |
| 유동성 위치     | 모든 가격        | 모든 가격                        | 사용자 선택 범위            |
| 수수료 티어     | 고정 0.25%     | 당 `AmmConfig` (예: 0.25%, 1%) | 당 `AmmConfig` × 틱 간격 |
| 능동적 관리     | 해당 없음        | 해당 없음                        | **필수**               |
| 수수료 회계     | 풀 수준         | 풀 수준                         | 포지션별                 |
| 보상 팜       | 별도 Farm 프로그램 | 별도 Farm 프로그램                 | 내장(최대 3개 보상)         |
| Token-2022 | 아니오          | 예                            | 예                    |
| 온체인 오라클    | 아니오          | `observation` 링              | `observation` 풀별 배열  |

## 정신 모델

CLMM 풀을 3개의 겹친 데이터 구조로 생각하세요:

1. **`sqrt_price` 공간의 연속 곡선.** 풀의 가격은 Q64.64 고정소수점인 `sqrt_price_x64`로 표현됩니다. 스왑은 이 곡선을 따라 이동하며, 틱 경계 내에서 수학은 표준 집중화된 유동성 AMM 수학입니다([`algorithms/clmm-math`](/ko/algorithms/clmm-math) 참조).
2. **이산 틱 맵.** 가격은 틱(정수 거듭제곱 `1.0001`)으로 양자화됩니다. 각 틱은 알려진 `sqrt_price`를 가집니다. 포지션은 끝점을 정수 틱 인덱스로 참조합니다. 틱 인덱스는 저장소를 위해 고정 크기의 **틱 배열**로 그룹화됩니다.
3. **포지션별 수수료 및 보상 부기.** 각 포지션은 마지막 업데이트 시점의 글로벌 `fee_growth_inside`를 저장합니다. LP가 포지션을 건드릴 때(개설, 종료, 조정, 수집), 프로그램은 저장된 값을 현재 글로벌에서 빼서 어떤 금액이 지불되어야 하는지 계산합니다. 이는 Uniswap-v3 `feeGrowthInside0X128 / feeGrowthInside1X128` 패턴입니다.

모든 사용자 작업은 이 3개 구조에서의 상태 전환으로 분해됩니다:

* **포지션 개설:** 틱 범위 선택, 토큰 예치, NFT 민트, 범위 내 틱 맵에 유동성 삽입, 이전에 비어있던 틱 배열 초기화.
* **유동성 증가/감소:** NFT의 연결된 포지션 계정과 틱 맵에 저장된 금액 조정, 동시에 누적된 수수료 수집.
* **스왑:** 현재 `sqrt_price_x64`에서 거래 방향으로 이동하여, 입력이 소진되거나 다음 초기화된 틱에 도달할 때까지 활성 유동성을 소비; 틱을 교차하고 새로운 쪽에서 유동성을 가져오거나 버림.
* **수수료/보상 수집:** 각 측면과 각 보상 스트림에 대해 `fee_growth_inside_now − fee_growth_inside_last` × `position_liquidity`를 계산; 이전.

풀은 그 외에는 어떤 포지션이 열려있는지에 무관합니다. 같은 범위의 두 LP는 개별 `liquidity` 금액으로 축척된 동일한 수수료 증가 경로를 봅니다.

## CLMM을 선택할 때

다음의 경우 CLMM을 선택하세요:

* **안정적이거나 평균 회귀하는 페어**(USDC/USDT, jitoSOL/SOL, wBTC/BTC)에 유동성을 공급하고 같음 수준 부근에 집중하려고 합니다.
* **마켓 메이커**로서 가격을 모니터링하고 리밸런싱하려고 합니다.
* 특히 별도 팜을 구축하지 않고 **풀별 인센티브 배출**이 필요합니다.
* **포지션별 회계**가 필요합니다(자체 LP 상품, 볼트, 구조화 상품 등).

다음의 경우 [CPMM](/ko/products/cpmm)을 선호합니다:

* 알려지지 않은 가격 발견으로 새 토큰을 출시하려고 합니다.
* 스테이킹, 잠금 또는 다른 것과 구성할 수 있는 단일 대체 가능한 LP 토큰을 원합니다.
* 수동적인 LP 경험을 원합니다.

다음의 경우 [AMM v4](/ko/products/amm-v4)를 선호합니다:

* 특히 AMM v4가 OpenBook에 배치하는 하이브리드 CLOB 깊이가 필요합니다.
* 기존 AMM v4 통합을 마이그레이션 중이며 새 포지션을 열지 않습니다.

## 포지션은 NFT입니다

CLMM 포지션은 온체인에서 두 개의 계정으로 표현됩니다:

* **포지션 NFT 민트** - 공급량 1.
* **개인 포지션 상태** 계정 - NFT 민트에 키가 지정되며 포지션의 틱, 유동성 및 마지막 관찰된 수수료 증가 값을 보유합니다.

NFT를 이전하면 포지션이 이전됩니다 — 개인 포지션 계정의 권한은 NFT 소유자입니다. 이는 Uniswap v3가 선구한 것과 동일한 패턴으로, Solana의 계정 모델에서 구현됩니다. 자세한 내용은 [`products/clmm/ticks-and-positions`](/ko/products/clmm/ticks-and-positions)를 참조하세요.

<Note>
  이전 CLMM 릴리스도 해당 범위에 대한 유동성을 집계하기 위해 `(pool, tick_lower, tick_upper)`당 `ProtocolPositionState` 계정을 생성했습니다. **최신 릴리스는 더 이상 생성하거나 사용하지 않습니다** — 이 필드는 여전히 `OpenPosition` / `IncreaseLiquidity` / `DecreaseLiquidity` 계정 목록에 ABI 호환성을 위한 `UncheckedAccount`로 나타나지만 프로그램은 이를 읽거나 쓰지 않습니다. 범위별 집계 부기는 틱 끝점(`liquidity_gross`, `liquidity_net`)에 직접 있습니다.
</Note>

## 다음으로 갈 곳

* [Accounts](/ko/products/clmm/accounts) — 풀, 구성, 틱 배열 및 포지션 계정 레이아웃.
* [Ticks and positions](/ko/products/clmm/ticks-and-positions) — 틱 맵, 틱 간격, 틱 배열 크기, NFT 기반 포지션.
* [Math](/ko/products/clmm/math) — `sqrt_price_x64`, 스왑 단계별, `fee_growth_inside` 유도.
* [Instructions](/ko/products/clmm/instructions) — `OpenPosition`, `IncreaseLiquidity`, `Swap`, `CollectRewards`, 제한 주문 계열, 및 `CreateCustomizablePool`.
* [Fees and rewards](/ko/products/clmm/fees) — 포지션별 수수료 모델, 일방적 수수료 모드, 동적 수수료, 및 3개 보상 슬롯.
* [Code demos](/ko/products/clmm/code-demos) — TypeScript에서 개설 / 조정 / 스왑 / 수집 / 제한 주문 / 사용자 지정 풀 연습.

출처:

* [Raydium CLMM source — `raydium-io/raydium-clmm`](https://github.com/raydium-io/raydium-clmm)
* CLMM이 직접 상속하는 수학에 대한 Uniswap v3 화이트페이퍼("Uniswap v3 Core")
* [`reference/program-addresses`](/ko/reference/program-addresses) - 정규 프로그램 ID
