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.
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
한 문단 요약
CLMM — Concentrated Liquidity Market Maker — 은 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 및 Math → Limit-order matching during swap를 참조하세요. - 일방적 수수료(
CollectFeeOn). 풀은 입력 측에서 스왑 수수료를 가져오도록(레거시 동작, 모드0), 또는 항상token_0(1)에서, 또는 항상token_1(2)에서 가져오도록 구성할 수 있습니다. 페어의 한쪽이 정규 회계 토큰(예: USDC)일 때 유용합니다. Fees → Single-sided fee를 참조하세요. - 동적 수수료(Dynamic fee). 풀은 급격한 틱 변동으로 올라가고 시간이 지나면서 감소하는 변동성 추적 수수료 할증료를 선택할 수 있습니다. 티어별
DynamicFeeConfig와 풀별DynamicFeeInfo로 조정됩니다. Fees → Dynamic fee 및 Math → Dynamic fee derivation를 참조하세요.
CreateCustomizablePool은 풀 생성 시간에 세 가지 옵션을 모두 노출합니다. 클래식 CreatePool은 제한 주문이나 동적 수수료 없는 기본 수수료 풀에서 계속 작동합니다.
CLMM이 제공하는 것
- 자본 효율성. 같음 수준 부근의 ±0.1% 대역에 유동성을 집중하는 스테이블코인-스테이블코인 LP는 같은 페어의 CPMM 풀 대비 TVL당 달러당 수수료의 100배 이상을 벌 수 있습니다.
- 포지션 수준의 수수료 회계. 수수료는 LP 민트별이 아니라 포지션별로 발생합니다. 같은 풀의 두 포지션은 범위와 가격이 이동한 경로에 따라 서로 다른 수수료 금액을 벌게 됩니다.
- 페어당 여러 수수료 티어. 페어는 각각 자체 거래 수수료 비율과 틱 간격이 있는 다른
AmmConfig에 바인딩된 여러 CLMM 풀을 가질 수 있습니다. 웹 UI와 라우터는 현재 가격에서 가장 많은 유동성을 가진 티어를 표시합니다. - 풀에서 직접 인센티브화 가능. 최대 3개의 보상 토큰 스트림을 풀에 첨부할 수 있으며, 포지션은 그들이 기여하는 범위 내 초 × 유동성에 따라 비례적으로 보상을 수집합니다.
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개의 겹친 데이터 구조로 생각하세요:sqrt_price공간의 연속 곡선. 풀의 가격은 Q64.64 고정소수점인sqrt_price_x64로 표현됩니다. 스왑은 이 곡선을 따라 이동하며, 틱 경계 내에서 수학은 표준 집중화된 유동성 AMM 수학입니다(algorithms/clmm-math참조).- 이산 틱 맵. 가격은 틱(정수 거듭제곱
1.0001)으로 양자화됩니다. 각 틱은 알려진sqrt_price를 가집니다. 포지션은 끝점을 정수 틱 인덱스로 참조합니다. 틱 인덱스는 저장소를 위해 고정 크기의 틱 배열로 그룹화됩니다. - 포지션별 수수료 및 보상 부기. 각 포지션은 마지막 업데이트 시점의 글로벌
fee_growth_inside를 저장합니다. LP가 포지션을 건드릴 때(개설, 종료, 조정, 수집), 프로그램은 저장된 값을 현재 글로벌에서 빼서 어떤 금액이 지불되어야 하는지 계산합니다. 이는 Uniswap-v3feeGrowthInside0X128 / feeGrowthInside1X128패턴입니다.
- 포지션 개설: 틱 범위 선택, 토큰 예치, NFT 민트, 범위 내 틱 맵에 유동성 삽입, 이전에 비어있던 틱 배열 초기화.
- 유동성 증가/감소: NFT의 연결된 포지션 계정과 틱 맵에 저장된 금액 조정, 동시에 누적된 수수료 수집.
- 스왑: 현재
sqrt_price_x64에서 거래 방향으로 이동하여, 입력이 소진되거나 다음 초기화된 틱에 도달할 때까지 활성 유동성을 소비; 틱을 교차하고 새로운 쪽에서 유동성을 가져오거나 버림. - 수수료/보상 수집: 각 측면과 각 보상 스트림에 대해
fee_growth_inside_now − fee_growth_inside_last×position_liquidity를 계산; 이전.
liquidity 금액으로 축척된 동일한 수수료 증가 경로를 봅니다.
CLMM을 선택할 때
다음의 경우 CLMM을 선택하세요:- 안정적이거나 평균 회귀하는 페어(USDC/USDT, jitoSOL/SOL, wBTC/BTC)에 유동성을 공급하고 같음 수준 부근에 집중하려고 합니다.
- 마켓 메이커로서 가격을 모니터링하고 리밸런싱하려고 합니다.
- 특히 별도 팜을 구축하지 않고 풀별 인센티브 배출이 필요합니다.
- 포지션별 회계가 필요합니다(자체 LP 상품, 볼트, 구조화 상품 등).
- 알려지지 않은 가격 발견으로 새 토큰을 출시하려고 합니다.
- 스테이킹, 잠금 또는 다른 것과 구성할 수 있는 단일 대체 가능한 LP 토큰을 원합니다.
- 수동적인 LP 경험을 원합니다.
- 특히 AMM v4가 OpenBook에 배치하는 하이브리드 CLOB 깊이가 필요합니다.
- 기존 AMM v4 통합을 마이그레이션 중이며 새 포지션을 열지 않습니다.
포지션은 NFT입니다
CLMM 포지션은 온체인에서 두 개의 계정으로 표현됩니다:- 포지션 NFT 민트 - 공급량 1.
- 개인 포지션 상태 계정 - NFT 민트에 키가 지정되며 포지션의 틱, 유동성 및 마지막 관찰된 수수료 증가 값을 보유합니다.
products/clmm/ticks-and-positions를 참조하세요.
이전 CLMM 릴리스도 해당 범위에 대한 유동성을 집계하기 위해
(pool, tick_lower, tick_upper)당 ProtocolPositionState 계정을 생성했습니다. 최신 릴리스는 더 이상 생성하거나 사용하지 않습니다 — 이 필드는 여전히 OpenPosition / IncreaseLiquidity / DecreaseLiquidity 계정 목록에 ABI 호환성을 위한 UncheckedAccount로 나타나지만 프로그램은 이를 읽거나 쓰지 않습니다. 범위별 집계 부기는 틱 끝점(liquidity_gross, liquidity_net)에 직접 있습니다.다음으로 갈 곳
- Accounts — 풀, 구성, 틱 배열 및 포지션 계정 레이아웃.
- Ticks and positions — 틱 맵, 틱 간격, 틱 배열 크기, NFT 기반 포지션.
- Math —
sqrt_price_x64, 스왑 단계별,fee_growth_inside유도. - Instructions —
OpenPosition,IncreaseLiquidity,Swap,CollectRewards, 제한 주문 계열, 및CreateCustomizablePool. - Fees and rewards — 포지션별 수수료 모델, 일방적 수수료 모드, 동적 수수료, 및 3개 보상 슬롯.
- Code demos — TypeScript에서 개설 / 조정 / 스왑 / 수집 / 제한 주문 / 사용자 지정 풀 연습.
- Raydium CLMM source —
raydium-io/raydium-clmm - CLMM이 직접 상속하는 수학에 대한 Uniswap v3 화이트페이퍼(“Uniswap v3 Core”)
reference/program-addresses- 정규 프로그램 ID


