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.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Это журнал изменений документации — реестр обновлений страниц с момента запуска проекта. Историческую хронологию самого протокола см. в
introduction/history-and-milestones. Каждая запись содержит дату, список затронутых разделов, причину изменения и дату верификации — когда on-chain состояние и исходный код программы в последний раз сверялись с текстом документации.Не выпущено — CLMM: лимитные ордера, односторонняя комиссия, динамическая комиссия
Следующий релиз CLMM добавляет три возможности на уровне пула. Они подключаются по желанию при создании пула и обратно совместимы с существующими пулами и позициями.Кратко для интеграторов
- Лимитные ордера теперь являются полноценными примитивами CLMM. LP могут открыть ордер на одном тике в пуле, который их поддерживает; ордер исполняется по принципу FIFO, когда своп пересекает тик, а офчейн-кипер (
limit_order_admin) может расчитать исполненный вывод без присутствия владельца онлайн. Семь новых методов SDK (openLimitOrder,increaseLimitOrder,decreaseLimitOrder,settleLimitOrder,closeLimitOrder,closeAllLimitOrder,settleAllLimitOrder) и три новых эндпоинта Temp API под/limit-order/(активные ордера, история по пользователю, лог событий по PDA) покрывают полный флоу. - Односторонняя комиссия (
CollectFeeOn) позволяет пулу взимать комиссию за своп со стороны входа (legacy, режим0), всегда сtoken_0(режим1) или всегда сtoken_1(режим2). Полезно, когда одна из сторон пары является каноническим расчётным токеном. - Динамическая комиссия позволяет пулу подключить надбавку, отслеживающую волатильность: она растёт при быстром движении тиков и затухает со временем, калибруясь через
DynamicFeeConfigна уровне тира иDynamicFeeInfoна уровне пула. Новый эндпоинт/main/clmm-dynamic-configвозвращает список тиров. - Новая инструкция
CreateCustomizablePoolоткрывает доступ ко всем трём параметрам при создании пула. КлассическийCreatePoolпродолжает работать для пулов с комиссией по умолчанию и без лимитных ордеров. - Критическое изменение для индексаторов: счётчики объёма по направлениям (
swap_in_amount_token_{0,1},swap_out_amount_token_{0,1}) и счётчики накопленных комиссий (total_fees_token_{0,1},total_fees_claimed_token_{0,1}) вPoolStateубраны в паддинг, чтобы освободить место дляfee_onиdynamic_fee_info. Индексаторы, читающие эти поля напрямую, должны перейти на on-chain кольцоObservationили API.
Почему это важно (для трейдеров, LP и интеграторов)
- Трейдеры получают более точные котировки по низколиквидным и событийным парам: динамическая комиссия позволяет пулу поглощать надбавку за волатильность со стороны тейкера без необходимости LP активно расширять диапазоны, а лесенки лимитных ордеров углубляют on-chain ликвидность по конкретным ценам без привязки капитала ко всему диапазону.
- LP получают третью стратегию наряду с сконцентрированными диапазонами и полнодиапазонными позициями: размещать ордера по точной цене, дожидаться исполнения при достижении цены, получать расчёт в котируемом токене. Активная ребалансировка для исполненной части не нужна.
- Интеграторы могут детерминированно моделировать пулы с динамической комиссией — алгоритм и параметры полностью on-chain, уровни калибровки доступны через запрос, а путь свопа не изменился по структуре (меняется лишь комиссия на каждом шаге).
Что изменилось в программе
Новые аккаунты
DynamicFeeConfig— запись калибровки на уровне тира (период фильтрации, период затухания, коэффициент снижения, управление динамической комиссией, максимальный аккумулятор волатильности). Создаётся черезCreateDynamicFeeConfig(администратор), на неё ссылаетсяCreateCustomizablePoolпри включении динамической комиссии.LimitOrderState— аккаунт одного ордера (PDA seeds:[owner, limit_order_nonce, order_nonce]), хранящий пул, тик, сторону, сумму входа, долю неисполненного объёма, фазу FIFO-когорты и снимки учётных данных. Жизненный цикл определяется неявно (filled_amountvstotal_amountплюс наличие аккаунта):Open → Filled → Settled → Closed.LimitOrderNonce— монотонно возрастающий счётчик на пару (owner, nonce_index), служащий для формирования PDA seeds лимитного ордера. Полеnonce_index: u8позволяет одному владельцу разбивать ордера до 256 независимых потоков нонсов.
Изменение структуры PoolState
| Группа полей | Старая структура | Новая структура |
|---|---|---|
| Счётчики объёма по направлениям | swap_in_amount_token_0, swap_out_amount_token_0, swap_in_amount_token_1, swap_out_amount_token_1 | Сведены в padding5: [u128; 4] |
| Счётчики накопленных комиссий | total_fees_token_0, total_fees_claimed_token_0, total_fees_token_1, total_fees_claimed_token_1 | Сведены в padding6: [u64; 4] |
| Односторонняя комиссия | — | fee_on: u8 (0 = FromInput, 1 = Token0Only, 2 = Token1Only) |
| Динамическая комиссия | — | dynamic_fee_info: DynamicFeeInfo (встроенная) |
PoolState на кольцо Observation или API. Убранные счётчики не обнуляются на существующих пулах (они хранят последние записанные значения), поэтому после обновления их чтение вернёт устаревшие данные.
Дополнения в TickState (без ломающих изменений)
В конец TickState добавлены четыре новых поля, замещающих часть хвостового паддинга:
order_phase: u64— счётчик, разграничивающий когорты лимитных ордеров на данном тике.orders_amount: u64— суммарный входной объём всех открытых ордеров на данном тике (не все из них полностью неисполнены).part_filled_orders_remaining: u64— входной объём, ещё не исполненный в когорте, которая в данный момент потребляется свопами.unfilled_ratio_x64: u128— коэффициент Q64.64, используемый для вычисления доли исполнения каждого ордера.
Новые инструкции
CreateDynamicFeeConfig(администратор) — создать откалиброванный тирDynamicFeeConfig. Полномочия: тот же мультисиг казначейства, что и уCreateAmmConfig.UpdateDynamicFeeConfig(администратор) — обновить параметры существующего тира.CreateCustomizablePool— точка входа для создания пула, открывающая доступ кcollect_fee_on,enable_dynamic_feeиdynamic_fee_config. Сосуществует сCreatePool; для новых пулов, которым нужны новые параметры, рекомендуется использоватьCreateCustomizablePool.OpenLimitOrder— открыть лимитный ордер на одном тике. ИнкрементируетLimitOrderNonce, выделяетLimitOrderState, помещает ордер в FIFO-когорту на тике.IncreaseLimitOrder/DecreaseLimitOrder— скорректировать неисполненную часть ордера. На полностью исполненном ордере возвращает ошибкуInvalidOrderPhase.SettleLimitOrder— перевести исполненный вывод на ATA владельца. Вызывающей стороной может быть владелец или киперlimit_order_adminпула.CloseLimitOrder— закрыть полностью расчитанный ордер и вернуть ренту.
Изменения в поведении SwapV2
Путь свопа по структуре не изменился, однако на каждом шаге теперь происходят три дополнительных действия:
- Динамическая комиссия (если включена):
DynamicFeeInfoпула обновляется на каждом шаге (затухание → накопление → ограничение), и полученная надбавка добавляется поверх базовой комиссии для этого шага. - Сопоставление лимитных ордеров (когда шаг пересекает инициализированный тик с открытыми ордерами): часть входного объёма свопа потребляется по FIFO для исполнения когорты на данном тике,
unfilled_ratio_x64обновляется атомарно. - Маршрутизация односторонней комиссии (когда
fee_on != 0): комиссия берётся сtoken_0илиtoken_1независимо от направления свопа, а не всегда со входной стороны.
Новые коды ошибок
В этом релизе перечислениеErrorCode было перенумеровано: пять устаревших вариантов (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) были удалены, и одиннадцать новых вариантов добавлены в конец. Поскольку Anchor нумерует ошибки по порядку элементов enum, начиная с 6000, все коды ошибок, начиная с позиций удалённых элементов, сместились — клиентам, использующим жёстко заданные числовые коды, необходимо перемапить их.
Новые коды:
6040OrderAlreadyFilled6041InvalidOrderPhase6042InvalidLimitOrderAmount6043OrderPhaseSaturated6044InvalidDynamicFeeConfigParams6045InvalidFeeOn6046ZeroSqrtPrice6047ZeroLiquidity6048MissingBaseFlag6049MissingMintAccount6050MissingTokenProgram2022
Что изменилось в SDK (@raydium-io/raydium-sdk-v2)
- Новые методы в
raydium.clmm:createCustomizablePool,openLimitOrder,increaseLimitOrder,decreaseLimitOrder,settleLimitOrder,settleAllLimitOrder,closeLimitOrder,closeAllLimitOrder. - Новые REST-хелперы в
raydium.api:getClmmDynamicConfigs,getClmmLimitOrderConfigs. - Новые типы: enum
CollectFeeOn,DynamicFeeConfig,DynamicFeeInfo,LimitOrderState,LimitOrderConfig. - Внутренняя реорганизация:
utils/перемещён вlibraries/. Публичный barrel-экспорт пакета не изменился; обновить нужно только глубокие импорты вида@raydium-io/raydium-sdk-v2/utils/...— на…/libraries/....
products/clmm/code-demos.
Что изменилось в API
api-v3— два новых эндпоинта под/main/:GET /main/clmm-dynamic-config— список тировDynamicFeeConfig.GET /main/clmm-limit-order-config— конфигурация лимитных ордеров по каждому пулу.
temp-api-v1— три новых эндпоинта под/limit-order/:GET /limit-order/order/list?wallet=…— текущие ордера кошелька (открытые и частично исполненные, отдаются из Redis-кэша индексатора; один и тот же payload охватывает обе фазы черезtotalAmount/filledAmount/pendingSettle).GET /limit-order/history/order/list-by-user?wallet=…— история лимитных ордеров кошелька. Опциональные фильтры:poolId,mint1,mint2,hideCancel. Курсорная пагинация черезnextPageId/size(максимум 100).GET /limit-order/history/event/list-by-pda?pda=…— лог событий (open/increase/decrease/settle/close) для одного или нескольких лимитных ордеров PDA через запятую. Курсорная пагинация черезnextPageId/size(максимум 100).
Полномочия
limit_order_admin — офчейн-операционный кипер, не мультисиг. Он может вызывать только SettleLimitOrder и CloseLimitOrder на существующих ордерах, причём вывод по расчёту всегда поступает на ATA владельца. Он не может изменять поля пула, открывать или редактировать ордера, а также подписывать что-либо иное. См. Ключи администратора и мультисиг → CLMM.
Обновлённые страницы
products/clmm/overview— новый раздел «Что нового» и обновлённые ссылки на следующие шаги.products/clmm/accounts— три новых аккаунта, изменение структурыPoolStateс предупреждением о миграции, дополнения вTickState, новые PDA-хелперы.products/clmm/instructions— семь новых инструкций, дополнение к поведениюSwapV2, обновлённая матрица изменений состояний.products/clmm/fees— раздел об односторонней комиссии, раздел о динамической комиссии с таблицей параметров.products/clmm/math— псевдокод сопоставления лимитных ордеров, вывод формулы динамической комиссии.products/clmm/code-demos— демоcreateCustomizablePool, полный разбор работы с лимитными ордерами, новые типичные ошибки.algorithms/clmm-math— перекрёстные ссылки на сопоставление лимитных ордеров и динамическую комиссию в цикле свопа по нескольким тикам.sdk-api/typescript-sdk— раздел о добавлениях в модуль CLMM, примечание о миграцииutils/→libraries/.api-reference/openapi/api-v3.yaml— два новых эндпоинта со схемами ответов.api-reference/openapi/temp-api-v1.yaml— три новых эндпоинта лимитных ордеров (/limit-order/order/list,/limit-order/history/order/list-by-user,/limit-order/history/event/list-by-pda) с схемами запросов и ответов.api-reference/api-v3/overview— примечание о новых эндпоинтах конфигурации CLMM.api-reference/temp-api-v1/overview— примечание о новых эндпоинтах активных ордеров, истории по пользователю и событий по PDA.reference/error-codes— одиннадцать новых кодов ошибок CLMM (6040–6050) плюс пять удалённых устаревших кодов; числовые коды после точек удаления сдвинулись.security/admin-and-multisig— новая строка администратораDynamicFeeConfigи строка кипераlimit_order_adminс пояснением об ограниченных полномочиях.
- исходным кодом
raydium-clmm; - исходным кодом
@raydium-io/raydium-sdk-v2; - исходным кодом
api-v3иtemp-api-v1.
2026-04-26 — Первая публикация
Первый публичный релиз документации Raydium. Сверено с:- развёрнутыми программами на Solana mainnet-beta;
@raydium-io/raydium-sdk-v2@0.2.42-alpha;- публичной документацией Raydium и on-chain источниками по апрель 2026 года включительно.
Соглашения о документации
- Версионирование: данная документация использует календарное версионирование (YYYY-MM-DD). Каждое обновление создаёт новую запись в начале файла.
- Дата верификации: каждая запись фиксирует, когда содержимое в последний раз сверялось с on-chain / API состоянием и исходным кодом программы. Если дата не указана явно, считается, что это основная дата записи.
- Ломающие изменения: выделяются предупреждением в рамке на затронутых страницах и помечаются в соответствующей записи ниже.
- Охват: данный журнал изменений охватывает сам набор документации. Историческая хронология протокола находится в
introduction/history-and-milestonesи является первичным источником истины о том, «когда X произошло в Raydium».
Исправления
Если вы обнаружили ошибку в документации, пожалуйста, откройте issue или pull request в репозитории документации. Исправления фиксируются в данном журнале изменений.Ссылки
introduction/history-and-milestones— хронология протокола.security/audits— история аудитов.ray/protocol-fees— распределение комиссий протокола.reference/program-addresses— источник истины для Program ID.


