Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Краткое резюме
CLMM — Concentrated Liquidity Market Maker — это AMM Raydium в стиле Uniswap v3. Вместо того чтобы распределять депозит поставщика ликвидности по всей кривой цены, CLMM позволяет LP вносить средства в определённый диапазон цен. Внутри этого диапазона каждый доллар депозита приносит в несколько раз больше дохода, чем в пуле CPMM; вне диапазона депозит не приносит дохода и остаётся односторонним балансом. Программа отслеживает ликвидность по тикам (дискретизированным ценовым корзинам), кодирует состояние пула квадратным корнем цены в виде Q64.64 с фиксированной точкой (sqrt_price_x64) и выпускает NFT для каждой позиции LP вместо взаимозаменяемого токена LP.
Что нового
Последний релиз CLMM добавляет три функции поверх ядра в стиле Uniswap v3. Они опциональны при создании пула и обратно совместимы с существующими пулами и позициями:- Лимитные ордера. 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. - Динамическая комиссия. Пулы могут включить надбавку к комиссии, отслеживающую волатильность, которая растёт при быстром движении тика и затухает со временем. Калибруется по
DynamicFeeConfigдля каждого уровня иDynamicFeeInfoдля каждого пула. См. Fees → Dynamic fee и Math → Dynamic fee derivation.
CreateCustomizablePool предоставляет все три параметра при создании пула. Классическая CreatePool продолжает работать для пулов с комиссией по умолчанию без лимитных ордеров и динамической комиссии.
Более поздний релиз добавляет пулы с разрешением для нескольких пулов: CreatePermissionedPool позволяет внесённому в белый список оператору (владельцу PDA Permission) создавать более одного пула для одной и той же пары и уровня комиссии, встраивая seed_index в адрес пула, и усиливает OpenLimitOrder для отклонения ордеров, чьи входные или выходные счета токенов заморожены. См. Instructions → CreatePermissionedPool и запись в журнале изменений от 2026-07-30.
Релиз 2026-08 добавляет условный путь замораживания позиций для избранных пулов эмитентов с ограничениями KYC. Каждый новый минт NFT позиции использует пул как орган замораживания, но счёт токена NFT остаётся разморожен и по умолчанию передаваем. CLMM замораживает его только когда позиция открывается через OpenPositionV2 или OpenPositionWithToken22Nft и орган замораживания одного из минтов пула совпадает со списком ограниченных эмитентов программы. Владелец может по-прежнему управлять ликвидностью и закрывать соответствующую позицию, но не может передавать её NFT или менять владельца счёта токена. Существующие позиции не замораживаются ретроактивно. См. Ticks and positions → Restricted-issuer positions и запись в журнале изменений от 2026-08-17.
Что даёт CLMM
- Эффективность капитала. LP стейблкоина, концентрирующий ликвидность в диапазоне ±0,1% около паритета, может заработать в 100 раз и более комиссий на доллар TVL по сравнению с пулом CPMM той же пары.
- Учёт комиссий на уровне позиции. Комиссии начисляются за позицию, а не за минт LP. Две позиции в одном пуле получают разные суммы комиссий в зависимости от их диапазонов и пути, который прошла цена.
- Несколько уровней комиссий на пару. Пара может иметь несколько пулов CLMM, каждый привязан к другому
AmmConfigсо своей ставкой торговой комиссии и интервалом тиков. Веб-интерфейс и маршрутизаторы показывают уровень с наибольшей ликвидностью по текущей цене. - Прямо стимулируемые на пуле. К пулу можно подключить до трёх потоков токенов вознаграждения; позиции собирают вознаграждения пропорционально секундам × ликвидности в диапазоне, которые они вносят. См.
products/clmm/fees. - NFT позиции. Каждая позиция — невзаимозаменяемый токен. Передача NFT обычно передаёт позицию; кошельки и интерфейсы могут отображать позиции так же, как они отображают коллекционные предметы. Только V2 позиция, чей базовый минт совпадает с фильтром ограниченного эмитента, заморожена и не передаваема.
- Поддержка Token-2022 с обеих сторон пары с теми же ограничениями расширений, что и CPMM.
Чем CLMM не является
- Не установи и забудь. Диапазон, установленный при SOL = $160, не будет приносить дохода, если SOL упадёт до $80, если вы не будете активно корректировать. CLMM вознаграждает активных LP; пассивные LP должны остаться с CPMM.
- Не бесплатно открывать. Каждый новый массив тиков, который пересекает позиция, должен быть инициализирован, что стоит ренты. Широкие диапазоны дешевле; узкие — нет.
- Не CLOB. В отличие от AMM v4, CLMM не зависит от OpenBook. Вся ликвидность находится на карте тиков.
- Не надмножество CPMM. Позиция CLMM, охватывающая
[tick_min, tick_max]при максимальном диапазоне, ведёт себя аналогично CPMM, но с разными затратами на газ, другой моделью учёта комиссий и без взаимозаменяемого токена LP. Если вам нужен простой пул с взаимозаменяемым LP, используйте CPMM.
Как CLMM отличается от CPMM и AMM v4
Концептуальная модель
Думайте о пуле CLMM как о трёх наложенных друг на друга структурах данных:- Непрерывная кривая в пространстве
sqrt_price. Цена пула представлена какsqrt_price_x64, Q64.64 с фиксированной точкой. Свопы движутся вдоль этой кривой; в пределах границы тика математика — это стандартная математика концентрированной ликвидности AMM (см.algorithms/clmm-math). - Дискретная карта тиков. Цены квантуются в тики — целые степени
1.0001. Каждый тик имеет известныйsqrt_price. Позиции ссылаются на свои конечные точки как на целые индексы тиков. Индексы тиков группируются в массивы фиксированного размера tick arrays для хранения. - Учёт комиссий и вознаграждений за позицию. Каждая позиция хранит глобальный
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.
- Вам специально нужна гибридная глубина CLOB, которую AMM v4 размещает на OpenBook.
- Вы мигрируете существующие интеграции AMM v4 и не открываете новые позиции.
Позиции — это NFT
Позиция CLMM представлена на цепи двумя счётами:- Минт NFT позиции с предложением 1.
- Счёт состояния личной позиции, привязанный к минту NFT, содержащий тики позиции, ликвидность и последние наблюдаемые значения роста комиссий.
products/clmm/ticks-and-positions.
Более старые релизы CLMM также создавали счёт
ProtocolPositionState за (pool, tick_lower, tick_upper) для агрегирования ликвидности для этого диапазона. Новые релизы больше его не создают и не используют — поле по-прежнему появляется в списках счётов OpenPosition / IncreaseLiquidity / DecreaseLiquidity как UncheckedAccount для совместимости ABI, но программа его не читает и не пишет. Агрегированный учёт диапазона находится на конечных точках тиков (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 — модель комиссий за позицию, режимы односторонней комиссии, динамическая комиссия и три слота вознаграждений.
- Code demos — пошаговые инструкции по открытию / корректировке / свопу / сбору / лимитному ордеру / настраиваемому пулу на TypeScript.
- Исходный код Raydium CLMM —
raydium-io/raydium-clmm - Whitepaper Uniswap v3 (“Uniswap v3 Core”) для математики, которую CLMM напрямую наследует
reference/program-addressesдля канонических ID программ

