本页内容由 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。
布局
create_config 指令是真实来源。)
字段语义
curve_type 和 index
这两个字段唯一标识一个 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— 用户购买的资产。大多数启动使用 wrapped SOL(So111…112)或 USDC(EPjF…Dt1v)。一个GlobalConfig绑定到一个报价币种;需要不同报价的启动针对不同的(curve_type, index)。protocol_fee_owner— 签署CollectFee并声称绑定到此配置的每个启动上累积的协议费的公钥。存储在链上;管理员可以通过UpdateConfig轮换它。migrate_fee_owner— 签署CollectMigrateFee的公钥。
迁移钱包
两个存储的毕业钱包需要不同的签名者:migrate_to_amm_wallet— 为存储的migrate_type = 0的现有旧版启动签署MigrateToAmm。migrate_to_cpswap_wallet— 签署MigrateToCpswap。每个新初始化的启动都使用此路径。
平台端允许列表
GlobalConfig 不再有 requires_platform_auth。其前字节是填充,因此账户大小不变。访问现在由 PlatformConfig.restrict_global_config 和该平台管理员创建的 PlatformAllowConfig 账户控制。参见 platform-config。
初始化时的默认值
调用CreateConfig 时,程序使用硬编码默认值为许多字段提供种子:
curve_type、index、migrate_fee、trade_fee_rate、quote_mint 和四个钱包公钥;后续值可以通过 UpdateConfig 调整。
启动如何选择 GlobalConfig
在 Initialize 时,创建者传递:
(curve_type, index)以选择要加载的GlobalConfigPDA。CurveParams描述曲线形状(supply、total_base_sell、total_quote_fund_raising、migrate_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 == 1(CPSWAP)。- 如果选定的平台有
restrict_global_config == 1,则包含匹配的PlatformAllowConfig。
Initialize 后,启动的 PoolState 直接存储 global_config 公钥,因此绑定是永久的。
更新路径
UpdateConfig 仅限管理员,接受一个 (param: u8, value: u64) 对。每个 param 值选择要改变的字段:
钱包轮换(
protocol_fee_owner、migrate_fee_owner、migrate_to_amm_wallet、migrate_to_cpswap_wallet)采用单独的 Pubkey 参数形状;在编写管理员交易前检查 update_config 源以获取确切的分派表。
前面的 UpdateConfig 选择器 12 用于平台授权已被移除。平台管理员现在管理自己的允许列表。
从客户端读取 GlobalConfig
getAllGlobalConfigs 助手或查询镜像它们的 LaunchLab API 端点;链上账户数量很少(实际上是个位数)。
指针
products/launchlab/platform-config— 按平台的覆盖层,进一步约束曲线形状。products/launchlab/accounts— 启动的完整账户图。products/launchlab/instructions—Initialize和更新指令。reference/program-addresses— 管理员公钥、程序 ID、共享权限。
raydium-launch/programs/launchpad/src/states/config.rs—GlobalConfig结构和initialize。raydium-launch/programs/launchpad/src/lib.rs—create_config、update_config。

