Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
LaunchLab предоставляет компактный набор инструкций: шесть пользовательских вызовов плюс несколько примитивов администратора. SDK оборачивает все из них; эта страница документирует сырую поверхность для агрегаторов, инструментов мониторинга и программ, которым нужен CPI.
Инвентарь инструкций
Разделение “ExactIn/ExactOut” отражает
SwapBaseInput / SwapBaseOutput CPMM — в цепи это отдельные дискриминаторы инструкций с немного отличающимся округлением.
Выбор пути выпуска. Каждый новый вызов Initialize, InitializeV2 и InitializeWithToken2022 должен установить migrate_type = 1 (CPSWAP). Любая попытка инициализировать новый пул, привязанный к AMM v4, возвращает MigrateTypeNotMatch. amm_creator_fee_on только выбирает, применяется ли результирующая комиссия создателя CPMM к токену котировки или обоим токенам; это не выбирает целевую программу.
MigrateToAmm остаётся вызываемым для существующего PoolState, который был инициализирован с migrate_type = 0 до этого ограничения. Выпуск не переписывает существующее состояние пула и не удаляет устаревшую инструкцию.
Initialize
Создание нового запуска.
Аргументы
Предусловия
quote_mint ∈ launch_config.allowed_quote_mints.base_supply_graduation ≤ base_supply_max.- Параметры комиссии проходят проверки
launch_config.max_*_fee_rate. open_time ≥ now − slop(SDK требует≥ now; программа допускает небольшое отставание по времени).curve_typeраспознан.
base_mintимеетsupply = base_supply_max, всё вbase_vault.base_mint.mint_authority = launch_authority,freeze_authority = None.LaunchStateинициализирован сstatus = Active,base_sold = 0,quote_reserve_real = 0.quote_reserve_targetвычислен из параметров кривой +base_supply_graduation+buy_numerator(приблизительно).
InvalidQuoteMint, FeeRateTooHigh, InvalidCurveParams, MathOverflow.
Buy (канонический вариант: BuyExactIn)
Пользователь предоставляет фиксированный quote_in; кривая вычисляет base_out.
Аргументы
Предусловия
launch_state.status == Active.now ≥ open_time.user_quote_ata.balance ≥ quote_in.quote_in > 0.
- Разделить
quote_inнаquote_in_after_feeи части комиссии. - Решить кривую методом Ньютона для
base_outс учётом пост-комиссионной котировки. require(base_out ≥ minimum_base_out)иначе вернутьExceededSlippage.- Переместить
quote_inпользователь → хранилище. Переместитьbase_outхранилище → пользователь. - Обновить
base_sold += base_out,quote_reserve_real += quote_in_after_fee × (lp_share / total_share). - Обновить счётчики комиссий (
protocol_fees_quote,creator_fees_quote). state_data.num_buys += 1.- Если
quote_reserve_real ≥ quote_reserve_targetпосле обновления, SDK обычно цепляет инструкциюGraduateв той же транзакции. Программа не выполняет автоматический выпуск внутриBuy— требуется последующийGraduate.
BuyExactOut
Пользователь указывает точный base_out; программа вычисляет quote_in.
Аргументы
BuyExactIn. Использует замкнутую форму квадратичного интеграла (или обратный CPMM для curve_type 1) вместо итерации Ньютона.
Sell / SellExactIn / SellExactOut
Зеркало Buy. Пользователь возвращает base_in кривой и получает quote_out. Комиссия вычитается из quote_out, поэтому пользователь получает меньше, чем сырые интегрированные доходы.
Предусловия —
user_base_ata.balance ≥ base_in.- Продажа не может снизить
base_soldниже 0 (избыточно с учётом согласованного учёта). - Запуск
Active.
Buy. base_sold уменьшается, quote_reserve_real уменьшается. Комиссии по-прежнему начисляются.
MigrateToAmm / MigrateToCpswap
Выпуск запуска в торгуемый пул после того, как кривая достигла total_quote_fund_raising. Новые запуски только CPMM. MigrateToAmm сохраняется для существующих пулов, чьё сохранённое migrate_type равно 0.
Кто подписывает
MigrateToAmm—migrate_to_amm_wallet, записанный на привязкеGlobalConfig.MigrateToCpswap—migrate_to_cpswap_wallet, записанный на привязкеGlobalConfig.
MigrateToAmm принимает три (в основном параметры рынка OpenBook, которые программа передаёт в AMM v4):
MigrateToCpswap не принимает никаких.
Эффект (общий для обоих)
- Проверить
pool_state.status == Migrate(т.е.quote_reserve_targetбыл достигнут). Иначе вернутьPoolMigrated(статус ужеMigrated) илиPoolFunding(всё ещё в финансировании). - Проверить
pool_state.migrate_typeсоответствует инструкции (0для AMM,1для CPMM). Иначе вернутьMigrateTypeNotMatch. - Вычислить резервы после выпуска:
base_amount_out = base_vault.amount − vesting_schedule.total_locked_amountquote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
- CPI в целевую программу (
AMM v4 Initialize2илиCPMM InitializeWithPermission) с этими резервами для создания пула после выпуска. - Для миграций CPMM, выполненных после обновления 2026-08-17, объединить
platform_scale + creator_scaleв одну заблокированную долю LP, принадлежащую платформе, и выпустить максимум один Fee Key NFT вplatform_nft_wallet. Сжечь остатокburn_scale. До обновленияcreator_scaleбыл заблокирован отдельно и его Fee Key перешёл создателю токена. Завершённые исторические миграции не изменяются. Для устаревшего выпуска AMM v4 распределение LP следует существующему потоку этой инструкции. - Отозвать
base_mint.mint_authority(установить наNone). - Переключить
pool_state.status = Migrated, установитьvesting_schedule.start_time = block_time + cliff_period.
BuyExactIn, BuyExactOut, SellExactIn, SellExactOut будут отклонены с этого момента с PoolMigrated. Результирующий пул AMM канонический и торгуется как любой другой пул AMM v4 / CPMM.
Частые ошибки — PoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.
Оставшиеся аккаунты миграции CPMM
Клиенты, создающиеMigrateToCpswap, должны использовать эти фиксированные индексы remaining_accounts:
Инструкция требует как минимум десять оставшихся аккаунтов на обновленном пути. Аккаунты поддержки монеты — это входы CPI только для чтения. Получите оба адреса даже когда монета не имеет инициализированной записи поддержки. Старые построители, которые всё ещё добавляют аккаунты блокировки создателя или опускают индексы 8–9, должны быть обновлены.
Список разрешений GlobalConfig платформы
PlatformConfig.restrict_global_config управляет проверкой:
0: платформа принимает любой иначе допустимыйGlobalConfig; аккаунт разрешения не требуется.1:Initialize,InitializeV2иInitializeWithToken2022должны включать соответствующийPlatformAllowConfigгде-либо вremaining_accounts.
CreatePlatformAllowConfig и ClosePlatformAllowConfig. Его семена — [b"platform_allow_config", platform_config, global_config]. Бывшие управляемые администратором инструкции PlatformGlobalAccess и PDA сняты с производства.
CollectFee
Административный сбор накопленных комиссий торговли протокола на одном запуске.
Аргументы — нет.
Аккаунты
Эффект — передать
pool_state.quote_protocol_fee из quote_vault в recipient_token_account, затем обнулить счётчик. Вызываемо в любое время после первой покупки.
CollectMigrateFee
Административный сбор комиссии миграции, накопленной при выпуске. Та же форма аккаунта, что и CollectFee с migrate_fee_owner как подписывающий (вместо protocol_fee_owner) и pool_state.migrate_fee как осушаемый счётчик.
ClaimCreatorFee
Сбор по создателю накопленных комиссий создателя по каждому запуску, которым владеет создатель, использующему ту же котировку монеты. Осушает хранилище комиссий по создателю, а не по пулу.
Аргументы — нет.
Аккаунты
Эффект — передать весь баланс
creator_fee_vault в recipient_token_account. Возвращает ошибку с проверкой больше нуля, если хранилище пусто.
ClaimPlatformFee
Сбор по платформе, который осушает хранилище котировок запуска напрямую. Используйте это, когда платформа хочет получить свою долю для одного конкретного запуска без прохождения через агрегированное хранилище платформы.
Аргументы — нет.
Аккаунты
Эффект — передать
pool_state.platform_fee из quote_vault в recipient_token_account, обнулить счётчик.
ClaimPlatformFeeFromVault
Агрегированный сбор по платформе. Осушает хранилище комиссий платформы по котировке монеты, которое накапливает комиссии из каждого запуска, маршрутизированного через платформу.
Аргументы — нет.
Аккаунты
Эффект — передать полный баланс
platform_fee_vault в recipient_token_account. Возвращает ошибку, если хранилище пусто.
Инструкции вестинга и конфигурации платформы
Они документированы на отдельных страницах, потому что каждая имеет свою модель состояния:CreateVestingAccount,CreatePlatformVestingAccount,ClaimVestedTokenCreatePlatformConfig,UpdatePlatformConfig,UpdatePlatformCurveParam,RemovePlatformCurveParam,CreatePlatformAllowConfig,ClosePlatformAllowConfigCreateConfig,UpdateConfig
Матрица изменения состояния
Куда дальше
products/launchlab/code-demos— примеры TypeScript для каждой инструкции.products/launchlab/accounts— полная форма состояния.reference/error-codes— перечисление ошибок LaunchLab.
- Модуль Raydium SDK v2
LaunchLab - Исходный код программы Raydium LaunchLab

