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 — Concentrated Liquidity Market Maker — это Uniswap-v3-стиля АММ от Raydium. Вместо того чтобы распределять депозит поставщика ликвидности по всей кривой цены, CLMM позволяет LP вносить средства в определённый диапазон цен. Внутри этого диапазона каждый доллар депозита приносит в несколько раз больше дохода, чем в пуле CPMM; вне диапазона депозит не приносит ничего и остаётся односторонним балансом. Программа отслеживает ликвидность за tick (квантованный ценовой бакет), представляет состояние пула квадратным корнем цены в виде Q64.64 fixed-point числа (sqrt_price_x64) и чеканит NFT для каждой позиции LP вместо fungible LP токена.
Что нового
Последний релиз CLMM включает три дополнения поверх ядра в стиле Uniswap-v3. Они опциональны при создании пула и обратно совместимы с существующими пулами и позициями:- Лимит-ордеры. LP могут теперь поставить ордер на одном tick по определённой цене и получить заполнение по FIFO, когда своп пересекает этот tick. Ордеры рассчитываются в 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. - Динамическая комиссия. Пулы могут включить надбавку за комиссию, отслеживающую волатильность, которая растёт при быстром движении tick и затухает со временем. Калибруется по-за-пулу
DynamicFeeConfigи per-poolDynamicFeeInfo. См. Fees → Dynamic fee и Math → Dynamic fee derivation.
CreateCustomizablePool предоставляет все три опции при создании пула. Классическая CreatePool продолжает работать для пулов с комиссией по умолчанию без лимит-ордеров и динамической комиссии.
Что даёт CLMM
- Эффективность капитала. LP стабильной пары, сосредоточивший ликвидность в диапазоне ±0,1% около паритета, может заработать в 100 раз и более комиссий на доллар TVL по сравнению с пулом CPMM той же пары.
- Учёт комиссий на уровне позиции. Комиссии начисляются за позицию, а не за LP-mint. Две позиции в одном пуле получают разные суммы комиссий в зависимости от их диапазонов и пути, по которому двигалась цена.
- Несколько уровней комиссий за пару. Пара может иметь несколько пулов CLMM, каждый привязан к другому
AmmConfigсо своей ставкой торговой комиссии и tick-spacing. Веб-интерфейс и маршрутизаторы показывают тот уровень, который имеет наибольшую ликвидность по текущей цене. - Стимулы напрямую на пуле. До трёх потоков вознаграждений можно подключить к пулу; позиции собирают награды пропорционально их вкладу (секунды × in-range-liquidity). См.
products/clmm/fees. - NFT позиции. Каждая позиция — это non-fungible токен с mint равным детерминированной PDA. Передача NFT передаёт позицию; кошельки и интерфейсы могут отображать позиции так же, как они отображают коллекционные предметы.
- Поддержка Token-2022 с обеих сторон пары с такими же ограничениями расширений как CPMM.
Что CLMM не является
- Не установи и забудь. Диапазон, установленный когда SOL стоит $160, не будет приносить ничего, если SOL упадёт до $80, если вы не будете активно подстраиваться. CLMM награждает активных LP; пассивные LP должны остаться с CPMM.
- Не без затрат на открытие. Каждый новый tick-array, который пересекает позиция, должен быть инициализирован, что требует затрат на rent. Широкие диапазоны дешевле; узкие — нет.
- Не CLOB. В отличие от AMM v4, CLMM не имеет зависимости от OpenBook. Вся ликвидность находится на tick-карте.
- Не надмножество CPMM. Позиция CLMM, охватывающая
[tick_min, tick_max]с максимальным диапазоном, ведёт себя аналогично CPMM, но с другими затратами на газ, другой моделью учёта комиссий и без fungible LP токена. Если вам нужен простой пул с fungible LP, используйте CPMM.
Как CLMM отличается от CPMM и AMM v4
| Dimension | AMM v4 | CPMM | CLMM |
|---|---|---|---|
| Кривая | Постоянное произведение | Постоянное произведение | Сосредоточенная (tick-based) |
| Доля LP | Fungible LP mint | Fungible LP mint | Per-position NFT |
| Ликвидность находится… | По всем ценам | По всем ценам | В выбранном пользователем диапазоне |
| Уровни комиссий | Фиксированные 0.25% | Per AmmConfig (напр., 0.25%, 1%) | Per AmmConfig × tick-spacing |
| Активное управление | Неприменимо | Неприменимо | Требуется |
| Учёт комиссий | На уровне пула | На уровне пула | Per-position |
| Reward farms | Отдельная программа Farm | Отдельная программа Farm | Встроенная (до 3 вознаграждений) |
| Token-2022 | Нет | Да | Да |
| On-chain оракул | Нет | observation ring | observation массив per pool |
Концептуальная модель
Думайте о пуле CLMM как о трёх наложенных структурах данных:- Непрерывная кривая в пространстве
sqrt_price. Цена пула представлена какsqrt_price_x64, Q64.64 fixed-point. Свопы ходят по этой кривой; внутри границы tick математика стандартна (см.algorithms/clmm-math). - Дискретная tick-карта. Цены квантованы в ticks — целые степени
1.0001. Каждый tick имеет известныйsqrt_price. Позиции ссылаются на свои конечные точки как на целые индексы tick. Индексы tick группируются в fixed-size tick arrays для хранения. - Per-position учёт комиссий и вознаграждений. Каждая позиция хранит глобальный
fee_growth_insideна момент последнего обновления. Когда LP касается позиции (открытие, закрытие, изменение, сбор), программа вычитает сохранённое значение из текущего глобального, чтобы получить то, что причитается. Это паттерн Uniswap-v3feeGrowthInside0X128 / feeGrowthInside1X128.
- Открыть позицию: выбрать диапазон tick, внести токены, чеканить NFT, вставить ликвидность в tick-карту в диапазоне, инициализировать любые ранее пустые tick-arrays.
- Увеличить / уменьшить ликвидность: изменить количество, хранящееся в аккаунте позиции NFT и в tick-карте; собрать накопленные комиссии одновременно.
- Своп: идти от текущего
sqrt_price_x64в направлении торговли, потребляя активную ликвидность до тех пор, пока вход не исчерпается или не будет достигнут следующий инициализированный tick; пересечь tick и собрать или отпустить ликвидность на новой стороне. - Собрать комиссии / награды: вычислить
fee_growth_inside_now − fee_growth_inside_last×position_liquidityдля каждой стороны и каждого потока вознаграждений; вывести.
liquidity.
Когда выбрать CLMM
Выбирайте CLMM когда:- Вы предоставляете ликвидность стабильной или mean-reverting паре (USDC/USDT, jitoSOL/SOL, wBTC/BTC) и хотите сосредоточиться около паритета.
- Вы маркет-мейкер, готовый отслеживать цену и перебалансировать.
- Вам специально нужны per-pool эмиссии стимулов без создания отдельного farm.
- Вам нужен per-position учёт для собственного LP продукта (vault, структурированный продукт и т.д.).
- Вы запускаете новый токен с неизвестным процессом ценообразования.
- Вы хотите один fungible LP токен, который можно стейкить, локировать или комбинировать с другим.
- Вы хотите пассивный LP опыт.
- Вам специально нужна гибридная CLOB глубина, которую AMM v4 размещает на OpenBook.
- Вы мигрируете существующие AMM v4 интеграции и не открываете новые позиции.
Позиции — это NFT
Позиция CLMM представлена на-цепи двумя аккаунтами:- Position NFT mint с supply 1.
- Personal-position state аккаунт, привязанный к NFT mint, хранящий ticks позиции, ликвидность и последние наблюдаемые значения fee-growth.
products/clmm/ticks-and-positions.
Более старые релизы CLMM также создавали
ProtocolPositionState аккаунт per (pool, tick_lower, tick_upper) для агрегирования ликвидности за этот диапазон. Новые релизы больше его не создают и не используют — поле по-прежнему появляется в списках аккаунтов OpenPosition / IncreaseLiquidity / DecreaseLiquidity как UncheckedAccount для совместимости ABI, но программа не читает и не пишет его. Агрегирование диапазонов находится прямо на конечных точках tick (liquidity_gross, liquidity_net).Куда дальше
- Accounts — разметка аккаунтов пула, конфига, tick-array и позиции.
- Ticks and positions — tick-карта, tick-spacing, размер tick-array, NFT-based позиции.
- Math —
sqrt_price_x64, пошаговый своп, выводfee_growth_inside. - Instructions —
OpenPosition,IncreaseLiquidity,Swap,CollectRewards, семейство лимит-ордеров иCreateCustomizablePool. - Fees and rewards — per-position модель комиссий, режимы односторонней комиссии, динамическая комиссия и три слота вознаграждений.
- Code demos — открытие / изменение / своп / сбор / лимит-ордер / customizable-pool пошаговые примеры на TypeScript.
- Raydium CLMM source —
raydium-io/raydium-clmm - Uniswap v3 whitepaper (“Uniswap v3 Core”) для математики, которую CLMM прямо наследует
reference/program-addressesдля канонических ID программ


