Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
LaunchLab предоставляет компактный набор инструкций: шесть пользовательских вызовов плюс несколько административных примитивов. SDK обертывает их все; на этой странице документирован raw-уровень для агрегаторов, инструментов мониторинга и программ, которым нужен CPI.
Реестр инструкций
Разделение “ExactIn/ExactOut” отражает
SwapBaseInput / SwapBaseOutput CPMM — в цепи это отдельные дискриминаторы инструкций с немного отличающимся округлением.
Выбор пути выпуска. migrate_type записывается на PoolState во время Initialize{V2,WithToken2022} и определяет, какие из двух инструкций выпуска могут работать. Запуски Token-2022 всегда мигрируют на CPMM. Запуски SPL Token мигрируют либо на AMM v4, либо на CPMM в зависимости от amm_creator_fee_on:
BothToken→MigrateToAmm→ пул AMM v4 (комиссия создателя может быть собрана с обеих сторон; AMM v4 не имеет встроенного поля комиссии создателя, поэтому комиссии берутся через механизм блокировки LP-NFT).QuoteToken→MigrateToCpswap→ пул CPMM сcreator_fee_on = OnlyQuoteToken(создатель продолжает зарабатывать комиссии от пула CPMM через NFT-ключ LaunchLab Fee — см./ru/products/launchlab/creator-fees).
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и части комиссий. - Newton-решить кривую для
base_outпо постоплатному quote. 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) вместо итерации Newton.
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
Выпустить запуск в торгуемый AMM-пул, как только кривая достигнет total_quote_fund_raising. Две инструкции соответствуют двум целям выпуска — AMM v4 и CPMM — и только одна из них действительна для любого заданного запуска, определенная pool_state.migrate_type (установлено во время Initialize).
Кто подписывает
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(все еще в funding). - Проверить
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) с этими резервами для создания послевыпускного пула. - Разделить результирующий LP в соответствии с связыванием
PlatformConfig.{platform_scale, creator_scale, burn_scale}(только CPMM) — одна часть отчеканена наplatform_nft_wallet, одна на creator NFT, обернутая программой LP-Lock, одна сожжена через Burn & Earn. Для выпуска AMM v4 расположение LP управляется собственными параметрами инициализации AMM v4. - Отозвать
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.
CollectFee
Административный сбор накопленных комиссий протокола за торговлю на одном запуске.
Аргументы — отсутствуют.
Счета
Эффект — переместить
pool_state.quote_protocol_fee из quote_vault в recipient_token_account, затем обнулить счетчик. Может быть вызвано в любое время после первой покупки.
CollectMigrateFee
Административный сбор миграционной комиссии, накопленной при выпуске. Та же форма счета, что и CollectFee с migrate_fee_owner как подписывающий (вместо protocol_fee_owner) и pool_state.migrate_fee как дренированный счетчик.
ClaimCreatorFee
Сбор создателя накопленных комиссий создателя по всем запускам, которыми владеет создатель и использующим один и тот же quote mint. Дренирует хранилище комиссий для каждого создателя, а не для каждого пула.
Аргументы — отсутствуют.
Счета
Эффект — переместить весь баланс
creator_fee_vault в recipient_token_account. Отвернуть с проверкой require-больше-чем-ноль, если хранилище пусто.
ClaimPlatformFee
Сбор платформы, который дренирует хранилище quote запуска напрямую. Используйте, когда платформа хочет требовать свой срез для одного конкретного запуска без прохождения через агрегированное хранилище платформы.
Аргументы — отсутствуют.
Счета
Эффект — переместить
pool_state.platform_fee из quote_vault в recipient_token_account, обнулить счетчик.
ClaimPlatformFeeFromVault
Агрегированный сбор платформы. Дренирует хранилище комиссий платформы для каждого quote mint, которое накапливает комиссии с каждого запуска, маршрутизированного через платформу.
Аргументы — отсутствуют.
Счета
Эффект — переместить полный баланс
platform_fee_vault в recipient_token_account. Отвернуть, если хранилище пусто.
Инструкции Vesting и platform-config
Они задокументированы на выделенных страницах, потому что каждая имеет свою модель состояния:CreateVestingAccount,CreatePlatformVestingAccount,ClaimVestedTokenCreatePlatformConfig,UpdatePlatformConfig,UpdatePlatformCurveParam,RemovePlatformCurveParam,CreatePlatformGlobalAccess,ClosePlatformGlobalAccessCreateConfig,UpdateConfig
Матрица изменения состояния
Куда дальше
/ru/products/launchlab/code-demos— примеры TypeScript для каждой инструкции./ru/products/launchlab/accounts— полная форма состояния./ru/reference/error-codes— LaunchLab error enum.
- Raydium SDK v2
LaunchLabmodule - Raydium LaunchLab program source

