Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
На этой странице описан граф аккаунтов на один запуск: PoolState (корневой аккаунт состояния одного запуска), его два хранилища, PDA авторитета и ссылки на постградуационные аккаунты, которые появляются при завершении запуска. Информацию о конфигурации на уровне протокола, действующей на все запуски, см. в разделе products/launchlab/global-config. Для наложения конфигурации платформы см. products/launchlab/platform-config. Для аккаунтов вестинга (VestingSchedule на PoolState, VestingRecord на получателя) см. products/launchlab/vesting.

Инвентарь аккаунтов

Метод raydium.launchpad.getLaunchById SDK возвращает PoolState плюс флаг, указывающий, прошел ли запуск выпуск; если прошел, включается ID постмиграционного пула.

PoolState

Корневое состояние на один запуск. Имена полей ниже совпадают с on-chain структурой 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 — коэффициент «прогресс к выпуску» для UI.
  • migrate_type — выбирает, является ли MigrateToAmm или MigrateToCpswap допустимым путем выпуска. Запуски Token-2022 должны использовать CPMM.
  • amm_creator_fee_on — имеет смысл только при выпуске на CPMM. Выбирает creator_fee_on = OnlyQuoteToken (0) или BothToken (1) в постградуационном пуле CPMM. Несмотря на название, этот enum фактически также определяет целевую миграцию — BothToken сочетается с MigrateToAmm в текущей операционной практике; QuoteToken с MigrateToCpswap. См. creator-fees.
  • quote_protocol_fee / platform_fee / migrate_fee — три независимых счетчика сборов. Каждый имеет собственную инструкцию claim; см. instructions.
  • vesting_schedule — присутствует на каждом PoolState, но неактивен когда total_locked_amount == 0. См. vesting для полного цикла жизни.

PDA авторитета

LaunchLab использует единый PDA авторитета для всех запусков, полученный без seed на запуск:
Этот единственный PDA:
  • Авторитет на base_vault и quote_vault каждого запуска.
  • mint_authority на base_mint каждого запуска (до выпуска).
  • Подписант на постградуационный CPI для AMM v4 / CPMM (MigrateTo*).
  • Подписант на передачи ClaimVestedToken из базового хранилища.
mint_authority отзывается немедленно после MigrateToAmm / MigrateToCpswap, так что предложение становится постоянно фиксированным. Два дополнительных 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. Запуски Token-2022 должны выпуститься на пул CPMM, потому что AMM v4 поддерживает только хранилища SPL Token.

Хранилища

И 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.