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

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.

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

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

АккаунтВладелецНазначение
GlobalConfigПрограмма LaunchLabПравила уровня протокола: сборы, минимальные объемы, кошельки миграции. Один на (curve_type, index).
PlatformConfigПрограмма LaunchLabНаложение на уровне платформы: брендинг, сбор платформы, разделение NFT при выпуске, список допустимых форм кривых.
PoolStateПрограмма LaunchLabКорневое состояние на один запуск: майнты, хранилища, параметры кривой, счетчики продаж, счетчики сборов, график вестинга, статус выпуска.
authorityПрограмма LaunchLabЕдинственный PDA с seed [b"vault_auth_seed"], который владеет хранилищами всех запусков и подписывает постградуационный CPI.
base_vaultSPL Token / Token-2022Хранилище на один запуск, содержащее непроданные базовые токены.
quote_vaultSPL TokenХранилище на один запуск, содержащее накопленные котируемые токены.
VestingRecordПрограмма LaunchLabЗапись cliff + linear-unlock на одного получателя. Опционально.
creator_fee_vaultSPL TokenХранилище на создателя + на котируемый майнт, содержащее начисленные сборы создателя, очищаемое ClaimCreatorFee.
platform_fee_vaultSPL TokenХранилище на платформу + на котируемый майнт, содержащее начисленные сборы платформы, очищаемое ClaimPlatformFeeFromVault.
(после выпуска) cpmm_pool_state или amm_pool_stateПрограмма CPMM / AMM v4Пул, созданный MigrateToCpswap / MigrateToAmm.
(после выпуска) Fee Key NFTПрограмма LP-LockОбертывает долю создателя в LP при выпуске CPMM; дает владельцу право на ClaimCreatorFee в пуле CPMM.
Метод raydium.launchpad.getLaunchById SDK возвращает PoolState плюс флаг, указывающий, прошел ли запуск выпуск; если прошел, включается ID постмиграционного пула.

PoolState

Корневое состояние на один запуск. Имена полей ниже совпадают с on-chain структурой Rust (states/pool.rs); некоторые значения упрощены для читаемости — обратитесь к исходному коду для точного макета памяти.
// states/pool.rs (abridged)
pub struct PoolState {
    pub epoch:                     u64,        // recent_epoch tracker
    pub auth_bump:                 u8,
    pub status:                    u8,         // PoolStatus enum
    pub base_decimals:             u8,
    pub quote_decimals:            u8,
    pub migrate_type:              u8,         // 0 = AMM v4, 1 = CPMM
    pub supply:                    u64,        // total base tokens (no decimals)
    pub total_base_sell:           u64,        // base supply allocated to the curve
    pub virtual_base:              u64,        // virtual-reserve seed
    pub virtual_quote:             u64,        // virtual-reserve seed
    pub real_base:                 u64,        // base sold so far
    pub real_quote:                u64,        // quote raised so far (excl. fees)
    pub total_quote_fund_raising:  u64,        // graduation threshold in quote

    pub quote_protocol_fee:        u64,        // accrued, pending CollectFee
    pub platform_fee:              u64,        // accrued, pending ClaimPlatformFee
    pub migrate_fee:               u64,        // accrued, pending CollectMigrateFee
    pub vesting_schedule:          VestingSchedule,

    pub global_config:             Pubkey,
    pub platform_config:           Pubkey,
    pub creator:                   Pubkey,
    pub base_mint:                 Pubkey,
    pub quote_mint:                Pubkey,
    pub base_vault:                Pubkey,
    pub quote_vault:               Pubkey,

    pub amm_creator_fee_on:        u8,         // 0 = QuoteToken, 1 = BothToken (CPMM-only)
    pub token_program_flag:        u8,         // bit flags for SPL Token vs Token-2022
    pub padding:                   [u8; 54],
}

#[derive(Default, Debug, Clone)]
pub struct VestingSchedule {
    pub total_locked_amount:    u64,
    pub cliff_period:           u64,
    pub unlock_period:          u64,
    pub start_time:             u64,           // set at graduation
    pub allocated_share_amount: u64,           // running sum across VestingRecords
}
Значения PoolStatus (из Anchor IDL):
0 = Funding         — принимаются покупки / продажи; ниже quote_reserve_target
1 = Migrate         — достигнут quote_reserve_target; ожидание MigrateTo*
2 = Migrated        — MigrateTo* уже выполнен; часы вестинга работают
Поля, видимые интегратору:
  • 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 на запуск:
const LAUNCHLAB_PROGRAM_ID = new PublicKey("<LAUNCHLAB_ID>"); // see reference/program-addresses

const [authority, bump] = PublicKey.findProgramAddressSync(
  [Buffer.from("vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
Этот единственный PDA:
  • Авторитет на base_vault и quote_vault каждого запуска.
  • mint_authority на base_mint каждого запуска (до выпуска).
  • Подписант на постградуационный CPI для AMM v4 / CPMM (MigrateTo*).
  • Подписант на передачи ClaimVestedToken из базового хранилища.
mint_authority отзывается немедленно после MigrateToAmm / MigrateToCpswap, так что предложение становится постоянно фиксированным. Два дополнительных PDA блокируют хранилища сборов:
const [creatorFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("creator_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);

const [platformFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("platform_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
Они подписывают передачу из соответствующих хранилищ сборов при 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 и могут быть также получены:
const [baseVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), baseMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
const [quoteVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), quoteMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
(Перед использованием вывода в 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, никогда не использует необработанный баланс хранилища. Инвариант до выпуска:
quote_vault.balance ==
   real_quote
 + quote_protocol_fee
 + platform_fee
 + migrate_fee

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

СобытиеСтатусreal_basereal_quoteПостградуационный пул
InitializeFunding00
BuyExactIn / BuyExactOutFunding+base_out+quote_in_after_fee
SellExactIn / SellExactOutFunding−base_in−quote_out_before_fee
MigrateToAmm / MigrateToCpswapFunding → Migrate → Migrated(frozen)(frozen)создан, LP разделен по PlatformConfig
ClaimCreatorFee / ClaimPlatformFee*anyочищает хранилище сборов
CreateVestingAccountFundingувеличивает vesting_schedule.allocated_share_amount
ClaimVestedTokenMigrated onlyочищает base_vault

Дальнейшее изучение

Источники:
  • 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.