Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →

한 문단 요약

CLMM — Concentrated Liquidity Market Maker — 은 Raydium의 Uniswap-v3 스타일 AMM입니다. 유동성 공급자의 예치금을 전체 가격 곡선에 분산시키는 대신, CLMM은 LP가 특정 가격 범위에 예치할 수 있게 해줍니다. 그 범위 내에서는 예치금의 모든 달러가 CPMM 풀에서보다 훨씬 더 생산적이고, 범위 밖에서는 예치금이 아무것도 벌지 못하고 한쪽 잔액으로만 남아 있습니다. 이 프로그램은 (이산화된 가격 버킷)당 유동성을 추적하고, 가격의 제곱근을 Q64.64 고정소수점 수(sqrt_price_x64)로 인코딩하여 풀 상태를 가격 책정하며, 대체 가능한 LP 토큰 대신 각 LP 포지션에 대해 NFT를 발행합니다.

새로운 기능

최신 CLMM 릴리스는 Uniswap-v3 스타일 핵심 위에 세 가지 추가 기능을 제공합니다. 이들은 풀 생성 시 선택 사항이며 기존 풀 및 포지션과 역호환됩니다:
  • 리미트 오더. LP는 이제 특정 가격에서 단일 틱 오더를 주차할 수 있으며, 스왑이 그 틱을 지날 때 스왑 경로가 FIFO로 채웁니다. 오더는 리미트 가격에서 소유자의 ATA로 정산되며, 오프체인 키퍼(limit_order_admin)는 소유자가 온라인 상태가 아니어도 채워진 오더를 수거할 수 있습니다. Instructions → OpenLimitOrder / SettleLimitOrderMath → Limit-order matching during swap를 참조하세요.
  • 단일 측 수수료(CollectFeeOn). 풀은 입력 측에서 스왑 수수료를 가져오도록(레거시 동작, 모드 0), 항상 token_0에서(1), 또는 항상 token_1에서(2) 가져오도록 구성할 수 있습니다. 페어의 한쪽이 정규 회계 토큰(예: USDC)일 때 유용합니다. Fees → Single-sided fee를 참조하세요.
  • 동적 수수료. 풀은 빠른 틱 이동으로 상승하고 시간이 지남에 따라 감소하는 변동성 추적 수수료 할증을 선택할 수 있습니다. 계층별 DynamicFeeConfig와 풀별 DynamicFeeInfo로 보정됩니다. Fees → Dynamic feeMath → Dynamic fee derivation를 참조하세요.
새로운 명령어 CreateCustomizablePool은 풀 생성 시 세 가지 옵션을 모두 노출합니다. 클래식 CreatePool은 리미트 오더나 동적 수수료 없이 기본 수수료 풀에 대해 계속 작동합니다. 이후 릴리스는 권한이 있는 다중 풀을 추가합니다: CreatePermissionedPool을 사용하면 화이트리스트된 운영자(Permission PDA를 보유한)가 seed_index를 풀 주소에 접어서 동일한 페어 및 수수료 계층에 대해 둘 이상의 풀을 생성할 수 있으며, OpenLimitOrder를 강화하여 입력 또는 출력 토큰 계정이 동결된 오더를 거부합니다. Instructions → CreatePermissionedPool2026-07-30 changelog entry를 참조하세요. 2026-08 릴리스는 선택된 KYC 제한 발행자 풀에 대한 조건부 포지션 동결 경로를 추가합니다. 모든 새로운 포지션 NFT 민트는 풀을 동결 권한으로 사용하지만, NFT 토큰 계정은 기본적으로 동결되지 않고 양도 가능합니다. CLMM은 포지션이 OpenPositionV2 또는 OpenPositionWithToken22Nft를 통해 열릴 때 그리고 풀 민트의 동결 권한이 프로그램의 제한된 발행자 목록과 일치할 때만 동결합니다. 소유자는 여전히 유동성을 관리하고 일치하는 포지션을 닫을 수 있지만 NFT를 양도하거나 토큰 계정 소유자를 변경할 수 없습니다. 기존 포지션은 소급하여 동결되지 않습니다. Ticks and positions → Restricted-issuer positions2026-08-17 changelog entry를 참조하세요.

CLMM이 제공하는 것

  • 자본 효율성. 동등성 주변 ±0.1% 대역에 유동성을 집중시키는 스테이블코인-스테이블코인 LP는 동일한 페어의 CPMM 풀과 비교하여 TVL당 수수료에서 100배 이상을 벌 수 있습니다.
  • 포지션 수준 수수료 회계. 수수료는 LP 민트당이 아니라 포지션당 발생합니다. 동일한 풀의 두 포지션은 범위와 가격이 취한 경로에 따라 다른 수수료 금액을 벌 수 있습니다.
  • 페어당 여러 수수료 계층. 페어는 여러 CLMM 풀을 가질 수 있으며, 각각은 자체 거래 수수료율과 틱 간격을 가진 다른 AmmConfig에 바인딩됩니다. 웹 UI와 라우터는 현재 가격에서 가장 많은 유동성을 가진 계층을 표시합니다.
  • 풀에서 직접 인센티브 가능. 최대 3개의 보상 토큰 스트림을 풀에 연결할 수 있으며, 포지션은 기여하는 초 × 범위 내 유동성에 따라 비례적으로 보상을 수집합니다. products/clmm/fees를 참조하세요.
  • NFT 포지션. 각 포지션은 대체 불가능한 토큰입니다. NFT를 양도하면 일반적으로 포지션이 양도되며, 지갑과 UI는 포지션을 수집품과 동일한 방식으로 표시할 수 있습니다. 기본 민트가 제한된 발행자 필터와 일치하는 V2 포지션만 동결되고 양도 불가능합니다.
  • Token-2022 지원 페어의 양쪽에서, CPMM과 동일한 확장 제한 사항이 있습니다.

CLMM이 아닌 것

  • 설정 후 방치하는 것이 아닙니다. SOL이 $160일 때 설정한 범위는 SOL이 $80으로 이동하면 적극적으로 조정하지 않는 한 아무것도 벌지 못합니다. CLMM은 활동적인 LP에 보상을 주며, 수동적인 LP는 CPMM에 머물러야 합니다.
  • 개설 비용이 0이 아닙니다. 포지션이 지나가는 각각의 새로운 틱 배열은 초기화되어야 하며, 이는 렌트 비용이 듭니다. 넓은 범위는 더 저렴하고, 좁은 범위는 그렇지 않습니다.
  • CLOB이 아닙니다. AMM v4와 달리 CLMM은 OpenBook 의존성이 없습니다. 모든 유동성은 틱 맵에 있습니다.
  • CPMM의 상위 집합이 아닙니다. 최대 범위에서 [tick_min, tick_max]에 걸친 CLMM 포지션은 CPMM과 유사하게 동작하지만, 다른 가스 비용, 다른 수수료 회계 모델, 그리고 대체 가능한 LP 토큰이 없습니다. 간단한 대체 가능한 LP 풀을 원하면 CPMM을 사용하세요.

CLMM이 CPMM 및 AMM v4와 다른 점

정신 모델

CLMM 풀을 세 개의 겹쳐진 데이터 구조로 생각하세요:
  1. sqrt_price 공간의 연속 곡선. 풀의 가격은 sqrt_price_x64로 표현되며, Q64.64 고정소수점입니다. 스왑은 이 곡선을 따라 이동하며, 틱 경계 내에서 수학은 표준 집중 유동성 AMM 수학입니다(algorithms/clmm-math 참조).
  2. 이산 틱 맵. 가격은 1.0001의 정수 거듭제곱인 틱으로 양자화됩니다. 각 틱은 알려진 sqrt_price를 가집니다. 포지션은 끝점을 정수 틱 인덱스로 참조합니다. 틱 인덱스는 저장을 위해 고정 크기 틱 배열로 그룹화됩니다.
  3. 포지션별 수수료 및 보상 부기. 각 포지션은 마지막 업데이트 시점의 전역 fee_growth_inside를 저장합니다. LP가 포지션을 건드릴 때(열기, 닫기, 조정, 수집), 프로그램은 저장된 값을 현재 전역에서 빼서 어떤 것이 빚졌는지 계산합니다. 이것은 Uniswap-v3 feeGrowthInside0X128 / feeGrowthInside1X128 패턴입니다.
모든 사용자 작업은 이 세 구조에 대한 상태 전환으로 분해됩니다:
  • 포지션 열기: 틱 범위 선택, 토큰 예치, 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을 선호하세요:
  • 미지의 가격 발견으로 새로운 토큰을 출시하고 있습니다.
  • 스테이킹, 잠금 또는 구성할 수 있는 단일 대체 가능한 LP 토큰을 원합니다.
  • 수동적인 LP 경험을 원합니다.
다음의 경우 AMM v4를 선호하세요:
  • AMM v4가 OpenBook에 배치하는 하이브리드 CLOB 깊이가 특별히 필요합니다.
  • 기존 AMM v4 통합을 마이그레이션하고 있으며 새로운 포지션을 열지 않습니다.

포지션은 NFT입니다

CLMM 포지션은 온체인에서 두 개의 계정으로 표현됩니다:
  • 공급량이 1인 포지션 NFT 민트.
  • 포지션의 틱, 유동성, 마지막 관찰된 수수료 성장 값을 보유하는 NFT 민트에 키가 지정된 개인 포지션 상태 계정.
동결되지 않은 포지션 NFT를 양도하면 포지션이 양도됩니다 — 개인 포지션 계정의 권한은 NFT 보유자입니다. V2 포지션은 기본 볼트 민트가 제한된 발행자 필터와 일치하고 CLMM이 생성 시 NFT 토큰 계정을 동결하는 경우에만 원래 소유자에게 바인딩된 상태로 유지됩니다. 포지션은 CLMM을 통해 관리 가능하고 닫을 수 있습니다. 자세한 내용은 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 기반 포지션.
  • Mathsqrt_price_x64, 스왑 단계별 설명, fee_growth_inside 유도.
  • InstructionsOpenPosition, IncreaseLiquidity, Swap, CollectRewards, 리미트 오더 패밀리, CreateCustomizablePool.
  • Fees and rewards — 포지션별 수수료 모델, 단일 측 수수료 모드, 동적 수수료, 3개 보상 슬롯.
  • Code demos — TypeScript의 열기 / 조정 / 스왑 / 수집 / 리미트 오더 / 사용자 정의 가능한 풀 연습.
출처: