Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Информация о версии.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.42-alpha - Кластер: Solana
mainnet-beta - ID программы: см.
reference/program-addresses - Последняя проверка: 2026-04
package.json. Интерфейс кривой связи менялся между минорными релизами.Подготовка
Примеры здесь соответствуют файлам вraydium-sdk-V2-demo/src/launchpad. Инициализация следует шаблону репозитория демо config.ts.template:
Создание запуска
Источник:src/launchpad/createMint.ts (и createBonkMintApi.ts для варианта на основе API Bonk)
initialK— масштабирующий коэффициент для квадратичной кривой. Настройте его для достижения определённой цены открытия CPMM при выпуске. См.products/launchlab/bonding-curveдля вывода формулы.- SDK создаёт базовый mint, PDA метаданных и оба хранилища в одной транзакции. Если URI метаданных длинный, может превысить 1232 байта; в этом случае SDK разбивает на две транзакции.
- После
Initializeзапуск не торгуется доopenTime. УстановитеopenTimeна минуту-две вперёд, чтобы дать фронт-раннерам меньше шансов захватить первую покупку.
Получение состояния запуска
getLaunchById возвращает декодированный LaunchState плюс вычисленную долю «прогресса к выпуску» как Decimal.
Покупка — точный ввод котировки
Источник:src/launchpad/buy.ts
computeBuyBase зеркалирует on-chain решатель Ньютона (квадратичная кривая) или замкнутую форму CPMM-инверсии (curve_type 1). Используйте его для заполнения поля UI «Вы получите».
Покупка — точный вывод базы
ExceededSlippage, если кривая сдвинулась настолько, что требование котировки теперь превышает maximumQuoteIn.
Продажа
Источник:src/launchpad/sell.ts
base_sold на baseIn возвращает quote_out, равный интегрированной площади под кривой между base_sold − baseIn и base_sold, минус комиссия продажи.
Автоматический выпуск при пересечении порога покупкой
SDK встраивает инструкциюGraduate внутри транзакции buy*, когда обнаруживает, что состояние после покупки пересечёт порог:
Graduate не требует разрешения, любой (включая MEV-бота) может попытаться приземлить первый Graduate после пересечения порога — обычно через несколько секунд, а не минут. Первый приземлившийся просто платит аренду за счета пула CPMM; они не получают никакой другой выгоды.
Ручной Graduate
Если autoGraduate был отключен или транзакция пересечения порога не удалась, вы можете запустить выпуск отдельно:
NotAtThreshold, если quote_reserve_real < quote_reserve_target на момент отправки. Безопасно для повторных попыток — вторая попытка Graduate после успеха откатывается с NotActive.
Сбор комиссий создателя
Источник:src/launchpad/claimCreatorFee.ts (один mint) и collectAllCreatorFees.ts (пакетный)
Отслеживание запуска через его жизненный цикл
Собрав всё вместе, скрипт мониторинга может выглядеть так:Мониторинг конфигов и пулов через gRPC
Источник:src/grpc/launchpadPoolInfo.ts
Подписывается на программу LaunchLab через Yellowstone gRPC и логирует каждое обновление GlobalConfig и PoolState с программой токена каждого mint. Два фильтра datasize на одной подписке accounts разделяют два типа счётов, поэтому один поток охватывает оба.
Демо — это самый короткий правильный справочник для классификации mint’ов запуска, что выпуск Token-2022 quote-mint делает необходимым:
- Пулы классифицируются прямо из
PoolState.token_program_flag, декодируя бит0 для базового mint и бит1 для quote mint без выборки mint вообще. Проверка всего байта против0— что было достаточно, пока quote mint были только legacy — неправильно читает legacy базовый mint как Token-2022 всякий раз, когда quote mint является Token-2022. - Конфиги не могут быть классифицированы таким образом:
GlobalConfigхранит адрес своего quote mint и никакой флаг программы, поэтому демо читает владельца счёта mint один раз и кэширует его для каждого mint.
create против update выводится из собственных кэшей демо, инициализированных при запуске из getProgramAccounts; с отключённой инициализацией читайте «create» как «впервые видно на этом потоке».
Доступ gRPC не является частью общедоступной поверхности RPC — см. src/grpc/README.md репозитория демо.
Rust CPI
Вызов LaunchLab из вашей собственной программы Anchor редок (большинство интеграций запусков только на стороне TS). Если вы это делаете, программа поставляется с крейтом Anchorraydium_launchlab с cpi::accounts::Buy, cpi::accounts::Sell и т. д. — паттерн зеркалирует примеры CPI CPMM / CLMM. См. sdk-api/rust-cpi для обобщённого шаблона, когда этот сайт будет заполнен.
Подводные камни
- Арифметика разделения комиссии off-by-one. Если
total_shareне равен ровноlp_share + creator_share + protocol_share,Initializeоткатывается сInvalidFeeShares. УстановитеtotalShareравным сумме. - Использование недопустимого quote mint.
launch_config.allowed_quote_mints— это фиксированный список; передача любого другого mint откатывается. Сначала проверьте сraydium.launchpad.getConfig(). - Размер метаданных. Длинные строки
uriвыводят Metaplex CPI за пределы бюджета. Держитеuriпод ~200 символов — большинство размещённых на CDN JSON метаданных легко подходят. - Гонка выпуска. Автоматизированные боты мониторят
quote_reserve_realи фронт-раннятGraduateв пределах слота или двух после пересечения порога. Это безвредно — это только стоит им аренды — но это означает, что ваш UI должен рассматривать переходыstatusкак быстрые события.
Что дальше
products/launchlab/bonding-curve— математика кривой.products/cpmm/code-demos— что делать с полученным пулом.user-flows/launch-token-launchlab— полное руководство по запуску токена, включая off-chain шаги.
- Raydium SDK v2
- Исходный код программы Raydium LaunchLab

