Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Баннер версии.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.64-alpha - Кластер: Solana
mainnet-beta - ID программы: см.
reference/program-addresses - Последняя проверка: 2026-09-09 для SDK
0.2.64-alpha,raydium-sdk-V2-demo/src/launchpadи исходного кода программыraydium-launch
package.json. Интерфейс кривой связи менялся между минорными версиями.Настройка
Примеры здесь соответствуют файлам вraydium-sdk-V2-demo/src/launchpad. Инициализация следует config.ts.template из репозитория примеров:
Создание запуска
Источник:src/launchpad/createMint.ts (и createBonkMintApi.ts для варианта на основе API Bonk)
Большинство экономических параметров запуска не передаются как аргументы — они берутся из GlobalConfig, который вы привязываете через configId, а SDK заполняет остальное из параметров API по умолчанию. Вы передаёте идентификатор монеты, конфигурацию для привязки и (опционально) первую покупку:
- Нет аргументов
curveType,graduationFractionBps,initialK,quoteMint,openTime,feesилиpostGraduationLpPolicy. Форма кривой и quote mint — это свойстваGlobalConfig, который вы привязываете; ставки комиссий находятся наGlobalConfigиPlatformConfig; утилизация LP при выпуске — это параметрPlatformConfig. См.products/launchlab/instructionsдля точного списка того, что принимаетInitializeV2. symbolдлиннее 10 символов и пустойuriотклоняются на клиенте перед любым RPC.- Передача
transferFeeExtensionParamsпереключает builder наInitializeWithToken2022и принудительно устанавливаетmigrateTypeв"cpmm". - Builder возвращает массив
transactions;createOnly: falseдобавляет транзакцию первой покупки. Всегда используйтеexecute({ sequentially: true })— монета должна существовать перед тем, как покупка будет выполнена.
Получение состояния запуска
Источник:src/launchpad/poolInfo.ts
Нет getLaunchById. ID пула — это PDA от (programId, mintA, mintB), и getRpcPoolInfo возвращает декодированный PoolState с привязанным configInfo:
getRpcPoolsInfo({ poolIdList }) — это пакетная форма и возвращает poolInfoMap, индексированную по ID пула — используйте её для представлений портфеля вместо цикла. Если вы хотите декодировать сырые аккаунты самостоятельно, LaunchpadPool.decode и LaunchpadConfig.decode экспортируются.
Покупка — точное количество quote
Источник:src/launchpad/buy.ts
Вспомогательная функция для оффчейн-котировки — это Curve.buyExactIn, статический метод на экспортированном классе Curve — не метод на raydium.launchpad. Builder транзакции — это buyToken. Обоим нужны ставки комиссий платформы, которые находятся на отдельном аккаунте PlatformConfig:
minMintAAmount явно вместо slippage; пропустите оба и SDK вычислит границу из живых RPC данных. shareFeeRate не должен превышать poolInfo.configInfo.maxShareFeeRate, и он применяется только когда вы также передаёте shareFeeReceiver.
Покупка — точное количество базовой монеты
Builder — этоbuyTokenExactOut, и аргументы количества — это outAmount (базовая монета, которую вы хотите) и maxBuyAmount (quote, который вы потратите максимум). Curve.buyExactOut({ poolInfo, amountA, ... }) — это соответствующий оффчейн-превью.
outAmount равный нулю на клиенте, и программа откатывает, если кривая сдвинулась настолько, что требование котировки превышает maxBuyAmount.
Продажа
Источник:src/launchpad/sell.ts
Builder — это sellToken (sellTokenExactOut для варианта с точным выходом quote), с sellAmount и опциональным minAmountB. Curve.sellExactIn({ poolInfo, amountA, ... }) показывает превью.
real_a на sellAmount возвращает quote_out, равный интегрированной площади под кривой между real_a − sellAmount и real_a, минус комиссия продажи. sellAmount должен быть больше нуля — builder отклоняет ноль перед любым RPC.
Выпуск
Эти кошельки управляются cranком выпуска Raydium, поэтому на практике миграция происходит в течение нескольких секунд после пересечения порога, независимо от того, кто сделал финальную покупку. Со стороны интегратора единственное, что нужно делать — это рассматривать переход статуса как быстрое событие: опрашивайтеgetRpcPoolInfo (или подписывайтесь через gRPC, ниже) и переключайте ваш UI с кривой на результирующий пул CPMM, когда status меняется.
См. products/launchlab/instructions для списков аккаунтов, комиссии миграции и того, как LP разделяется при выпуске.
Сбор комиссий создателя
Источник:src/launchpad/claimCreatorFee.ts (одна монета) и collectAllCreatorFees.ts (пакетная)
Метод — это claimCreatorFee (и claimMultipleCreatorFee для пакетной формы). Он индексируется по quote mint, а не по запуску — один вызов собирает накопленные комиссии создателя подписывающего в этой монете по всем его запускам:
claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee.
Отслеживание запуска через его жизненный цикл
Собирая всё вместе, скрипт мониторинга может выглядеть так:getRpcPoolInfo с интервалом 10 секунд подходит для одного запуска. Для индексера используйте вместо этого подписку gRPC ниже — getRpcPoolsInfo({ poolIdList }) пакетирует, но опрос сотен пулов всё равно сжигает RPC кредиты без пользы.
Наблюдение за конфигами и пулами через gRPC
Источник:src/grpc/launchpadPoolInfo.ts
Подписывается на программу LaunchLab через Yellowstone gRPC и логирует каждое обновление GlobalConfig и PoolState с программой токена каждой монеты. Два фильтра datasize на одной подписке accounts разделяют два типа аккаунтов, поэтому один поток охватывает оба.
Демонстрация — это самая короткая правильная ссылка для классификации монет запуска, что выпуск Token-2022 quote-mint делает необходимым:
- Пулы классифицируются прямо из
PoolState.token_program_flag, декодируя бит0 для базовой монеты и бит1 для quote монеты без выборки монеты вообще. Проверка всего байта против0— что было достаточно, пока quote монеты были только legacy — неправильно интерпретирует legacy базовую монету как Token-2022 всякий раз, когда quote монета это Token-2022. - Конфиги не могут быть классифицированы таким образом:
GlobalConfigхранит адрес своей quote монеты и никакой флаг программы, поэтому демонстрация один раз читает владельца аккаунта монеты и кэширует его по монете.
create против update выводится из собственных кэшей демонстрации, инициализированных при запуске из getProgramAccounts; с отключённой инициализацией читайте “create” как “впервые видно на этом потоке”.
Доступ gRPC не является частью публичной поверхности RPC — см. src/grpc/README.md репозитория примеров.
Rust CPI
Вызов LaunchLab из вашей собственной программы Anchor редок (большинство интеграций запусков только на стороне TS). Если вы это делаете:- Крейт — это
raydium-launchpad(имя libraydium_launchpad), версия0.2.0, и он действительно предоставляет функциюcpi. Нетraydium_launchlab. - Он не опубликован на crates.io — зависит от него по git-ревизии, так же как другие крейты программ Raydium.
- Точки входа CPI названы в честь инструкций на цепи, а не методов TypeScript SDK:
buy_exact_in,buy_exact_out,sell_exact_in,sell_exact_out,claim_creator_fee,create_vesting_account,claim_vested_token.migrate_to_amm/migrate_to_cpswapограничены подписывающим кошельками миграцииGlobalConfigи не вызываются из программы интегратора.
sdk-api/rust-cpi для правил фиксации крейта — в частности разделение версии Anchor, которое определяет, может ли один крейт вызывать CPI как в LaunchLab, так и в CLMM.
Подводные камни
- Путаница между названиями инструкций на цепи и методами SDK. Программа имеет
buy_exact_in/sell_exact_in; SDK имеетbuyToken/sellToken.buyExactInиsellExactInсуществуют только как статические методы наCurve, и они вычисляют котировку — они не строят транзакцию. - Забывание
extraSigners.createLaunchpadсоздаёт базовую монету из keypair, который вы генерируете, поэтому этот keypair должен подписать. ПропуститеextraSigners: [pair]и транзакция не пройдёт проверку подписи. - Не выбор quote mint. Вы его не передаёте. Quote mint — это свойство
GlobalConfig, который вы привязываете черезconfigId—getPdaLaunchpadConfigId(programId, quoteMint, curveType, index). Для запуска против другого quote mint привяжите другой конфиг;raydium.api.fetchLaunchConfigs()перечисляет доступные с их параметрами по умолчанию. - Размер метаданных. Длинные строки
uriвыталкивают Metaplex CPI за бюджет. Держитеuriпод ~200 символов — большинство размещённых на CDN JSON метаданных легко подходят.symbolжёстко ограничен 10 символами. - Рассмотрение выпуска как гонки, в которую вы можете вступить. Это не так — см. предупреждение выше. Ваш UI всё равно должен рассматривать переходы
statusкак быстрые события, потому что crank Raydium приземляет миграцию в течение нескольких секунд после пересечения порога.
Что дальше
products/launchlab/bonding-curve— математика кривой.products/cpmm/code-demos— что делать с результирующим пулом.user-flows/launch-token-launchlab— полное руководство по запуску токена, включая оффчейн-шаги.
- Raydium SDK v2
- Исходный код программы Raydium LaunchLab

