Skip to main content
本頁內容由 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_basereal_quote — 當前曲線狀態。結合 virtual_base / virtual_quote,它們足以計算現貨價格而無需接觸金庫。請參閱 bonding-curve
  • total_base_sell vs real_base — UI 的「畢業進度」比率。
  • migrate_type — 新初始化需要 1CPSWAP)。儲存的 0 僅對在 CPMM 唯一強制執行前建立的現有啟動有意義。
  • amm_creator_fee_on — 在畢業後 CPMM 池上選擇 creator_fee_on = OnlyQuoteToken0)或 BothToken1)。它不選擇遷移目標。請參閱 creator-fees
  • token_program_flag — 位欄位,不是布林值。Bit0 是基礎鑄幣,bit1 是報價鑄幣,每個 0 表示 SPL Token,1 表示 Token-2022,因此位元組取四個值:0(兩個舊版)、1(Token-2022 基礎)、2(Token-2022 報價)、3(兩個 Token-2022)。用 (token_program_flag >> bit) & 1 讀取一個鑄幣。將整個位元組與 0 比較以分類基礎鑄幣會將 2 解析為錯誤的程式。Bit1 在支援 Token-2022 報價鑄幣前一直是常數 0
  • quote_protocol_fee / platform_fee / migrate_fee — 三個獨立的費用計數器。每個都有自己的領取指令;請參閱 instructions
  • vesting_schedule — 存在於每個 PoolState 上,但在 total_locked_amount == 0 時不活躍。請參閱 vesting 了解完整生命週期。

授權 PDA

LaunchLab 在所有啟動中使用單一授權 PDA,無每次啟動種子派生:
該單一 PDA 是:
  • 每次啟動的 base_vaultquote_vault 上的授權。
  • base_mint 上無任何角色 — 鑄幣授權在 InitializeV2 返回前被撤銷(見下文)。
  • CPMM 畢業 CPI 上的簽署者,以及現有狀態的舊版 AMM v4 畢業。
  • ClaimVestedToken 轉帳出基礎金庫的簽署者。
  • Token-2022 基礎鑄幣的 TransferFeeConfig 上的 transfer_fee_config_authority,用於整個畢業前階段 — 以及其 withdraw_withheld_authority,但僅當平台未設定 PlatformConfig.transfer_fee_extension_auth 時。
mint_authority初始化指令中被撤銷,而不是在畢業時:InitializeV2InitializeWithToken2022 將完整供應鑄造到 base_vault 中,然後在同一指令中將 MintTokens 設定為 None。因此,供應從啟動存在的那一刻起就是固定的,遷移沒有鑄幣授權步驟。副作用:沒有人可以為基礎鑄幣簽署,因此其租金無法由 CollectExcessLamports 回收。 兩個額外的 PDA 控制費用金庫:
這些在 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)。所有三個初始化路徑都需要 CPMM 畢業。 InitializeWithToken2022 附加 TransferFeeConfig 時,鑄幣使用 transfer_fee_config_authority = authoritywithdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth 建立,當平台未設定該欄位時回退到 authority。兩個授權在畢業時重新分配給平台金鑰,提取端僅在 PDA 仍持有時。請參閱 platform-config 報價鑄幣獨立於基礎鑄幣,本身可能是 Token-2022 鑄幣 — InitializeV2InitializeWithToken2022 在其報價程式槽中接受任一程式。已棄用的 Initialize 不接受:其報價程式帳戶仍然類型化為 SPL Token,因此報價鑄幣是 Token-2022 的設定只能通過其他兩個啟動。LaunchLab 從不建立報價鑄幣;它是 GlobalConfig.quote_mint 命名的任何內容。請參閱 global-configreference/token-2022-support

金庫

base_vaultquote_vault 都是由 LaunchLab authority PDA 擁有的代幣帳戶,每個都在擁有其自己鑄幣的程式上建立 — 因此啟動可以有舊版基礎金庫和 Token-2022 報價金庫,或任何其他組合。token_program_flag 記錄哪個是哪個。地址儲存在 PoolState 上,也可以派生:
(在生產中依賴派生前,請從原始碼的 Initialize 帳戶結構體驗證確切的種子前綴。)

費用金庫

兩個 PDA 跨啟動聚合費用:
  • 創作者費用金庫 — PDA,種子為 [creator, quote_mint]。每次在同一報價鑄幣上賺取相同創作者費用的啟動都流入同一金庫。創作者通過 ClaimCreatorFee 清掃它。
  • 平台費用金庫 — PDA,種子為 [platform_config, quote_mint]。通過同一平台路由且使用同一報價鑄幣的每次啟動都流入同一金庫。平台的 platform_fee_wallet 通過 ClaimPlatformFeeFromVault 清掃它。還有一個每次啟動清掃變體(ClaimPlatformFee),直接從啟動的 quote_vault 提取,無需通過聚合金庫。
兩者都在第一次產生費用的交換時懶惰建立,在擁有報價鑄幣的程式上。針對舊版和 Token-2022 報價鑄幣執行啟動的創作者或平台最終會有一個金庫每個鑄幣,就像它已經為兩個不同的舊版鑄幣所做的那樣。 聚合金庫模式是讓高交易量創作者或平台在許多啟動中攤銷費用累積租金成本的原因。

報價金庫 ↔ real_quote

quote_vault.balancePoolState.real_quote 應保持同步。它們最多可以漂移三個待處理費用計數器的總和(quote_protocol_feeplatform_feemigrate_fee),這些計數器位於金庫中但屬於費用計數器而非曲線儲備。曲線數學始終使用 real_quote,從不使用原始金庫餘額。 畢業前不變式:

PlatformCurveRule

每個 (PlatformConfig, GlobalConfig) 對一個帳戶,持有該平台在該設定上允許的啟動形狀。PDA 種子為 [b"platform_curve_rule", platform_config, global_config]
帳戶建立時不持有任何群組,在每次群組變更時調整大小,因此其長度為 150 + Σ(14 + 18 × constraints),解碼器不得假設固定大小。群組是 OR 的:一旦一個群組的所有約束都成立,啟動就被允許。零個群組意味著無限制。 僅在擁有 PlatformConfig.restrict_curve_param1 時讀取它 — 在 0 時程式忽略帳戶,舊規則可能仍在那裡。欄位 ID、運算子和操作手冊在 products/launchlab/curve-rules

生命週期帳戶轉換

接下來去哪裡

來源:
  • 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 模組