Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Баннер версии. Все примеры TypeScript ориентированы на
@raydium-io/raydium-sdk-v2@0.2.64-alpha; они были последний раз выполнены для 0.2.42-alpha (2026-04), а их сигнатуры вызовов перепроверены для исходного кода 0.2.64-alpha 09.09.2026 на Solana mainnet-beta. Скелет Rust CPI ориентирован на raydium-cp-swap в ветке chore/upgrade-anchor, Anchor 1.0.2 — master всё ещё использует 0.32.1. Идентификаторы программ получены из констант в reference/program-addresses.Предварительные требования
raydium-sdk-V2-demo/src/cpmm; ссылка на GitHub находится рядом с каждым разделом. Инициализация следует шаблону config.ts.template из репозитория примеров (источник):
Raydium — это фасад SDK, который используется во всех примерах ниже. Raydium.load асинхронен, потому что по умолчанию загружает список токенов; передайте disableLoadToken: true, чтобы пропустить эту загрузку. Проверка доступности функций уже пропущена, если вы не передадите disableFeatureCheck: false. Конфигурации комиссий загружаются лениво при первом использовании через raydium.api.getCpmmConfigs().
Создание пула 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
maximum_* и создаёт ATA при необходимости. raydium.cpmm.computePairAmount({ ... }) возвращает те же числа, если вам нужны они для предпросмотра UI.
Вывод ликвидности
Источник:src/cpmm/withdraw.ts
Сбор комиссий протокола/фонда/создателя
Источник:src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts
Сбор протокола и фонда остаётся защищённым авторитетом. Комиссии создателя имеют два пути: подписанный создателем CollectCreatorFee и аддитивный CollectCreatorFeePermissionless, который может вызвать любой плательщик, но который может передавать только на канонические ATA создателя. 0.2.64-alpha поставляется с построителями уровня модуля для обоих путей создателя:
Две инструкции создателя имеют разные дискриминаторы и макеты счетов — версия без разрешения
заменяет подписывающего создателя отдельным
payer и неподписывающим
creator. Используйте соответствующий построитель вместо ручного обмена счетами на другом.В SDK нет построителя для комиссий протокола или фонда (makeCollectProtocolFeeInstruction и
makeCollectFundFeeInstruction не существуют ни под каким именем) — это пути администратора, как и
CreateCreatorFeeShare / CloseCreatorFeeShare, которые также не имеют построителя. Построители инструкций низкого уровня, которые существуют, — это collectCpFeeInstruction,
makeCollectCreatorFeeInstruction и collectCreatorFeePermissionlessInInstruction.PoolState:
Скелет Rust CPI
Если вы хотите вызвать CPMM из собственной программы Anchor — например, хранилище, которое свопит от имени своих вкладчиков — контекст CPI выглядит так. Порядок счетов следуетproducts/cpmm/instructions.
CpiContext::new на CpiContext::new_with_signer и передайте ваши seeds.
Распространённые ошибки
Краткий контрольный список перед открытием тикета поддержки:- Отсортированные монеты. Если ваш выведённый PDA
poolStateне совпадает с пулом на цепи, вы, вероятно, забыли отсортировать монеты. - Устаревшая котировка 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 как часть многоскачкового пути.

