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 Routing упаковывает многошаговые свопы в одну on-chain транзакцию, которая соединяет ликвидность через пулы. Вы предоставляете маршрут (список пулов и промежуточных mint’ов) и одну инструкцию с параметрами slippage; маршрутизатор выполняет все N шагов по порядку, перемещая вывод из одного пула на ввод следующего. Отдельная логика on-chain маршрутизатора не требуется для расчёта цены — каждый шаг обрабатывает комиссию и кривую через собственную программу пула via CPI — но маршрутизатор управляет передачей аккаунтов и движением токенов.Зачем нужна отдельная программа маршрутизации?
Клиенты Raydium и агрегаторы всегда могут собирать многошаговые свопы на стороне клиента без использования маршрутизатора: создать N инструкций swap (по одной на пул) и отправить их в одной транзакции. Почему же существует отдельная программа маршрутизации?Причины использовать маршрутизатор
- CPI из других программ. Если ваша программа должна вызвать маршрут как часть более крупной транзакции (например, менеджер ликвидности, который обменивает комиссии на целевой токен), CPI в маршрутизатор чище, чем собирание N дочерних CPI и управление всеми их аккаунтами в контракте.
- Атомарное состояние аккаунтов. Список аккаунтов каждого шага валидируется в одном контексте инструкции. Если состояние промежуточного пула повреждено или проверка лимитной цены не пройдёт, весь маршрут полностью отменяется без частичного исполнения.
- Единственная инструкция составления. SDK и фронтенды могут представлять многошаговый маршрут как одну логическую операцию, а не как N отдельных инструкций, которые случайно идут подряд.
Stitching на стороне клиента — всё ещё стандарт
Для большинства приложений создание отдельных инструкцийSwap для каждого пула и их отправка по порядку проще, более комбинируема и одинаково валидна. Методы SDK Raydium вроде Trade.makeSwapTransaction делают именно это для большинства маршрутов.
Маршрутизатор — альтернатива, не замена. Используйте его когда:
- вы реализуете программу, которой нужна маршрутизация как часть большей атомарной операции;
- вы строите агрегатор, который хочет иметь одну операцию «отправить этот маршрут».
Как это работает
Инструкция маршрутизатора содержит:- Аргументы swap: точный ввод (
amount_in,minimum_amount_out) или точный вывод (maximum_amount_in,amount_out). - Спецификация маршрута: список
program_id+ дочерних аккаунтов программы для каждого шага по порядку. Маршрутизатор читает первый аккаунт в каждой группе шагов, чтобы определить, какую программу вызвать. - Лимитные цены (для CLMM):
VecDeque<u128>границsqrt_price_x64. Используется только для шагов в CLMM пулы; пустой deque является ошибкой для старых вариантов инструкции.
- Выполняет первый шаг: переводит
amount_in(или вычисляет требуемый ввод для точного вывода) на входной vault первого пула, вызывает swap этого пула и собирает вывод. - Соединяет последующие шаги: для каждого шага N использует вывод из шага N−1 как ввод для шага N.
- Обеспечивает slippage: на каждом CLMM шаге проверяет
sqrt_priceпротив соответствующегоlimit_price; на последнем шаге проверяет общий вывод против глобальногоminimum_amount_out.
Делегирование расчёта цен и комиссий
Маршрутизатор не вычисляет цены сам. Каждый шаг делегирует кривую дочерней программе:- AMM v4: использует формулу постоянного произведения с гибридным ценообразованием OpenBook.
- CPMM: использует формулу постоянного произведения с настроенным уровнем комиссии.
- CLMM: использует математику концентрированной ликвидности с ценообразованием на основе тиков.
- Stable: использует кривую stable-swap для однородных токенов.
Когда избегать маршрутизатора
- Малое количество шагов (1–2 шага). Накладные расходы на передачу аккаунтов минимальны; просто используйте две отдельные инструкции swap.
- Пулы не от Raydium. Маршрутизатор знает только о четырёх типах пулов Raydium. Для маршрутов, пересекающих внешние программы, собирайте инструкции на стороне клиента.
- Условная маршрутизация. Если вам нужно ветвиться по ценам или состояниям пулов во время маршрута, on-chain маршрутизация менее гибка чем клиентская композиция.
Ментальная модель
Думайте о маршрутизаторе как об утилите упаковки транзакций. Он берёт спецификацию вашего маршрута и упаковывает её в одну инструкцию, одну транзакцию, один compute budget. Каждый шаг внутренне CPI в свою программу пула и обрабатывает математику кривой там. Работа маршрутизатора — правильно передавать аккаунты, перемещать токены между шагами и проверять slippage.Что дальше
products/routing/accounts— PDA власти маршрута и паттерн общего аккаунта.products/routing/instructions— полный API инструкций (все 10 вариантов).products/routing/code-demos— примеры построения маршрутов на TypeScript и чистом Rust.integration-guides/routing-and-mev— более широкая стратегия многошаговой маршрутизации.


