Перейти к основному содержанию
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →

Информация о версии

  • SDK: @raydium-io/raydium-sdk-v2@0.2.42-alpha
  • Сеть: mainnet-beta
  • ID программы маршрутизатора: routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS
  • Проверено: апрель 2026

Пример 1: маршрутизация на основе SDK

Источник: src/trade/routeSwap.ts Raydium SDK абстрагирует построение маршрутов. Используйте функции торговли SDK для составления многопрыжкового маршрута и его автоматического выполнения через маршрутизатор.

Настройка

Построение многопрыжкового свопа

Маршрутизация в @raydium-io/raydium-sdk-v2 доступна через raydium.tradeV2. Полный конец‑в‑конец процесс — выборка данных пула, вычисление маршрутов, ранжирование по выходу и построение транзакции своpa — показан ниже; это соответствует каноническому примеру в raydium-sdk-V2-demo/src/trade/routeSwap.ts.

Ожидаемое поведение

SDK обрабатывает:
  • Обнаружение маршрутов через AMM v4, CPMM, CLMM и Stable AMM.
  • Дериважию аккаунтов (состояния пулов, хранилища, аккаунты наблюдений, предварительное создание ATA).
  • Упаковку инструкций для программы маршрутизатора (Router), когда маршрут многопрыжковый, или прямой своп пула, когда один пул уже дает наилучшую цену.
  • Принудительное соблюдение slippage через параметр slippage на getAllRouteComputeAmountOut.
raydium.tradeV2.swap может вернуть более одной transaction — первая обычно инициализирует промежуточные ATA, а вторая выполняет сам своп. Всегда передавайте sequentially: true в execute(), чтобы они подтверждались по порядку.

Пример 2: построение необработанных инструкций (псевдокод в стиле Rust)

Если вам нужен больший контроль или вы создаете программу, которая использует CPI в маршрутизатор, постройте инструкции вручную. Пример ниже использует тег 8 (SwapBaseIn) — рекомендуемый текущий вариант — и маршрутизирует через принадлежащие пользователю ATA конца в конец.

Сценарий: USDC → SOL (CPMM) → mSOL (CPMM)

Шаг 1: дериважия ATA пользователя

Шаг 2: сбор аккаунтов для каждого прыжка

Прыжок 1 — это USDC/SOL на CPMM. Прыжок 2 — это SOL/mSOL на CPMM.

Шаг 3: построение инструкции

Шаг 4: отправка транзакции


Пример 3: обработка ошибок

Распространенные ошибки и способы их устранения:

ExceededSlippage

Выход был меньше minimum_amount_out. Повторите попытку с более высокой толерантностью скольжения или переоценіте маршрут.

SqrtPriceX64 (CLMM)

Цена прыжка CLMM выходила за границы limit_prices. Обновите границы и повторите попытку.

InvalidOwner

Промежуточный или выходящий ATA не принадлежит вызывающей стороне. Маршрутизатор проверяет собственность в каждом слоте; убедитесь, что каждый ATA, который вы передали, был выведен из кошелька пользователя (не из какого-либо другого полномочия).

Советы и лучшие практики

Предварительное создание промежуточных ATA

Перед маршрутизацией через новый промежуточный токен в первый раз создайте ATA пользователя, чтобы маршрут не прошел проверку:
Для wSOL конкретно предпочитаете CreateSyncNative (тег 5) — он создает ATA, передает SOL и синхронизирует в одной инструкции.

Цитирование перед выполнением

Всегда запрашивайте пулы и вычисляйте ожидаемый выход перед построением инструкции:

Используйте более новые варианты инструкций (8–9)

Теги 8 и 9 (SwapBaseIn и SwapBaseOut) более снисходительны к limit_prices. Предпочитайте их устаревшим вариантам, если вам не нужна проверка цены CLMM.

Куда дальше

Источники:
  • @raydium-io/raydium-sdk-v2 на npm
  • raydium-io/raydium-sdk-V2 (открытый исходный код)
  • raydium-io/raydium-sdk-V2-demo — официальные полнофункциональные демонстрации, включая routeSwap.ts
  • Источник программы маршрутизации AMM недоступен публично; проверьте ID программы по сравнению с прямым API и на цепочке байт-кодом