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 | Любой — продажа с точным вводом / точным выводом на кривой связывания |
| Выпуск | MigrateToAmm | Migration wallet (установлен на GlobalConfig) — переход к AMM v4. Используется, когда amm_creator_fee_on = BothToken, чтобы комиссия создателя могла быть собрана с обеих сторон. |
| Выпуск | MigrateToCpswap | Migration wallet — переход к CPMM. Используется, когда amm_creator_fee_on = QuoteToken и требуется для запусков Token-2022. Обертывает InitializeWithPermission на CPMM. |
| Комиссии | CollectFee | Администратор — сбор комиссий протокола с запуска |
| Комиссии | CollectMigrateFee | Администратор — сбор накопленных миграционных комиссий |
| Комиссии | ClaimCreatorFee | Создатель — требование накопленных комиссий создателя во время фазы кривой |
| Vesting | CreateVestingAccount | Создатель — выделение заблокированных токенов бенефициару, разблокировка после выпуска |
| Vesting | CreatePlatformVestingAccount | Администратор платформы — выделение заблокированных токенов бенефициарам платформы |
| Vesting | ClaimVestedToken | Бенефициар — требование разблокированных токенов после скалы |
| Конфигурация платформы | 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:
BothToken → MigrateToAmm → пул AMM v4 (комиссия создателя может быть собрана с обеих сторон; AMM v4 не имеет встроенного поля комиссии создателя, поэтому комиссии берутся через механизм блокировки LP-NFT).
QuoteToken → MigrateToCpswap → пул 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
}
Счета (сокращено)
| # | Имя | W | S | Примечания |
|---|
| 1 | creator | W | S | Платит за аренду + создание базового mint. |
| 2 | launch_config | | | Связывание конфигурации протокола. |
| 3 | launch_state | W | | Новый счет. |
| 4 | launch_authority | | | PDA. |
| 5 | base_mint | W | S | Свежая Keypair (или PDA) — эта инструкция инициализирует ее. |
| 6 | base_vault | W | | ATA launch_authority на base_mint. |
| 7 | quote_mint | | | |
| 8 | quote_vault | W | | ATA launch_authority на quote_mint. |
| 9 | metadata | W | | PDA метаданных Metaplex. |
| 10 | metaplex_program | | | |
| 11 | token_program | | | Только SPL Token. |
| 12 | system_program | | | |
| 13 | rent | | | |
Предусловия
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
Счета
| # | Имя | W | S |
|---|
| 1 | user | W | S |
| 2 | launch_state | W | |
| 3 | launch_authority | | |
| 4 | base_vault | W | |
| 5 | quote_vault | W | |
| 6 | user_base_ata | W | |
| 7 | user_quote_ata | W | |
| 8 | base_mint | | |
| 9 | quote_mint | | |
| 10 | token_program | | |
| 11 | associated_token_program | | |
| 12 | system_program | | |
Предусловия
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.
Аргументы
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).
Кто подписывает
MigrateToAmm — migrate_to_amm_wallet записанная на связывании GlobalConfig.
MigrateToCpswap — migrate_to_cpswap_wallet записанная на связывании GlobalConfig.
Эти кошельки обычно хранятся операционным crank выпуска Raydium; на практике выпуск происходит через несколько секунд после пересечения порога, независимо от того, кто инициировал финальную покупку.
Аргументы
MigrateToAmm принимает три (в основном параметры рынка OpenBook, которые программа пересылает на AMM v4):
base_lot_size: u64
quote_lot_size: u64
market_vault_signer_nonce: u8
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_amount
quote_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
Административный сбор накопленных комиссий протокола за торговлю на одном запуске.
Аргументы — отсутствуют.
Счета
| # | Имя | W | S | Примечания |
|---|
| 1 | protocol_fee_owner | | S | Должен равняться global_config.protocol_fee_owner. |
| 2 | authority | | | PDA [b"vault_auth_seed"]; подписывает передачу хранилища. |
| 3 | pool_state | W | | Изменено для обнуления quote_protocol_fee. |
| 4 | global_config | | | Источник истины для подписывающего. |
| 5 | quote_vault | W | | Дренировано на quote_protocol_fee. |
| 6 | recipient_token_account | W | | ATA protocol_fee_owner на quote_mint. |
| 7 | quote_mint | | | |
| 8 | token_program | | | SPL 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. Дренирует хранилище комиссий для каждого создателя, а не для каждого пула.
Аргументы — отсутствуют.
Счета
| # | Имя | W | S | Примечания |
|---|
| 1 | creator | W | S | Создатель пула. |
| 2 | fee_vault_authority | | | PDA [b"creator_fee_vault_auth_seed"]. |
| 3 | creator_fee_vault | W | | PDA с семенами [creator, quote_mint]; агрегированное хранилище создателя. |
| 4 | recipient_token_account | W | | init_if_needed; ATA creator на quote_mint. |
| 5 | quote_mint | | | |
| 6 | token_program | | | |
| 7 | system_program | | | Для создания ATA, если требуется. |
| 8 | associated_token_program | | | |
Эффект — переместить весь баланс creator_fee_vault в recipient_token_account. Отвернуть с проверкой require-больше-чем-ноль, если хранилище пусто.
Сбор платформы, который дренирует хранилище quote запуска напрямую. Используйте, когда платформа хочет требовать свой срез для одного конкретного запуска без прохождения через агрегированное хранилище платформы.
Аргументы — отсутствуют.
Счета
| # | Имя | W | S | Примечания |
|---|
| 1 | platform_fee_wallet | W | S | Должен равняться platform_config.platform_fee_wallet. |
| 2 | authority | | | PDA [b"vault_auth_seed"]. |
| 3 | pool_state | W | | Дренировано на pool_state.platform_fee. |
| 4 | platform_config | | | Источник истины для подписывающего. |
| 5 | quote_vault | W | | Дренировано. |
| 6 | recipient_token_account | W | | init_if_needed; ATA platform_fee_wallet. |
| 7 | quote_mint | | | |
| 8 | token_program | | | |
| 9 | system_program | | | |
| 10 | associated_token_program | | | |
Эффект — переместить pool_state.platform_fee из quote_vault в recipient_token_account, обнулить счетчик.
Агрегированный сбор платформы. Дренирует хранилище комиссий платформы для каждого quote mint, которое накапливает комиссии с каждого запуска, маршрутизированного через платформу.
Аргументы — отсутствуют.
Счета
| # | Имя | W | S | Примечания |
|---|
| 1 | platform_fee_wallet | W | S | Должен равняться platform_config.platform_fee_wallet. |
| 2 | fee_vault_authority | | | PDA [b"platform_fee_vault_auth_seed"]. |
| 3 | platform_config | | | |
| 4 | platform_fee_vault | W | | PDA с семенами [platform_config, quote_mint]. |
| 5 | recipient_token_account | W | | init_if_needed; ATA platform_fee_wallet. |
| 6 | quote_mint | | | |
| 7 | token_program | | | |
| 8 | system_program | | | |
| 9 | associated_token_program | | | |
Эффект — переместить полный баланс platform_fee_vault в recipient_token_account. Отвернуть, если хранилище пусто.
Они задокументированы на выделенных страницах, потому что каждая имеет свою модель состояния:
Матрица изменения состояния
| Инструкция | status | real_base | real_quote | Счетчики комиссий | Послепулове состояние |
|---|
Initialize{V2,WithToken2022} | Funding | 0 | 0 | 0 | — |
BuyExactIn(q_in) | Funding | +∆ | +∆q_after_fee | quote_protocol_fee += ∆, platform_fee += ∆ | — |
SellExactIn(b_in) | Funding | −∆ | −∆q_before_fee | (то же самое) | — |
| Порог достигнут | → Migrate | — | — | — | — |
MigrateToAmm / MigrateToCpswap | → Migrated | (заморожено) | (заморожено) | migrate_fee установлено | создано, LP разделено по PlatformConfig |
CollectFee / CollectMigrateFee | любой | — | — | счетчик обнулен | — |
ClaimCreatorFee / ClaimPlatformFee* | любой | — | — | дренирует хранилище | — |
CreateVestingAccount | Funding | — | — | — | бамп allocated_share_amount |
ClaimVestedToken | Migrated | — | — | — | дренирует base_vault |
Куда дальше
Источники: