Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Информация о версии.
  • SDK: @raydium-io/raydium-sdk-v2@0.2.42-alpha
  • Кластер: Solana mainnet-beta
  • ID программы: см. reference/program-addresses
  • Последняя проверка: 2026-04
Зафиксируйте версию SDK в вашем package.json. Интерфейс кривой связи менялся между минорными релизами.

Подготовка

Примеры здесь соответствуют файлам в raydium-sdk-V2-demo/src/launchpad. Инициализация следует шаблону репозитория демо config.ts.template:

Создание запуска

Источник: src/launchpad/createMint.tscreateBonkMintApi.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 «Вы получите».

Покупка — точный вывод базы

Полезно для UI «купить ровно X токенов». Отклоняет с 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 (пакетный)
Переводит накопленную сумму счётчика комиссии создателя на ATA создателя на mint котировки. Можно вызывать до или после выпуска; используйте периодически, а не ждите, пока накопится огромный баланс.

Отслеживание запуска через его жизненный цикл

Собрав всё вместе, скрипт мониторинга может выглядеть так:

Мониторинг конфигов и пулов через 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). Если вы это делаете, программа поставляется с крейтом Anchor raydium_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 как быстрые события.

Что дальше

Источники:
  • Raydium SDK v2
  • Исходный код программы Raydium LaunchLab