Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Краткое резюме
CLMM — Concentrated Liquidity Market Maker — это AMM в стиле Uniswap v3 от Raydium. Вместо того чтобы распределять депозит поставщика ликвидности по всей кривой цены, CLMM позволяет LP вносить средства в определённый диапазон цен. Внутри этого диапазона каждый доллар депозита работает в несколько раз эффективнее, чем в пуле CPMM; вне диапазона депозит не приносит доход и остаётся односторонним балансом. Программа отслеживает ликвидность по тикам (дискретизированным ценовым корзинам), кодирует состояние пула квадратным корнем цены в виде Q64.64 fixed-point числа (sqrt_price_x64) и выпускает NFT для каждой позиции LP вместо fungible LP токена.
Что нового
Последний релиз CLMM добавляет три функции поверх ядра в стиле Uniswap v3. Они опциональны при создании пула и обратно совместимы с существующими пулами и позициями:- Лимитные ордера. LP теперь могут разместить ордер на одном тике по определённой цене, и путь свопа заполнит его FIFO, когда своп пересечёт этот тик. Ордера исполняются на ATA владельца по лимитной цене; off-chain keeper (
limit_order_admin) может собрать исполненные ордера без участия владельца. См. Instructions → OpenLimitOrder / SettleLimitOrder и Math → Limit-order matching during swap. - Односторонняя комиссия (
CollectFeeOn). Пулы можно настроить на взятие комиссии свопа с входной стороны (legacy поведение, режим0), или всегда сtoken_0(1), или всегда сtoken_1(2). Полезно, когда одна сторона пары — канонический учётный токен (например, USDC). См. Fees → Single-sided fee. - Динамическая комиссия. Пулы могут включить надбавку к комиссии, отслеживающую волатильность, которая растёт при быстром движении тика и затухает со временем. Калибруется per-tier
DynamicFeeConfigи per-poolDynamicFeeInfo. См. Fees → Dynamic fee и Math → Dynamic fee derivation.
CreateCustomizablePool предоставляет все три параметра при создании пула. Классическая CreatePool продолжает работать для пулов с дефолтной комиссией без лимитных ордеров и динамической комиссии.
Более поздний релиз добавляет permissioned multi-pools: CreatePermissionedPool позволяет whitelisted оператору (держателю Permission PDA) создавать более одного пула для одной пары и fee tier, складывая seed_index в адрес пула, и усиливает OpenLimitOrder для отклонения ордеров, чьи входные или выходные токен-аккаунты заморожены. См. запись changelog от 2026-07-30.
Релиз от 2026-10-22 открывает создание multi-pool для всех: CreatePermissionedPool переименовывается в CreateCustomizablePoolV2, gate Permission PDA удаляется, и любой payer может создавать дополнительные пулы для пары и fee tier по адресу, производному от seed_index. Пара может иметь много CLMM пулов на fee tier, поэтому выбирайте пулы по ликвидности, а не по адресу. См. Instructions → CreateCustomizablePoolV2 и запись changelog от 2026-10-22.
Релиз от 2026-08 добавляет условный путь замораживания позиции для избранных пулов эмитентов с KYC-ограничениями. Каждый новый NFT mint позиции использует пул как freeze authority, но токен-аккаунт NFT остаётся разморожен и передаваем по умолчанию. CLMM замораживает его только когда позиция открывается через OpenPositionV2 или OpenPositionWithToken22Nft и freeze authority одного из mint пула совпадает со списком restricted-issuer программы. Владелец может по-прежнему управлять ликвидностью и закрывать соответствующую позицию, но не может передавать её NFT или менять владельца токен-аккаунта. Существующие позиции не замораживаются ретроактивно. См. Ticks and positions → Restricted-issuer positions и запись changelog от 2026-08-17.
Что даёт CLMM
- Эффективность капитала. LP стейблкоин-стейблкоина, сконцентрировавший ликвидность в полосе ±0.1% вокруг паритета, может зарабатывать в 100× раз больше комиссий на доллар TVL по сравнению с пулом CPMM той же пары.
- Учёт комиссий на уровне позиции. Комиссии начисляются per-position, а не per-LP-mint. Две позиции в одном пуле зарабатывают разные суммы комиссий в зависимости от их диапазонов и пути, который прошла цена.
- Несколько fee tier на пару. Пара может иметь несколько CLMM пулов, каждый привязан к другому
AmmConfigсо своей торговой комиссией и tick-spacing. Веб-интерфейс и роутеры показывают тот tier, который имеет наибольшую ликвидность по текущей цене. - Incentivizable прямо на пуле. До трёх потоков reward токенов можно прикрепить к пулу; позиции собирают награды pro-rata на основе секунд × in-range-ликвидности, которые они вносят. См.
products/clmm/fees. - NFT позиции. Каждая позиция — это non-fungible токен. Передача NFT обычно передаёт позицию; кошельки и интерфейсы могут отображать позиции так же, как они отображают collectibles. Только V2 позиция, чей underlying mint совпадает с фильтром restricted-issuer, заморожена и не передаваема.
- Поддержка Token-2022 с обеих сторон пары, с теми же ограничениями расширений, что и CPMM.
Чем CLMM не является
- Не “установи и забудь”. Диапазон, установленный когда SOL стоит $160, не будет приносить доход, если SOL упадёт до $80, если вы не будете активно корректировать. CLMM вознаграждает активных LP; пассивные LP должны остаться с CPMM.
- Не бесплатно открывать. Каждый новый tick-array, который пересекает позиция, должен быть инициализирован, что стоит rent. Широкие диапазоны дешевле; узкие — нет.
- Не CLOB. В отличие от AMM v4, CLMM не имеет зависимости от OpenBook. Вся ликвидность находится на tick map.
- Не надмножество CPMM. Позиция CLMM, охватывающая
[tick_min, tick_max]на максимальном диапазоне, ведёт себя похоже на CPMM, но с разными затратами на газ, другой моделью учёта комиссий и без fungible LP токена. Если вам нужен простой пул с fungible LP, используйте CPMM.
Как CLMM отличается от CPMM и AMM v4
Ментальная модель
Думайте о пуле CLMM как о трёх наложенных друг на друга структурах данных:- Непрерывная кривая в пространстве
sqrt_price. Цена пула представлена какsqrt_price_x64, Q64.64 fixed-point. Свопы идут вдоль этой кривой; внутри границы тика математика стандартна для concentrated-liquidity AMM (см.algorithms/clmm-math). - Дискретная tick map. Цены квантуются в тики — целые степени
1.0001. Каждый тик имеет известныйsqrt_price. Позиции ссылаются на свои конечные точки как на целые индексы тиков. Индексы тиков группируются в fixed-size tick arrays для хранения. - Per-position учёт комиссий и вознаграждений. Каждая позиция хранит глобальный
fee_growth_insideна момент последнего обновления. Когда LP трогает позицию (открыть, закрыть, отрегулировать, собрать), программа вычитает сохранённое значение из текущего глобального, чтобы вычислить, что причитается. Это паттерн Uniswap v3feeGrowthInside0X128 / feeGrowthInside1X128.
- Открыть позицию: выбрать диапазон тиков, внести токены, выпустить NFT, вставить ликвидность в tick map в пределах диапазона, инициализировать любые ранее пустые tick-arrays.
- Увеличить / уменьшить ликвидность: отрегулировать сумму, хранящуюся в аккаунте позиции, связанном с NFT, и в tick map; собрать накопленные комиссии одновременно.
- Своп: идти от текущего
sqrt_price_x64в направлении торговли, потребляя активную ликвидность, пока входные средства не исчерпаны или не достигнут следующий инициализированный тик; пересечь тик и подобрать или отбросить ликвидность на новой стороне. - Собрать комиссии / вознаграждения: вычислить
fee_growth_inside_now − fee_growth_inside_last×position_liquidityдля каждой стороны и каждого потока вознаграждений; перевести.
liquidity.
Когда выбрать CLMM
Выбирайте CLMM когда:- Вы предоставляете ликвидность стабильной или mean-reverting паре (USDC/USDT, jitoSOL/SOL, wBTC/BTC) и хотите сконцентрировать её вблизи паритета.
- Вы маркет-мейкер, готовый мониторить цену и ребалансировать.
- Вам специально нужны per-pool incentive emissions без создания отдельной фермы.
- Вам нужен per-position учёт для вашего собственного LP продукта (vault, structured product и т.д.).
- Вы запускаете новый токен с неизвестным ценообразованием.
- Вы хотите один fungible LP токен, который можно стейкить, локировать или компоновать.
- Вы хотите пассивный LP опыт.
- Вам специально нужна hybrid-CLOB глубина, которую AMM v4 размещает на OpenBook.
- Вы мигрируете существующие интеграции AMM v4 и не открываете новые позиции.
Позиции — это NFT
Позиция CLMM представлена on-chain двумя аккаунтами:- Position NFT mint с supply 1.
- Personal-position state аккаунт, привязанный к NFT mint, содержащий тики позиции, ликвидность и последние наблюдаемые значения роста комиссий.
products/clmm/ticks-and-positions.
Более старые релизы CLMM также создавали аккаунт
ProtocolPositionState per (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для канонических идентификаторов программ

