跳转到主要内容

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,
);
(签名前验证链上账户的确切 seed 顺序——程序的 create_config 指令是权威来源。)

字段语义

curve_typeindex

这两个字段共同唯一标识一个 GlobalConfig。每个 (curve_type, index) 对有一个 GlobalConfig
  • curve_type = 0 — 常数乘积虚拟储备曲线。默认且最常用。
  • curve_type = 1 — 固定价格曲线。
  • curve_type = 2 — 线性价格曲线。
indexu16 类型,允许管理员为每种曲线类型发布多个配置(例如一个费率更紧凑,一个最低报价募集额更高)。在 Initialize 时,启动提供一个 (curve_type, index) 对,程序加载匹配的 GlobalConfig

费用

  • trade_fee_rate — 以交易量的 1/1_000_000 计价。应用于曲线上的每次购买和出售。protocol_fee_owner 通过 CollectFee 声称其份额。
  • migrate_fee — 在毕业时收取的固定费用(以 lamport 或报价单位计,取决于配置)。由 migrate_fee_owner 通过 CollectMigrateFee 声称。
  • max_share_fee_rate — 初始化为 10_000(100 个基点)。限制绑定的 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 运营的毕业自动执行者持有,因此毕业在曲线达到阈值后立即进行,而不是等待创建者调用。

requires_platform_auth

一个 u8 标志(0 = 任何人都可使用此配置;非零 = 仅具有有效 PlatformGlobalAccess PDA 的平台可针对此配置启动)。设置后,每个针对此 GlobalConfigInitialize 必须包含匹配的 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