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)。限制来自绑定 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。每个新初始化的启动都使用此路径。
这些通常由 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