Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
PoolState (корневой аккаунт состояния одного запуска), его два хранилища, PDA полномочий и ссылки после выпуска, которые он получает при завершении запуска.
Информацию о конфигурации на уровне протокола, которая ограничивает каждый запуск, см. в разделе products/launchlab/global-config. Для наложения на уровне платформы см. products/launchlab/platform-config. Для аккаунтов вестинга (VestingSchedule на PoolState, VestingRecord для каждого бенефициара) см. products/launchlab/vesting.
Инвентарь аккаунтов
Метод SDK
raydium.launchpad.getLaunchById возвращает PoolState плюс флаг, указывающий, был ли запуск выпущен; если да, включается ID пула после миграции.
PoolState
Корневое состояние для каждого запуска. Названия полей ниже соответствуют структуре Rust на цепи (states/pool.rs); некоторые значения упрощены для читаемости — обратитесь к исходному коду для точного расположения в памяти.
PoolStatus (из Anchor IDL):
status— три значения, монотонные (Funding → Migrate → Migrated). Чтение всегда безопасно; запись ограничена.real_base,real_quote— текущее состояние кривой. В сочетании сvirtual_base/virtual_quoteих достаточно для вычисления спотовой цены без обращения к хранилищам. См.bonding-curve.total_base_sellvsreal_base— соотношение «прогресс к выпуску» для пользовательских интерфейсов.migrate_type— новая инициализация требует1(CPSWAP). Сохраненный0остается значимым только для существующего запуска, созданного до принудительного использования CPMM.amm_creator_fee_on— выбираетcreator_fee_on = OnlyQuoteToken(0) илиBothToken(1) на пуле CPMM после выпуска. Это не выбирает целевую миграцию. См.creator-fees.quote_protocol_fee/platform_fee/migrate_fee— три независимых счетчика комиссий. Каждый имеет свою инструкцию требования; см.instructions.vesting_schedule— присутствует на каждомPoolState, но неактивен, когдаtotal_locked_amount == 0. См.vestingдля полного жизненного цикла.
PDA полномочий
LaunchLab использует единственный PDA полномочий для всех запусков, полученный без seed для каждого запуска:- Является полномочием на
base_vaultиquote_vaultкаждого запуска. - Является
mint_authorityнаbase_mintкаждого запуска (до выпуска). - Подписывает CPI выпуска CPMM и выпуск AMM v4 для существующего состояния.
- Подписывает передачи
ClaimVestedTokenиз базового хранилища.
mint_authority отзывается сразу после вызова MigrateToCpswap или устаревшего MigrateToAmm, поэтому предложение навсегда фиксируется.
Два дополнительных PDA ограничивают хранилища комиссий:
ClaimCreatorFee и ClaimPlatformFeeFromVault.
Базовая монета
Создается встроенноInitialize с:
mint_authority = authority(отзывается при выпуске).freeze_authority = None.supply = supply, полностью отчеканено вbase_vault.decimals, выбранные создателем приInitialize(обычно 6).
base_mint.supply постоянно на протяжении жизни запуска. Покупки по кривой перемещают токены из base_vault покупателю, но не вызывают mint_to.
Initialize / InitializeV2 создают запуски SPL Token. Специальная инструкция InitializeWithToken2022 позволяет базовой монете быть монетой Token-2022 (с опциональным TransferFeeConfig); котировочная монета остается SPL Token. Все три пути инициализации требуют выпуска CPMM.
Хранилища
Обаbase_vault и quote_vault — это стандартные аккаунты SPL Token, принадлежащие PDA LaunchLab authority. Адреса хранятся на PoolState и также могут быть получены:
Initialize исходного кода.)
Хранилища комиссий
Два PDA агрегируют комиссии по всем запускам:- Хранилище комиссии создателя — PDA с seeds
[creator, quote_mint]. Каждый запуск, который зарабатывает одинаковые комиссии создателя на одной и той же котировочной монете, выливается в одно хранилище. Создатель очищает его черезClaimCreatorFee. - Хранилище комиссии платформы — PDA с seeds
[platform_config, quote_mint]. Каждый запуск, маршрутизированный через одну и ту же платформу, которая использует одну и ту же котировочную монету, выливается в одно хранилище. Кошелекplatform_fee_walletплатформы очищает его черезClaimPlatformFeeFromVault. Существует также вариант очистки для каждого запуска (ClaimPlatformFee), который извлекает изquote_vaultзапуска напрямую без прохождения через агрегированное хранилище.
Quote vault ↔ real_quote
quote_vault.balance и PoolState.real_quote должны оставаться синхронизированными. Они могут отличаться максимум на сумму трех ожидающих счетчиков комиссий (quote_protocol_fee, platform_fee, migrate_fee), которые находятся в хранилище, но принадлежат счетчикам комиссий, а не резерву кривой. Математика кривой всегда использует real_quote, никогда не использует сырой баланс хранилища.
Инвариант до выпуска:
Переходы аккаунтов жизненного цикла
Что дальше
products/launchlab/bonding-curve— математика заreal_base↔real_quote.products/launchlab/instructions— списки аккаунтов для каждой инструкции.products/launchlab/global-config— привязка на уровне протокола.products/launchlab/platform-config— наложение платформы.products/launchlab/vesting— механика заблокированного предложения.products/cpmm/accounts— как выглядитcpmm_pool_stateпосле выпуска.
raydium-launch/programs/launchpad/src/states/pool.rs—PoolState,PoolStatus,VestingSchedule,AmmCreatorFeeOn.raydium-launch/programs/launchpad/src/lib.rs— константы seed PDA (AUTH_SEED,CREATOR_FEE_VAULT_AUTH_SEED,PLATFORM_FEE_VAULT_AUTH_SEED).- Модуль
launchpadRaydium SDK v2.

