跳转到主要内容

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.

本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
本页文档说明每次启动的账户图:PoolState(一次启动的根状态账户)、其两个保险库、权限 PDA,以及启动结算时获得的毕业后引用。关于限制每次启动的协议级配置,请参见 products/launchlab/global-config。关于平台级覆盖,请参见 products/launchlab/platform-config。关于解锁账户(PoolState 上的 VestingSchedule、每位受益人的 VestingRecord),请参见 products/launchlab/vesting

账户清单

账户所有者用途
GlobalConfigLaunchLab 程序协议级规则:费用、供应下限、迁移钱包。每个 (curve_type, index) 一个。
PlatformConfigLaunchLab 程序平台级覆盖:品牌、平台费用、毕业时的 NFT 分割、曲线形状白名单。
PoolStateLaunchLab 程序每次启动的根状态:铸币、保险库、曲线参数、销售计数器、费用计数器、解锁计划、毕业状态。
authorityLaunchLab 程序使用种子 [b"vault_auth_seed"] 派生的单一 PDA,拥有所有启动中的保险库,并签署毕业后的 CPI。
base_vaultSPL Token / Token-2022每次启动的保险库,持有未售出的基础代币。
quote_vaultSPL Token每次启动的保险库,持有累积的报价代币。
VestingRecordLaunchLab 程序每位受益人的悬崖期 + 线性解锁记录。可选。
creator_fee_vaultSPL Token每位创建者 + 每种报价铸币的保险库,持有应计创建者费用,由 ClaimCreatorFee 清扫。
platform_fee_vaultSPL Token每个平台 + 每种报价铸币的保险库,持有应计平台费用,由 ClaimPlatformFeeFromVault 清扫。
(毕业后)cpmm_pool_state amm_pool_stateCPMM / AMM v4 程序MigrateToCpswap / MigrateToAmm 创建的池。
(毕业后)Fee Key NFTLP-Lock 程序包装创建者在 CPMM 毕业时的 LP 份额;赋予持有人在 CPMM 池上 ClaimCreatorFee 的权利。
SDK 的 raydium.launchpad.getLaunchById 返回 PoolState 以及指示启动是否已毕业的标志;如果已毕业,则包含迁移后的池 ID。

PoolState

每次启动的根状态。下面的字段名与链上 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         — accepting buys / sells; below quote_reserve_target
1 = Migrate         — quote_reserve_target reached; awaiting MigrateTo*
2 = Migrated        — MigrateTo* already executed; vesting clock running
面向集成者的字段:
  • status — 三个值,单调的(Funding → Migrate → Migrated)。读取始终安全;写入受保护。
  • real_basereal_quote — 当前曲线状态。结合 virtual_base / virtual_quote,它们足以计算现货价格,无需触及保险库。参见 bonding-curve
  • total_base_sell vs real_base — 用于 UI 的”毕业进度”比率。
  • migrate_type — 选择 MigrateToAmmMigrateToCpswap 是否为有效的毕业路径。Token-2022 启动必须使用 CPMM。
  • amm_creator_fee_on — 仅在毕业到 CPMM 时有意义。在毕业后的 CPMM 池上选择 creator_fee_on = OnlyQuoteToken0)或 BothToken1)。尽管名称如此,该枚举实际上也驱动迁移目标——在当前的操作实践中,BothTokenMigrateToAmm 配对;QuoteTokenMigrateToCpswap 配对。 参见 creator-fees
  • quote_protocol_fee / platform_fee / migrate_fee — 三个独立的费用计数器。每个都有自己的领取指令;参见 instructions
  • vesting_schedule — 存在于每个 PoolState 上,但当 total_locked_amount == 0 时不活跃。参见 vesting 了解完整的生命周期。

权限 PDA

LaunchLab 在所有启动中使用单一权限 PDA,不带每次启动的种子派生:
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_vaultquote_vault 的权限。
  • 每次启动的 base_mintmint_authority(毕业前)。
  • 毕业后 CPI 到 AMM v4 / CPMM(MigrateTo*)的签署者。
  • ClaimVestedToken 转账出基础保险库的签署者。
mint_authorityMigrateToAmm / 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,
);
这些在 ClaimCreatorFeeClaimPlatformFeeFromVault 期间签署相应费用保险库的转账。

基础铸币

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_vaultquote_vault 都是由 LaunchLab authority PDA 拥有的标准 SPL Token 账户。地址存储在 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,
);
(在生产中依赖派生之前,请从源的 Initialize 账户结构验证确切的种子前缀。)

费用保险库

两个 PDA 跨启动聚合费用:
  • 创建者费用保险库 — PDA,种子为 [creator, quote_mint]。每次为同一创建者在同一报价铸币上赚取费用的启动都流入同一保险库。创建者通过 ClaimCreatorFee 清扫它。
  • 平台费用保险库 — PDA,种子为 [platform_config, quote_mint]。每次通过同一平台使用同一报价铸币的启动都流入同一保险库。平台的 platform_fee_wallet 通过 ClaimPlatformFeeFromVault 清扫它。还有一个每次启动的清扫变体(ClaimPlatformFee),直接从启动的 quote_vault 中提取,无需通过聚合保险库。
聚合保险库模式使高交易量的创建者或平台能够摊销费用累积的租金成本,跨许多启动。

Quote vault ↔ real_quote

quote_vault.balancePoolState.real_quote 应保持同步。它们最多可能漂移三个待处理费用计数器之和(quote_protocol_feeplatform_feemigrate_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(冻结)(冻结)已创建,LP 根据 PlatformConfig 分割
ClaimCreatorFee / ClaimPlatformFee*any清扫费用保险库
CreateVestingAccountFunding凸起 vesting_schedule.allocated_share_amount
ClaimVestedTokenMigrated only清扫 base_vault

接下来去哪里

来源:
  • raydium-launch/programs/launchpad/src/states/pool.rsPoolStatePoolStatusVestingScheduleAmmCreatorFeeOn
  • raydium-launch/programs/launchpad/src/lib.rs — PDA 种子常数(AUTH_SEEDCREATOR_FEE_VAULT_AUTH_SEEDPLATFORM_FEE_VAULT_AUTH_SEED)。
  • Raydium SDK v2 launchpad 模块