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.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Роутер не выполняет расчёты
Программа маршрутизации не реализует никакую логику расчёта цен. Это чистый оркестратор: он принимает маршрут, передаёт аккаунты дочерним программам и соединяет потоки токенов. Каждый хоп использует кривую своего пула:- AMM v4 хопы: используют формулу константного произведения (
x · y = k) с гибридным ценообразованием OpenBook. См.products/amm-v4/math. - CPMM хопы: используют формулу константного произведения с настраиваемыми комиссионными уровнями. См.
products/cpmm/math. - CLMM хопы: используют математику сконцентрированной ликвидности. См.
algorithms/clmm-math. - Stable хопы: используют кривую стабильного своппа для взаимозаменяемых активов. См.
products/stable/math.
- Вызове инструкции swap каждого пула через CPI.
- Сборе выходного количества.
- Передаче его как входного количества для следующего хопа.
- Проверке финального выхода относительно лимита проскальзывания вызывающей стороны.
Накопление проскальзывания
На маршруте с несколькими хопами проскальзывание на каждом хопе накапливается. Небольшое проскальзывание на хопе 1 становится бо́льшим на хопе 2, потому что объём, поступающий на хоп 2, уже снижен. Пример:minimum_amount_out, роутер проверяет ваш финальный выход относительно этого глобального лимита. Каждый хоп также проверяет свой своп относительно своей локальной комиссионной структуры, но роутер не пересчитывает маршрут по ходу — вы должны предварительно вычислить маршрут и заложить достаточный допуск проскальзывания.
CLMM хопы и limit_prices
Для каждого хопа в пул CLMM роутер проверяет, что текущаяsqrt_price_x64 пула находится в пределах указанных границ. Границы передаются как VecDeque<u128> под названием limit_prices:
- Одна
sqrt_price_x64на каждый CLMM хоп в маршруте. sqrt_price_x64— это представление цены на основе тиков, используемое CLMM. См.algorithms/clmm-mathдля определения.- Роутер проверяет:
Варианты инструкций и limit_prices
-
SwapBaseInWithUserAccount,SwapBaseOutWithUserAccount(Legacy, теги 0 и 1): VecDequelimit_pricesобязателен. Пустая дека отклоняется с ошибкой, если какой-либо хоп является CLMM пулом. Вы должны предоставить одну цену на каждый CLMM хоп по порядку. -
SwapBaseIn,SwapBaseOut(Current, теги 8 и 9): VecDequelimit_pricesопционален. Пустая дека игнорируется молча; проверка цены не выполняется. Новый код должен использовать эти инструкции.
Построение limit_prices
Для маршрута с M CLMM хопами дека должна содержать ровно M записей. Упорядочите их по хопам:Когда проверять limit_prices
sqrt_price_x64 — это снимок текущей цены пула. Она постоянно меняется по мере выполнения свопов. Вы должны:
- Получить текущее состояние пула из сети.
- Вычислить приемлемые границы (например, ±0.5% от текущей цены).
- Закодировать эти границы в
limit_prices. - Включить границы в вашу инструкцию роутера.
Обработка комиссий
Каждый пул берёт свою комиссию согласно своей конфигурации:- AMM v4: 0.25% (фиксированная) разделена между LP, протоколом и фондом.
- CPMM: настраиваемая для каждого
AmmConfig(по умолчанию 0.25%, разделение зависит от уровня). - CLMM: настраиваемая для каждого пула, взимается с входного количества.
- Stable: как AMM v4, 0.25% разделена.
products/amm-v4/feesproducts/cpmm/feesproducts/clmm/fees(если доступно)products/stable/fees(если доступно)
Пример учёта на нескольких хопах
Предположим, вы маршрутизируете USDC → SOL → STEP через два пула константного произведения, каждый с комиссией 0.25%:Соображения точности
Как все программы Solana, роутер использует целочисленную арифметику:- Все количества —
u64(lamports или наименьшие единицы токенов). - Расчёты кривых используют
u128промежуточные значения где необходимо, чтобы избежать переполнения. - Соглашения об округлении зависят от дочерней программы. Роутер не переокругляет.
Что дальше
products/amm-v4/math— математика константного произведения.products/cpmm/math— CPMM константное произведение с Token-2022.algorithms/clmm-math— ценообразование сконцентрированной ликвидности.products/stable/math— кривая стабильного своппа.products/routing/code-demos— примеры расчёта цены перед маршрутизацией.


