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 上的 mint_authority(畢業前)。
  • CPMM 畢業 CPI 上的簽署者,以及現有狀態的舊版 AMM v4 畢業。
  • ClaimVestedToken 從基礎金庫轉出的簽署者。
  • Token-2022 基礎鑄幣的 TransferFeeConfig 上的 transfer_fee_config_authority,用於整個畢業前階段——以及其 withdraw_withheld_authority,但僅當平台未設定 PlatformConfig.transfer_fee_extension_auth 時。
mint_authorityMigrateToCpswap 或舊版 MigrateToAmm 呼叫後立即被撤銷,因此供應永久固定。 兩個額外的 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 模組