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.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Задача агрегатора — предоставить пользователю лучшую возможную цену на множестве пулов, возможно распределив единый вход через несколько маршрутов пулов, и выполнить это атомарно. На этой странице описаны специфические для Raydium части этой работы: обнаружение пулов, получение котировок и сборка транзакций.
Обнаружение пулов
Инвентарь пулов
Вам нужен полный список активных пулов Raydium для каждого продукта. Три варианта:- REST API (проще всего):
GET https://api-v3.raydium.io/pools/info/list?poolType=all&pageSize=1000&page=1возвращает пулы партиями по 1000. Пагинируйте, пока не получите все. Кэшируйте на 1–5 минут. - Сканирование on-chain:
getProgramAccountsна программах CPMM, CLMM и AMM v4, отфильтрованные по дискриминатору аккаунта состояния. Дает ~каждый активный пул за ~10 секунд RPC. Полезно, когда API недоступен или rate-limited. - Гибридный подход: используйте API как основной источник; запускайте ежедневное сканирование on-chain как проверку целостности. Команда обязуется поддерживать API полным, но пулы, созданные прямым CPI (без фронтенда), иногда отстают.
Поиск по паре монет
Для конкретной пары(mintA, mintB) используйте GET /pools/info/mint?mint1=...&mint2=...&poolType=all&sort=liquidity. Возвращает каждый пул на любом уровне комиссии и типе продукта. До ~10 результатов на пару — обычное дело для часто используемых монет; сортируйте по TVL и возьмите несколько лучших для маршрутизации.
Получение котировок
Математика котировок отличается по продуктам. Используйте чистые математические функции SDK, чтобы не переImplementировать:{ amountOut, fee, priceImpact, minAmountOut }. Для сравнения агрегаторов используйте amountOut (до slippage).
Свежесть кэша
Состояние пула устаревает быстро. Рекомендуемые целевые частоты обновления:| Тип пула | Частота обновления | Причина |
|---|---|---|
CPMM с <$100k TVL | <10s | Резервы меняются на каждой сделке. |
CPMM с >$10M TVL | 30–60s | Резервы доминирующие; малые сделки — шум. |
| CLMM | <30s | Границы тиков; одна большая сделка может переконфигурировать ликвидность. |
| AMM v4 | <30s | Движения на стороне OpenBook не отражаются в vault’ах. |
accountSubscribe) для каждого релевантного состояния пула. Это переворачивает модель с polling на push.
Коррекции Token-2022
Если какой-либо mint в маршруте имеет комиссию за передачу Token-2022, математика котировки должна скорректировать входы и выходы согласноalgorithms/token-2022-transfer-fees. SDK обрабатывает это, если poolInfo.mintA.extensions.transferFeeConfig заполнен. Проверьте поле .extensions перед доверием котировке.
Маршрутизация
Маршруты через один пул
Большинство маршрутов идут через один пул. Выберите пул с наибольшимamountOut. Если несколько близки по значению, разрешайте ничью по уровню комиссии (ниже лучше), затем по TVL (больше безопаснее).
Разделённая маршрутизация
Для больших сделок, где один пул имеет >5% ценового влияния, разделите по пулам. Простой жадный алгоритм:[(pool_A, 0.6), (pool_B, 0.3), (pool_C, 0.1)], который минимизирует совокупное влияние. Надлежащее решение выпуклой оптимизации (например, уравнивание предельных цен по пулам) на практике находится в пределах ~1% от жадного результата.
Многопрыжковые маршруты
USDC → RAY → SOL через два отдельных пула обычен, когда ни один прямой пул USDC-SOL не дает хорошей котировки (редко). Применяйте границы slippage на каждом прыжке; каждый прыжок обеспечивает свой собственный minAmountOut. Смотрите algorithms/slippage-and-price-impact.
Многопрыжок по одному пулу (например, два прыжка CLMM на SOL-USDC) всегда субоптимален в сравнении с одним прыжком — не генерируйте такие маршруты.
Сборка транзакций
Один прыжок, один пул
Используйте напрямуюraydium.trade.swap из SDK:
Разделённые и многопрыжковые маршруты
Композируйте ATA + инструкции вручную. Шаблон:Атомарность
Агрегаторы должны гарантировать атомарность: либо весь маршрут выполняется, либо ничего. Инструкции swap Raydium реверт наExceededSlippage, поэтому многопуловой маршрут, где один прыжок падает, вызывает откат всей транзакции. Бесплатно.
Исключение: если ваш маршрут идёт через Raydium + сторонний DEX, убедитесь, что этот DEX также имеет модель revert-on-slippage. Некоторые программы игнорируют границы slippage (редко).
Подводные камни
1. Устаревшие котировки
Между тем, как пользователь видит “Вы получите 125.43 RAY” и приземлением транзакции, резервы могут сдвинуться. Переполучите состояние пула непосредственно перед отправкой; переквотируйте; если новая котировка на >1% хуже, пауза и переподтверждение с пользователем.2. Чёрные списки пулов
Некоторые пулы Raydium — это токены мошенников с комиссиями передачи 99% или с не передаваемыми расширениями. REST API помечает их (см. полеtags); пропускайте любой пул, помеченный scam или honeypot. Запуск собственных проверок безопасности поверх тегов Raydium — благоразумно.
3. Требование observation-state на CLMM
CLMMSwapV2 принимает аккаунт observation_state. SDK заполняет его за вас; вручную построенные инструкции часто забывают, что вызывает откат программы с AccountNotFound. Всегда включайте его.
4. Таблицы поиска адресов
Raydium поддерживает публичные таблицы поиска для своих наиболее используемых аккаунтов (основные mint’ы, ID программ, AmmConfigs). Агрегаторы должны их потреблять — это экономит ~100 байт на транзакцию и позволяет большим маршрутам вмещаться в V0. Получение адресов LUT:5. Обработка перегрузки
Во время окон с высоким объёмом, транзакции могут сидеть в mempool несколько блоков. Агрессивный retry на TX expiry (не на revert — reverts детерминированы) рекомендуется. ОпцияsendAndConfirm SDK выполняет базовые retry’и; production-агрегаторы накладывают свою собственную логику (Jito bundles, мультиRPC трансляция) сверху.
Контрольный список
Перед запуском в production, проверьте:- Обнаружение пулов охватывает CPMM + CLMM + AMM v4 исчерпывающе.
- Котировки совпадают с собственной котировкой Raydium UI в пределах 1 basis point на нескольких тестовых сделках.
- Разделённая маршрутизация активируется для сделок >5% влияния на любом одном пуле.
- Priority fees согласованы с недавними комиссиями pool-program (смотрите
integration-guides/priority-fee-tuning). - Комиссии передачи Token-2022 вычислены и показаны пользователю.
- Транзакции откатываются чисто при превышении slippage.
- Логика retry различает tx expiry (retry) от revert (не retry).
Ссылки
integration-guides/routing-and-mev— защита от sandwich, bundles.integration-guides/priority-fee-tuning— размер инструкций compute-budget.sdk-api/rest-api— endpoints списков пулов.


