Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
GlobalConfig協議層級的設定帳戶。可以有多個——以 (curve_type, index) 為鍵——每次啟動在 Initialize 時恰好選擇一個。所選 GlobalConfig 上的值隨後成為該啟動參數的硬限制。如需平台層級的自訂(每平台費率、允許的曲線形狀、畢業時的 NFT 分割),請參閱 products/launchlab/platform-config

概述

GlobalConfig 是一個按 (curve_type, index) 的單例 PDA,它固定了每次啟動必須遵守的協議端規則:
  • 允許的結合曲線類型(curve_type)。
  • 曲線在每次買賣時收取的交易費率。
  • 畢業時收取的遷移費。
  • 供應量、鎖定率、賣出率和遷移率的下限。
  • 報價幣種(通常是 wrapped SOL 或 USDC)——用戶購買時使用的資產。
  • 四個協議端錢包:協議費所有者、遷移費所有者,以及為 CPMM 和舊版 AMM v4 畢業保留的兩個遷移控制錢包。
GlobalConfig 帳戶可由 LaunchLab 程式管理員或委派的建立設定權限建立。只有管理員可以更新現有設定。請參閱 reference/program-addresses 以了解規範權限。

佈局

PDA 推導:
(簽署前請從鏈上帳戶驗證確切的種子順序——程式的 create_config 指令是真實來源。)

欄位語義

curve_typeindex

這兩個欄位唯一地鍵定一個 GlobalConfig。每個 (curve_type, index) 對應一個 GlobalConfig
  • curve_type = 0 — 常數乘積虛擬儲備曲線。預設且最常用。
  • curve_type = 1 — 固定價格曲線。
  • curve_type = 2 — 線性價格曲線。
index 是一個 u16,允許管理員為每種曲線類型發佈多個設定(例如,一個費率更緊,一個最小報價籌集更高)。在 Initialize 時,啟動提供一個 (curve_type, index) 對,程式載入匹配的 GlobalConfig

費用

  • trade_fee_rate — 以交易量的 1/1_000_000 計價。應用於曲線上的每次買賣。protocol_fee_owner 通過 CollectFee 領取其份額。
  • migrate_fee — 在畢業時一次性收取的固定費用,以 lamports(或報價單位,取決於設定)計價。由 migrate_fee_owner 通過 CollectMigrateFee 領取。
  • max_share_fee_rate — 初始化為 10_000(100 bps)。限制 BuyExactInBuyExactOutSellExactInSellExactOut 接受的 share_fee_rate 參數——在交易期間直接支付給份額接收者的推薦費。它約束 PlatformConfig.fee_rate;該費率有自己的上限,詳見 platform-configCreateConfigUpdateConfig 都強制執行 trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE

供應量和費率下限

這些下限約束啟動在 Initialize 時可以選擇的曲線形狀參數。如果建立者的 CurveParams 違反任何下限,Initialize 將以 InvalidInput 回退。
  • min_base_supply — 曲線可以聲明的最小 supply(無小數)。預設為 10_000_000
  • max_lock_rate — 以 1/1_000_000 計價;預設 300_000(30%)。通過 total_locked_amount <= supply * max_lock_rate / 1_000_000 約束質押。
  • min_base_sell_rate — 以 1/1_000_000 計價;預設 200_000(20%)。從下方約束 base_supply_graduation / supply
  • min_base_migrate_rate — 以 1/1_000_000 計價;預設 200_000(20%)。約束留下來為畢業後池提供種子的代幣數量。
  • min_quote_fund_raising — 啟動可以聲明的最小 quote_reserve_target(含小數)。預設為報價幣種的 30_000_000_000 單位。

報價幣種和協議錢包

  • quote_mint — 用戶購買時使用的資產。大多數啟動使用 wrapped SOL(So111…112)或 USDC(EPjF…Dt1v)。一個 GlobalConfig 綁定到一個報價幣種;需要不同報價的啟動目標是不同的 (curve_type, index)。幣種可由 SPL Token 程式或 Token-2022 擁有——見下文。
  • protocol_fee_owner — 簽署 CollectFee 並領取綁定到此設定的每次啟動上累積的協議費的公鑰。儲存在鏈上;管理員可通過 UpdateConfig 輪換它。
  • migrate_fee_owner — 簽署 CollectMigrateFee 的公鑰。

Token-2022 報價幣種

CreateConfig 接受 Token-2022 quote_mint,綁定到此類設定的池從頭到尾都使用它:報價金庫、兩個費用金庫和份額費接收者的代幣帳戶都在 Token-2022 上建立,交換指令考慮報價端的 TransferFeeConfigPoolState.token_program_flag 位 1 按啟動記錄選擇。 在依賴其中一個之前,有兩個值得了解的限制:
  • 已棄用的 Initialize 無法針對它啟動。 只有 InitializeV2InitializeWithToken2022 接受 Token-2022 報價程式。請參閱 instructions
  • 不應用擴展允許清單。 與 CPMM 和 CLMM 不同,LaunchLab 不篩選報價幣種的擴展——CreateConfig 按原樣接受幣種,因此唯一的門檻是管理員對哪些幣種綁定到設定的自由裁量權。程式的 NoSupportExtension 檢查僅涵蓋 LaunchLab 自己建立的 Token-2022 基礎幣種。將綁定視為高信任操作;請參閱 reference/token-2022-support

遷移錢包

兩個儲存的畢業錢包需要不同的簽署者:
  • migrate_to_amm_wallet — 為現有舊版啟動簽署 MigrateToAmm,其儲存的 migrate_type = 0
  • migrate_to_cpswap_wallet — 簽署 MigrateToCpswap。每個新初始化的啟動都使用此路徑。
這些通常由 Raydium 運營的畢業 crank 持有,因此畢業在曲線達到閾值後不久進行,而不是等待建立者呼叫它。

平台端允許清單

GlobalConfig 不再有 requires_platform_auth。其前一個位元組是填充,因此帳戶大小不變。存取現在由 PlatformConfig.restrict_global_config 和該平台管理員建立的 PlatformAllowConfig 帳戶控制。請參閱 platform-config

初始化時的預設值

呼叫 CreateConfig 時,程式使用硬編碼預設值為許多欄位提供種子:
管理員在建立時明確設定 curve_typeindexmigrate_feetrade_fee_ratequote_mint 和四個錢包公鑰;後續值可通過 UpdateConfig 調整。

啟動如何選擇 GlobalConfig

Initialize 時,建立者傳遞:
  • (curve_type, index) 以選擇要載入的 GlobalConfig PDA。
  • CurveParams 描述曲線形狀(supplytotal_base_selltotal_quote_fund_raisingmigrate_type)。
  • VestingParams 描述鎖定供應量。
  • MintParams 用於基礎幣種。
程式強制執行:
  • curve_type 匹配 global_config.curve_type
  • supply >= global_config.min_base_supply
  • total_locked_amount <= supply * max_lock_rate / 1_000_000
  • total_base_sell >= supply * min_base_sell_rate / 1_000_000
  • (supply − total_base_sell − total_locked_amount) >= supply * min_base_migrate_rate / 1_000_000 — 即,有足夠的代幣留下來為畢業後池提供種子。
  • total_quote_fund_raising >= min_quote_fund_raising
  • migrate_type == 1CPSWAP)。
  • 如果選定的平台有 restrict_global_config == 1,則包含匹配的 PlatformAllowConfig
Initialize 後,啟動的 PoolState 直接儲存 global_config 公鑰,因此綁定是永久的。

更新路徑

UpdateConfig 僅限管理員,接受一個 (param: u8, value: u64) 對。每個 param 值選擇要變更的欄位: 錢包輪換(protocol_fee_ownermigrate_fee_ownermigrate_to_amm_walletmigrate_to_cpswap_wallet)採用單獨的 Pubkey 參數形狀;在組成管理員交易前,檢查 update_config 原始碼以了解確切的分派表。 前面的 UpdateConfig 選擇器 12 用於平台授權已移除。平台管理員現在管理自己的允許清單。

從用戶端讀取 GlobalConfig

對於列出所有可用設定的 UI,遍歷 SDK 的 getAllGlobalConfigs 幫助程式或查詢鏡像它們的 LaunchLab API 端點;鏈上帳戶計數很小(實際上是個位數)。

指標

來源:
  • raydium-launch/programs/launchpad/src/states/config.rsGlobalConfig 結構和 initialize
  • raydium-launch/programs/launchpad/src/lib.rscreate_configupdate_config