Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
На этой странице описан граф аккаунтов для каждого запуска: 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_sell vs real_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 для каждого запуска:
Этот единственный PDA:
  • Является полномочием на 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 и также могут быть получены:
(Перед использованием вывода в production проверьте точные префиксы seed в структуре аккаунтов 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, никогда не использует сырой баланс хранилища. Инвариант до выпуска:

Переходы аккаунтов жизненного цикла

Что дальше

Источники:
  • raydium-launch/programs/launchpad/src/states/pool.rsPoolState, PoolStatus, VestingSchedule, AmmCreatorFeeOn.
  • raydium-launch/programs/launchpad/src/lib.rs — константы seed PDA (AUTH_SEED, CREATOR_FEE_VAULT_AUTH_SEED, PLATFORM_FEE_VAULT_AUTH_SEED).
  • Модуль launchpad Raydium SDK v2.