Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Информация о версии. Все примеры на TypeScript используют
@raydium-io/raydium-sdk-v2@0.2.42-alpha на Solana mainnet-beta, проверено в апреле 2026 г. Скелет Rust CPI использует raydium-cp-swap на ветке master, Anchor 0.30.x. Идентификаторы программ загружаются из констант в reference/program-addresses.Предварительные требования
raydium-sdk-V2-demo/src/cpmm; ссылка на GitHub находится рядом с каждым разделом. Инициализация следует шаблону config.ts.template из репозитория демонстраций (источник):
Raydium — это фасад SDK. Каждый пример ниже использует его. Он лениво загружает списки токенов и конфигурации комиссий из api-v3.raydium.io; вы можете инициализировать его собственными данными в автономных окружениях.
Создание пула CPMM
Источник:src/cpmm/createCpmmPool.ts
- Сортирует монеты в порядок token0/token1 перед выведением PDA.
- Платит одноразовую
create_pool_feeнаpoolFeeAccount. - Создает связанные токен-счета вызывающей стороны, если они отсутствуют.
- Выбирает правильную программу токенов (SPL Token или Token-2022) для каждой стороны.
Своп (base-input)
Источник:src/cpmm/swap.ts
getPoolInfoFromRpc. Не используйте котировку из api-v3.raydium.io для транзакции, которую вы собираетесь подписать — котировка, которая на один блок устарела, может привести к ExceededSlippage при посадке.
Своп (base-output)
Источник:src/cpmm/swapBaseOut.ts
Депозит ликвидности
Источник:src/cpmm/deposit.ts
lpAmount в needed_token_0 и needed_token_1, используя текущие резервы пула, увеличивает каждый на 1 + slippage для аргументов maximum_* инструкции и создает ATA при необходимости.
Вывод ликвидности
Источник:src/cpmm/withdraw.ts
Сбор комиссий протокола/фонда/создателя
Источник:src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts
Сбор протокола и фонда остается защищенным полномочиями. Комиссии создателя имеют два пути: существующий подписанный создателем CollectCreatorFee и дополнительный CollectCreatorFeePermissionless, который может вызвать любой плательщик, но который может передавать только на канонические ATA создателя. Закрепленный SDK предоставляет существующие сырые построители:
PoolState:
Скелет Rust CPI
Если вы хотите вызвать CPMM из собственной программы Anchor — например, хранилища, которое выполняет своп от имени своих вкладчиков — контекст CPI выглядит так. Порядок счетов следуетproducts/cpmm/instructions.
CpiContext::new на CpiContext::new_with_signer и передайте ваши семена.
Распространенные ошибки
Краткий контрольный список перед открытием тикета поддержки:- Отсортированные монеты. Если ваш выведенный PDA
poolStateне совпадает с пулом в цепи, вы, вероятно, забыли отсортировать монеты. - Устаревшая котировка API. Никогда не передавайте значение резерва из
api-v3.raydium.ioвCurveCalculator.swap. Загружайте из RPC. - Неправильная программа токенов. Хранилище монеты Token-2022 принадлежит программе Token-2022, а не SPL Token. Всегда используйте поля
token_0_program/token_1_programпула. - Slippage недостаточно для монет с комиссией за передачу. Если одна из сторон пула — это монета Token-2022 с комиссией за передачу, ваш
minimum_amount_outдолжен быть номинирован в том, что пользователь фактически получает, а не в том, что отправляет хранилище. NotApprovedпри своп. ПроверьтеPoolState.status— администратор может приостановить своп на этом пуле. См.products/cpmm/instructionsдля маски статуса.
Что дальше
sdk-api/typescript-sdk— полная справка SDK.sdk-api/rest-api— конечные точки котировок и метаданных пула.user-flows/create-cpmm-pool— пошаговое описание того же потока без кода.integration-guides/aggregator— если вы маршрутизируете CPMM как часть многоскачкового пути.

