Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Баннер версии. Все примеры ориентированы на @raydium-io/raydium-sdk-v2@0.2.64-alpha для Solana mainnet-beta, проверено 2026-09-09 — каждое имя построителя, имя параметра и тип параметра ниже сверены с исходным кодом этого релиза и с raydium-sdk-V2-demo/src/amm. ID программы: 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 (см. reference/program-addresses).Две ловушки, на которые попадается большинство первых интеграций: slippage у computeAmountOut — это обычное число (0.005 = 0.5%), а не Percent; и liquidity.swap требует inputMint в виде строки base58.Создание новых пулов здесь не показано. Интерфейс Raydium больше не предлагает создание пулов AMM v4 — новые пары по умолчанию идут в CPMM. Сама программа AMM v4 по-прежнему принимает Initialize2 в цепи; просто это не рекомендуемый путь. Примеры ниже покрывают операции с живыми пулами, которые по-прежнему нужны каждому интегратору: своп, депозит, вывод.
Создание новых пулов здесь не показано. Интерфейс Raydium больше не предлагает создание пулов AMM v4 — новые пары по умолчанию переходят на CPMM. Сама программа AMM v4 по-прежнему принимает Initialize2 в цепи; это просто не рекомендуемый путь. Примеры ниже охватывают операции с активными пулами, которые нужны каждому интегратору: swap, deposit, withdraw.

Настройка

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

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

Своп (base-in)

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

Своп (base-out)

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

fixedSide: "a" указывает SDK, что вы предоставили точное значение amountInA, а amountInB должно быть не более maxAnotherAmount. Пропорциональная математика считается от балансов хранилищ минус накопленный PnL — никакого on-book компонента, который нужно было бы сначала урегулировать, больше нет.

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

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

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

После удаления OpenBook своп AMM v4 больше не проверяет никакое состояние маркета, поэтому V1 SwapBaseIn заметно дешевле, чем раньше, — а SwapBaseInV2 (8 учётных записей, без заглушек маркета) ещё дешевле. Измеряйте свой собственный путь, а не планируйте бюджет по историческим цифрам, и всегда передавайте явный лимит compute-unit:
Если вы опустите computeBudgetConfig, SDK может всё ещё использовать своё собственное значение по умолчанию; проверьте возвращённую transaction для подтверждения. См. 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.

Что дальше

Источники: