跳轉到主要內容

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 自動翻譯,所有內容以英文版本為準。查看英文版 →
GlobalConfig協議層級的設定帳戶。可以有多個 — 以 (curve_type, index) 為鍵 — 每次啟動在 Initialize 時會選擇一個。選定的 GlobalConfig 上的數值隨後會成為該啟動參數的硬限制。若要進行平台層級的自訂(每平台費率、允許的曲線形狀、畢業時的 NFT 拆分),請參閱 products/launchlab/platform-config

是什麼

GlobalConfig 是一個按 (curve_type, index) 的單例 PDA,它固定了每次啟動必須遵守的協議側規則:
  • 允許的連結曲線類型(curve_type)。
  • 曲線在每次買賣時收取的交易費率。
  • 畢業時收取的遷移費用。
  • 供應量、鎖定率、賣出率和遷移率的下限。
  • 報價幣種(通常是包裝的 SOL 或 USDC) — 使用者用來購買的資產。
  • 三個協議側錢包:協議費擁有者、遷移費擁有者,以及兩個授權畢業到 AMM v4 / CPMM 的遷移控制錢包。
  • 一個選項標誌(requires_platform_auth),用於控制哪些平台可以使用此設定。
GlobalConfig 帳戶由 LaunchLab 程式管理員(跨 Anchor 型 Raydium 程式共享的硬編碼管理員公鑰 — 見 reference/program-addresses)建立和更新。

配置

// states/config.rs
pub const GLOBAL_CONFIG_SEED: &str = "global_config";

#[account]
pub struct GlobalConfig {
    pub epoch:                   u64,         // recent_epoch tracker
    pub curve_type:              u8,          // 0 = ConstantProduct, 1 = FixedPrice, 2 = LinearPrice
    pub index:                   u16,         // discriminator within a curve_type
    pub migrate_fee:             u64,         // SOL paid on graduation
    pub trade_fee_rate:          u64,         // 1/1_000_000 of volume
    pub max_share_fee_rate:      u64,         // 100 bps cap on platform share fee
    pub min_base_supply:         u64,         // floor on Initialize supply (no decimals)
    pub max_lock_rate:           u64,         // ceiling on vesting locked / supply
    pub min_base_sell_rate:      u64,         // floor on base_supply_graduation / supply
    pub min_base_migrate_rate:   u64,         // floor on tokens that seed the post-graduation pool
    pub min_quote_fund_raising:  u64,         // floor on quote_reserve_target (with decimals)
    pub quote_mint:              Pubkey,
    pub protocol_fee_owner:      Pubkey,      // claims protocol fees via CollectFee
    pub migrate_fee_owner:       Pubkey,      // claims migration fees via CollectMigrateFee
    pub migrate_to_amm_wallet:   Pubkey,      // can sign MigrateToAmm
    pub migrate_to_cpswap_wallet:Pubkey,      // can sign MigrateToCpswap
    pub requires_platform_auth:  u8,          // 0/1 flag
    pub padding_alignment:       [u8; 7],
    pub padding:                 [u64; 15],
}
PDA 推導:
const [globalConfig] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    Buffer.from(quoteMint.toBytes()),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);
(在簽署前從鏈上帳戶驗證確切的種子順序 — 程式的 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)。限制來自綁定 PlatformConfig平台份額費率(見 platform-config)。程式強制執行 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 — 使用者用來購買的資產。大多數啟動使用包裝的 SOL(So111…112)或 USDC(EPjF…Dt1v)。一個 GlobalConfig 綁定到一個報價幣種;需要不同報價的啟動以不同的 (curve_type, index) 為目標。
  • protocol_fee_owner — 簽署 CollectFee 並聲稱綁定到此設定的每次啟動上已累積協議費用的公鑰。儲存在鏈上;管理員可以通過 UpdateConfig 輪換它。
  • migrate_fee_owner — 簽署 CollectMigrateFee 的公鑰。

遷移錢包

兩個畢業路徑需要不同的簽署者:
  • migrate_to_amm_wallet — 必須簽署 MigrateToAmm。用於 migrate_type = 0 的啟動(畢業至 AMM v4 + OpenBook)。
  • migrate_to_cpswap_wallet — 必須簽署 MigrateToCpswap。用於 migrate_type = 1(畢業至 CPMM)。Token-2022 啟動始終採用此路徑。
這些通常由 Raydium 運營的畢業 crank 持有,因此畢業在曲線達到閾值後不久就進行,而不是等待建立者呼叫它。

requires_platform_auth

一個 u8 標誌(0 = 任何人都可以使用此設定;非零 = 只有具有有效 PlatformGlobalAccess PDA 的平台才能針對它啟動)。設定時,對此 GlobalConfig 的每個 Initialize 都必須包含一個匹配的 PlatformGlobalAccess 帳戶,證明該平台已通過 CreatePlatformGlobalAccess(僅限管理員的指令)獲得預授權。見 platform-config 了解平台端機制。

初始化時的預設值

呼叫 CreateConfig 時,程式會用硬編碼的預設值初始化許多欄位:
self.max_share_fee_rate     = 10_000;                  // 100 bps
self.min_base_supply        = 10_000_000;              // no decimals
self.max_lock_rate          = 300_000;                 // 30%
self.min_base_migrate_rate  = 200_000;                 // 20%
self.min_base_sell_rate     = 200_000;                 // 20%
self.min_quote_fund_raising = 30_000_000_000;
self.requires_platform_auth = 0;
管理員在建立時明確設定 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
  • 如果 requires_platform_auth != 0,則包含一個有效的 PlatformGlobalAccess PDA。
Initialize 之後,啟動的 PoolState 直接儲存 global_config 公鑰,因此綁定是永久的。

更新路徑

UpdateConfig 僅限管理員,接受 (param: u8, value: u64) 對。每個 param 值選擇要變更的欄位:
param變更的欄位
0migrate_fee
1trade_fee_rate
2max_share_fee_rate
3min_base_supply
4max_lock_rate
5min_base_sell_rate
6min_base_migrate_rate
7min_quote_fund_raising
錢包輪換(protocol_fee_ownermigrate_fee_ownermigrate_to_amm_walletmigrate_to_cpswap_wallet)採用單獨的 Pubkey 引數形狀;在編寫管理員交易之前檢查 update_config 源以獲得確切的調度表。 requires_platform_auth 通過 set_requires_platform_auth(bool) 切換。

從客戶端讀取 GlobalConfig

import { Raydium } from "@raydium-io/raydium-sdk-v2";

// Fetch by PDA derivation:
const [configPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    quoteMint.toBytes(),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);

const config = await raydium.launchpad.getGlobalConfig(configPda);
console.log(config.tradeFeeRate, config.minQuoteFundRaising);
對於列出所有可用設定的 UI,請遍歷 SDK 的 getAllGlobalConfigs 幫助程式或查詢鏡像它們的 LaunchLab API 端點;鏈上帳戶數量很少(實踐中為個位數)。

指標

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