Перейти к основному содержанию
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Баннер версии. Все примеры ориентированы на @raydium-io/raydium-sdk-v2@0.2.42-alpha для Solana mainnet-beta, проверено в апреле 2026 г. ID программы: 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 (см. reference/program-addresses).
Создание новых пулов здесь не показано. Интерфейс Raydium больше не предлагает создание пулов AMM v4 — новые пары по умолчанию переходят на CPMM. Сама программа AMM v4 по-прежнему принимает Initialize2 в цепи; это просто не рекомендуемый путь. Примеры ниже охватывают операции с активными пулами, которые нужны каждому интегратору: swap, deposit, withdraw.

Настройка

Получение пула по ID

poolKeys — это структура, которую потребляют построители инструкций. Она содержит все учетные записи AMM v4 и OpenBook в порядке, ожидаемом программой.

Своп (base-in)

SDK маршрутизирует свопы AMM v4 через точки входа V2, которые не содержат учетные записи OpenBook. (После обновления в июле 2026 г. учетные записи маркета больше не проверяются даже на устаревшем пути v1.)

Своп (base-out)

Добавление ликвидности

fixedSide: "a" указывает SDK, что вы предоставили точное значение amountInA, а amountInB должно быть не более maxAnotherAmount. Ликвидность пула на книге рассчитывается перед пропорциональной математикой, поэтому коэффициент депозита соответствует самым свежим резервам.

Удаление ликвидности

Минимумы проскальзывания защищают от изменения состояния пула между вашей предварительной котировкой и временем приземления.

Настройка compute-unit / priority fee

Свопы AMM v4 требуют много вычислений, потому что каждая инструкция проверяет полное состояние OpenBook. Типичный своп использует 180k–250k CU в зависимости от того, сколько открытых ордеров нужно урегулировать на пути. Всегда передавайте лимит compute-unit:
Если вы опустите computeBudgetConfig, SDK может все еще использовать свое собственное значение по умолчанию; проверьте innerTransactions для подтверждения. См. integration-guides/priority-fee-tuning.

Прямой Rust CPI

Если вы должны вызвать CPI в AMM v4 из вашей собственной программы Anchor, вам нужно будет смоделировать список учетных записей SwapBaseIn дословно. Минимальный набросок:
AMM v4 не поставляется с крейтом Anchor для CPI. Набросок выше использует вручную построенную Instruction.
Набросок CPI выше использует устаревший макет v1 SwapBaseIn (тег 9, 17 учетных записей) для чтения/воспроизведения существующих транзакций. После обновления в июле 2026 г. учетные записи маркета принимаются, но игнорируются. Для нового кода предпочитайте SwapBaseInV2 / SwapBaseOutV2 (теги 16 / 17), которые полностью исключают учетные записи маркета (и amm_open_orders) — передавайте только 8 учетных записей: token_program, amm, amm_authority, два хранилища пула, две учетные записи токенов пользователя и user_owner.

Подводные камни

  • Неправильное количество учетных записей на свопах v1. Устаревшие SwapBaseIn / SwapBaseOut по-прежнему требуют полный список из 17 учетных записей (или 18) — несоответствие количества приводит к откату с WrongAccountsNumber. Содержимое учетных записей маркета больше не проверяется, но вы все равно должны занять их слоты. Предпочитайте точки входа V2, чтобы избежать этого.
  • Чтение сырых балансов хранилища. Резервы теперь только в хранилище; вычтите накопленный PnL (need_take_pnl_*). Котировка SDK или api-v3.raydium.io/pools/info/ids справляется с этим за вас.
  • Вызов удаленных инструкций. MonitorStep, MigrateToOpenBook, WithdrawSrm, SimulateInfo, AdminCancelOrders и устаревшие Initialize / PreInitialize теперь откатываются. Используйте Initialize2 для создания пула; нет крана для вызова.
  • Минты Token-2022. Не поддерживаются. Пул AMM v4 не может быть создан для минта Token-2022; любая пара Token-2022 должна быть на CPMM или CLMM.

Что дальше

Источники: