本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
PoolState(一次启动的根状态账户)、其两个金库、权限 PDA,以及启动结算时获得的毕业后引用。
关于约束每次启动的协议级配置,请参阅 products/launchlab/global-config。关于每平台的覆盖层,请参阅 products/launchlab/platform-config。关于归属账户(PoolState 上的 VestingSchedule、每个受益人的 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— UI 的”毕业进度”比率。migrate_type— 新初始化需要1(CPSWAP)。存储的0仅对在强制 CPMM 之前创建的现有启动有意义。amm_creator_fee_on— 在毕业后 CPMM 池上选择creator_fee_on = OnlyQuoteToken(0)或BothToken(1)。它不选择迁移目标。参阅creator-fees。quote_protocol_fee/platform_fee/migrate_fee— 三个独立的费用计数器。每个都有自己的声明指令;参阅instructions。vesting_schedule— 存在于每个PoolState上,但当total_locked_amount == 0时不活跃。参阅vesting了解完整生命周期。
权限 PDA
LaunchLab 在所有启动中使用单个权限 PDA,派生时不使用每次启动的种子:- 每次启动的
base_vault和quote_vault上的权限。 - 每次启动的
base_mint上的mint_authority(毕业前)。 - CPMM 毕业 CPI 上的签署者,以及现有状态的旧版 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 都是由 LaunchLab authority PDA 拥有的标准 SPL Token 账户。地址存储在 PoolState 上,也可以派生:
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.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— PDA 种子常量(AUTH_SEED、CREATOR_FEE_VAULT_AUTH_SEED、PLATFORM_FEE_VAULT_AUTH_SEED)。- Raydium SDK v2
launchpad模块。

