Перейти к основному содержанию

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
LaunchLab предоставляет компактный набор инструкций: шесть пользовательских вызовов плюс несколько административных примитивов. SDK обертывает их все; на этой странице документирован raw-уровень для агрегаторов, инструментов мониторинга и программ, которым нужен CPI.

Реестр инструкций

ГруппаИнструкцияВызывается
Глобальная конфигурацияCreateConfig / UpdateConfigАдминистратор
Жизненный цикл запускаInitialize / InitializeV2Любой (создатель) — запуски SPL Token; V2 записывает amm_creator_fee_on для последующей CPMM-выпускной
Жизненный цикл запускаInitializeWithToken2022Любой (создатель) — запуск Token-2022, опциональный TransferFeeConfig
ТорговляBuyExactIn / BuyExactOutЛюбой — покупка с точным вводом / точным выводом на кривой связывания
ТорговляSellExactIn / SellExactOutЛюбой — продажа с точным вводом / точным выводом на кривой связывания
ВыпускMigrateToAmmMigration wallet (установлен на GlobalConfig) — переход к AMM v4. Используется, когда amm_creator_fee_on = BothToken, чтобы комиссия создателя могла быть собрана с обеих сторон.
ВыпускMigrateToCpswapMigration wallet — переход к CPMM. Используется, когда amm_creator_fee_on = QuoteToken и требуется для запусков Token-2022. Обертывает InitializeWithPermission на CPMM.
КомиссииCollectFeeАдминистратор — сбор комиссий протокола с запуска
КомиссииCollectMigrateFeeАдминистратор — сбор накопленных миграционных комиссий
КомиссииClaimCreatorFeeСоздатель — требование накопленных комиссий создателя во время фазы кривой
VestingCreateVestingAccountСоздатель — выделение заблокированных токенов бенефициару, разблокировка после выпуска
VestingCreatePlatformVestingAccountАдминистратор платформы — выделение заблокированных токенов бенефициарам платформы
VestingClaimVestedTokenБенефициар — требование разблокированных токенов после скалы
Конфигурация платформыCreatePlatformConfig / UpdatePlatformConfigАдминистратор платформы
Конфигурация платформыUpdatePlatformCurveParam / RemovePlatformCurveParamАдминистратор платформы — управление списком разрешенных форм кривой на платформу
Комиссии платформыClaimPlatformFee / ClaimPlatformFeeFromVaultАдминистратор платформы
Доступ платформыCreatePlatformGlobalAccess / ClosePlatformGlobalAccessАдминистратор — управление доступом к GlobalConfig для платформ
Разделение “ExactIn/ExactOut” отражает SwapBaseInput / SwapBaseOutput CPMM — в цепи это отдельные дискриминаторы инструкций с немного отличающимся округлением. Выбор пути выпуска. migrate_type записывается на PoolState во время Initialize{V2,WithToken2022} и определяет, какие из двух инструкций выпуска могут работать. Запуски Token-2022 всегда мигрируют на CPMM. Запуски SPL Token мигрируют либо на AMM v4, либо на CPMM в зависимости от amm_creator_fee_on:
  • BothTokenMigrateToAmm → пул AMM v4 (комиссия создателя может быть собрана с обеих сторон; AMM v4 не имеет встроенного поля комиссии создателя, поэтому комиссии берутся через механизм блокировки LP-NFT).
  • QuoteTokenMigrateToCpswap → пул CPMM с creator_fee_on = OnlyQuoteToken (создатель продолжает зарабатывать комиссии от пула CPMM через NFT-ключ LaunchLab Fee — см. /ru/products/launchlab/creator-fees).
Примечание о названии enum AmmCreatorFeeOn. Исходный код Rust называет этот enum AmmCreatorFeeOn с вариантами QuoteToken и BothToken. Название вводит в заблуждение: в текущей операционной практике вариант определяет не только то, с какой стороны собирается комиссия создателя в пуле CPMM после выпуска — он также выбирает целевую программу выпуска (AMM v4 или CPMM) и связывается с migrate_type на PoolState запуска. Рассматривайте поле как “целевая миграция + сторона комиссии после выпуска” в одном. Имя enum в цепи не было переработано, но рассуждение о нем как о MigrationTarget соответствует реальности более точно.

Initialize

Создать новый запуск. Аргументы
launch_params: {
    curve_type:                 u8,
    base_supply_max:            u64,
    base_supply_graduation:     u64,
    k:                          u128,              // или initial_virtual_quote_reserve для curve_type=1
    open_time:                  u64,
    quote_mint:                 Pubkey,
    base_token_metadata: {                         // встроенные name/symbol/uri; программа делает CPI на Metaplex
        name:   String,
        symbol: String,
        uri:    String,
    },
    fees: {
        buy_numerator:   u64,
        buy_denominator: u64,
        sell_numerator:  u64,
        sell_denominator: u64,
        lp_share:        u64,
        creator_share:   u64,
        protocol_share:  u64,
        total_share:     u64,
    },
    post_graduation_lp_policy:  u8,                // 0 = Burn, 1 = Lock, 2 = ToCreator
}
Счета (сокращено)
#ИмяWSПримечания
1creatorWSПлатит за аренду + создание базового mint.
2launch_configСвязывание конфигурации протокола.
3launch_stateWНовый счет.
4launch_authorityPDA.
5base_mintWSСвежая Keypair (или PDA) — эта инструкция инициализирует ее.
6base_vaultWATA launch_authority на base_mint.
7quote_mint
8quote_vaultWATA launch_authority на quote_mint.
9metadataWPDA метаданных Metaplex.
10metaplex_program
11token_programТолько SPL Token.
12system_program
13rent
Предусловия
  • 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. Аргументы
quote_in:          u64
minimum_base_out:  u64
Счета
#ИмяWS
1userWS
2launch_stateW
3launch_authority
4base_vaultW
5quote_vaultW
6user_base_ataW
7user_quote_ataW
8base_mint
9quote_mint
10token_program
11associated_token_program
12system_program
Предусловия
  • launch_state.status == Active.
  • now ≥ open_time.
  • user_quote_ata.balance ≥ quote_in.
  • quote_in > 0.
Эффект
  1. Разделить quote_in на quote_in_after_fee и части комиссий.
  2. Newton-решить кривую для base_out по постоплатному quote.
  3. require(base_out ≥ minimum_base_out) иначе отвернуть ExceededSlippage.
  4. Переместить quote_in пользователь → хранилище. Переместить base_out хранилище → пользователь.
  5. Обновить base_sold += base_out, quote_reserve_real += quote_in_after_fee × (lp_share / total_share).
  6. Обновить счетчики комиссий (protocol_fees_quote, creator_fees_quote).
  7. state_data.num_buys += 1.
  8. Если quote_reserve_real ≥ quote_reserve_target после обновления, SDK обычно цепляет инструкцию Graduate в одной транзакции. Программа не выпускает автоматически внутри Buy — требуется последующий Graduate.

BuyExactOut

Пользователь указывает точный base_out; программа вычисляет quote_in. Аргументы
base_out:      u64
maximum_quote_in: u64
Те же счета, что и 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). Кто подписывает
  • MigrateToAmmmigrate_to_amm_wallet записанная на связывании GlobalConfig.
  • MigrateToCpswapmigrate_to_cpswap_wallet записанная на связывании GlobalConfig.
Эти кошельки обычно хранятся операционным crank выпуска Raydium; на практике выпуск происходит через несколько секунд после пересечения порога, независимо от того, кто инициировал финальную покупку. Аргументы MigrateToAmm принимает три (в основном параметры рынка OpenBook, которые программа пересылает на AMM v4):
base_lot_size:               u64
quote_lot_size:              u64
market_vault_signer_nonce:   u8
MigrateToCpswap не принимает никаких. Эффект (общий для обоих)
  1. Проверить pool_state.status == Migrate (т.е., quote_reserve_target был достигнут). Иначе отвернуть с PoolMigrated (статус уже был Migrated) или PoolFunding (все еще в funding).
  2. Проверить pool_state.migrate_type совпадает с инструкцией (0 для AMM, 1 для CPMM). Иначе отвернуть с MigrateTypeNotMatch.
  3. Вычислить послевыпускные резервы:
    • base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount
    • quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
  4. CPI в целевую программу (AMM v4 Initialize2 или CPMM InitializeWithPermission) с этими резервами для создания послевыпускного пула.
  5. Разделить результирующий LP в соответствии с связыванием PlatformConfig.{platform_scale, creator_scale, burn_scale} (только CPMM) — одна часть отчеканена на platform_nft_wallet, одна на creator NFT, обернутая программой LP-Lock, одна сожжена через Burn & Earn. Для выпуска AMM v4 расположение LP управляется собственными параметрами инициализации AMM v4.
  6. Отозвать base_mint.mint_authority (установить на None).
  7. Перевернуть 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

Административный сбор накопленных комиссий протокола за торговлю на одном запуске. Аргументы — отсутствуют. Счета
#ИмяWSПримечания
1protocol_fee_ownerSДолжен равняться global_config.protocol_fee_owner.
2authorityPDA [b"vault_auth_seed"]; подписывает передачу хранилища.
3pool_stateWИзменено для обнуления quote_protocol_fee.
4global_configИсточник истины для подписывающего.
5quote_vaultWДренировано на quote_protocol_fee.
6recipient_token_accountWATA protocol_fee_owner на quote_mint.
7quote_mint
8token_programSPL Token (quote mint всегда SPL Token).
Эффект — переместить 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. Дренирует хранилище комиссий для каждого создателя, а не для каждого пула. Аргументы — отсутствуют. Счета
#ИмяWSПримечания
1creatorWSСоздатель пула.
2fee_vault_authorityPDA [b"creator_fee_vault_auth_seed"].
3creator_fee_vaultWPDA с семенами [creator, quote_mint]; агрегированное хранилище создателя.
4recipient_token_accountWinit_if_needed; ATA creator на quote_mint.
5quote_mint
6token_program
7system_programДля создания ATA, если требуется.
8associated_token_program
Эффект — переместить весь баланс creator_fee_vault в recipient_token_account. Отвернуть с проверкой require-больше-чем-ноль, если хранилище пусто.

ClaimPlatformFee

Сбор платформы, который дренирует хранилище quote запуска напрямую. Используйте, когда платформа хочет требовать свой срез для одного конкретного запуска без прохождения через агрегированное хранилище платформы. Аргументы — отсутствуют. Счета
#ИмяWSПримечания
1platform_fee_walletWSДолжен равняться platform_config.platform_fee_wallet.
2authorityPDA [b"vault_auth_seed"].
3pool_stateWДренировано на pool_state.platform_fee.
4platform_configИсточник истины для подписывающего.
5quote_vaultWДренировано.
6recipient_token_accountWinit_if_needed; ATA platform_fee_wallet.
7quote_mint
8token_program
9system_program
10associated_token_program
Эффект — переместить pool_state.platform_fee из quote_vault в recipient_token_account, обнулить счетчик.

ClaimPlatformFeeFromVault

Агрегированный сбор платформы. Дренирует хранилище комиссий платформы для каждого quote mint, которое накапливает комиссии с каждого запуска, маршрутизированного через платформу. Аргументы — отсутствуют. Счета
#ИмяWSПримечания
1platform_fee_walletWSДолжен равняться platform_config.platform_fee_wallet.
2fee_vault_authorityPDA [b"platform_fee_vault_auth_seed"].
3platform_config
4platform_fee_vaultWPDA с семенами [platform_config, quote_mint].
5recipient_token_accountWinit_if_needed; ATA platform_fee_wallet.
6quote_mint
7token_program
8system_program
9associated_token_program
Эффект — переместить полный баланс platform_fee_vault в recipient_token_account. Отвернуть, если хранилище пусто.

Инструкции Vesting и platform-config

Они задокументированы на выделенных страницах, потому что каждая имеет свою модель состояния:

Матрица изменения состояния

Инструкцияstatusreal_basereal_quoteСчетчики комиссийПослепулове состояние
Initialize{V2,WithToken2022}Funding000
BuyExactIn(q_in)Funding+∆+∆q_after_feequote_protocol_fee += ∆, platform_fee += ∆
SellExactIn(b_in)Funding−∆−∆q_before_fee(то же самое)
Порог достигнут→ Migrate
MigrateToAmm / MigrateToCpswap→ Migrated(заморожено)(заморожено)migrate_fee установленосоздано, LP разделено по PlatformConfig
CollectFee / CollectMigrateFeeлюбойсчетчик обнулен
ClaimCreatorFee / ClaimPlatformFee*любойдренирует хранилище
CreateVestingAccountFundingбамп allocated_share_amount
ClaimVestedTokenMigratedдренирует base_vault

Куда дальше

Источники: