Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Требования
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
Эти инструкции ограничены администратором или создателем и обычно вызываются подписантом, которого контролирует мультиподпись Raydium или создатель пула. SDK предоставляет их как простые построители:
PoolState:
Скелет Rust CPI
Если вы хотите вызвать CPMM из собственной программы Anchor — например, хранилища, которое выполняет свопы от имени своих вкладчиков — контекст CPI выглядит так. Порядок счетов следуетproducts/cpmm/instructions.
CpiContext::new на CpiContext::new_with_signer и передайте ваши seed’ы.
Частые ошибки
Краткий контрольный список перед открытием тикета поддержки:- Отсортированные миты. Если ваш полученный
poolStatePDA не совпадает с пулом на цепи, вы, вероятно, забыли отсортировать миты. - Устаревшая котировка API. Никогда не передавайте значение резерва из
api-v3.raydium.ioвCurveCalculator.swap. Получайте с RPC. - Неправильная программа токенов. Хранилище мита Token-2022 владеется программой Token-2022, а не SPL Token. Всегда используйте поля
token_0_program/token_1_programпула. - Проскальзывание недостаточно для мит с комиссией за передачу. Если одна из сторон пула является мита 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 как часть многошагового пути.

