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 自动翻译,所有内容以英文版本为准。查看英文版 →
PlatformConfig 是平台层级的配置,构建在 GlobalConfig 之上。GlobalConfig 定义的是协议范围的规则(「交易费 1%,初始供应量至少 1000 万,只有这个钱包可以毕业」),而 PlatformConfig 则是各启动平台(pump.fun、Raydium 自有 UI、第三方启动板)用来添加自己的费用、声明毕业后流动性的分配比例、限制允许的曲线形状,以及在链上展示品牌信息(名称、网站、图像)的工具。概述
每个PlatformConfig 账户为一个平台管理四项跨层的配置:
- 品牌信息——名称、网站、图像链接,全部内存中存储,便于任何区块浏览器或聚合器展示该代币的启动平台。
- 平台费用——除了协议
trade_fee_rate外额外的交易费(fee_rate)。累积到平台的platform_fee_wallet。由GlobalConfig.max_share_fee_rate限制最高 100 bps。 - NFT 迁移分配——三个整数(
platform_scale、creator_scale、burn_scale),总和为RATE_DENOMINATOR_VALUE = 1_000_000,用于将毕业后的流动性代币分为三部分:铸造给平台 NFT 钱包的部分、铸造给创建者 NFT 钱包的部分,以及销毁的部分(Burn & Earn)。仅在毕业目标为 CPMM(migrate_type = 1)时有意义。 - 曲线参数白名单——一个
Vec<PlatformCurveParam>,列出该平台允许的(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...)的精确组合。如果向量为空或所有条目都无效,则允许任何组合;否则启动必须与其中某个条目完全匹配。
create_platform_config 了解规范的 seed 列表。)
账户结构
platform_scale + creator_scale + burn_scale 必须等于 1_000_000(由 MigrateNftInfo::check 校验)。线上常见的分配方案:
(0, 100_000, 900_000)— 90% 流动性销毁,10% 给创建者。标准 pump 风格的公平启动。(50_000, 100_000, 850_000)— 小额平台分配(5%),10% 创建者,85% 销毁。(0, 0, 1_000_000)— 全部销毁,无 NFT 铸造。严格的「无内部人士」启动。
品牌字段
name、web 和 img 是内联字节数组,用零填充至其大小常数。要将它们读作字符串,需要截取到第一个 \0:
name: 64、web: 256、img: 256)特意设置得很宽松,以便平台能为区块浏览器和聚合器提供足够的元数据,而无需依赖链下存储。超过这些大小的任何内容在 CreatePlatformConfig 时会以 InvalidInput 报错。
费用机制
在绑定到某个PlatformConfig 的曲线上进行交换时,需要支付三层累积费用:
trade_fee累积到协议的protocol_fee_owner(通过CollectFee领取)。platform_fee累积到每个平台的金库(通过ClaimPlatformFee或ClaimPlatformFeeFromVault领取;见instructions)。creator_fee累积到按创建者公钥 + 报价币种密钥的每个创建者金库(通过ClaimCreatorFee领取)。
creator_fee_rate 由 MAX_CREATOR_FEE_RATE = 5000(50 bps)限制。fee_rate(平台费)由 GlobalConfig.max_share_fee_rate 限制最高 10000(100 bps)。
NFT 迁移分配(仅限 CPMM)
当启动毕业到 CPMM(migrate_type = 1,由 migrate_to_cpswap_wallet 签署)时,迁移指令将由 CPMM::InitializeWithPermission 铸造的流动性代币分为三部分:
LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE)包装为 NFT——该 NFT 的持有者有权无限期地领取累积的 CPMM 费用,但不能提取底层流动性。参见 products/launchlab/creator-fees 了解毕业后的 Fee Key 流程。
销毁份额发送给锁定程序且 is_burn = true,使得流动性代币永久无法访问——它们保证了池的价格底线,但不会向任何人返还费用。
当 migrate_type = 0(毕业到 AMM v4)时,NFT 分配字段被忽略,整个流动性根据 AMM v4 端的单独流程进行锁定/销毁。
曲线参数白名单
curve_params: Vec<PlatformCurveParam> 是平台用来限制其启动可以选择哪些曲线形状的机制。如果向量非空且至少有一个条目有效,程序在 Initialize 时会强制要求启动的参数至少与某一个条目完全匹配。
u64 字段为 u64::MAX,u8 字段为 u8::MAX,供应量/销售/募资字段为 0。所有字段都是哨兵值的 BondingCurveParam 是「允许任何」——相当于空白名单的行为。
Initialize 时的匹配算法:
- 过滤
curve_params中global_config与启动选择的GlobalConfig匹配的条目。 - 如果过滤后的列表为空,允许任何参数(该平台没有为此
GlobalConfig设置白名单)。 - 如果过滤后的列表中每个条目的
all_is_invalid()(每个字段都是通配符),允许任何参数。 - 否则遍历条目;对于每个条目,检查启动的参数是否与所有非通配符字段匹配。如果所有非通配符字段都匹配,接受并返回。
- 如果没有条目匹配,以
InvalidInput报错。
MAX_CURVE_PARAMS = 10 限制白名单大小。
PlatformGlobalAccess — 平台授权
当某个 GlobalConfig 有 requires_platform_auth = 1 时,针对它的每个 Initialize 都必须包含一个 PlatformGlobalAccess PDA,证明该平台已被预授权:
[b"platform_global_access", global_config, platform_config]。
协议管理员通过 CreatePlatformGlobalAccess 为每个 (GlobalConfig, PlatformConfig) 对创建一个这样的账户,通过 ClosePlatformGlobalAccess 撤销。没有这个账户,启动无法从受限制的平台绑定到那个 GlobalConfig。
读取方式
PoolState.platform_config 直接指向源 PlatformConfig——获取一次并缓存品牌信息。
更新方式
| 指令 | 签署者 | 变更内容 |
|---|---|---|
CreatePlatformConfig | 平台管理员(一次性) | 用 PlatformParams 初始化账户。 |
UpdatePlatformConfig | 平台管理员 | 通过参数 param: u8 分派的通用指令;每次调用修改一个字段。品牌字段、费率、锁仓钱包和各类钱包都可通过此修改。 |
UpdatePlatformCurveParam | 平台管理员 | 按 (global_config, index) 添加或替换一个 PlatformCurveParam 条目。 |
RemovePlatformCurveParam | 平台管理员 | 清除一个条目(设为全哨兵 = 通配符)。 |
ClaimPlatformFee | platform_fee_wallet | 从 PoolState.quote_vault 扫出每个池的平台费。 |
ClaimPlatformFeeFromVault | platform_fee_wallet | 扫出每平台费用金库(PDA 在 [platform_config, quote_mint])。 |
platform_fee_wallet、platform_nft_wallet、platform_vesting_wallet、platform_cp_creator、transfer_fee_extension_auth、cpswap_config)全部通过 UpdatePlatformConfig 进行。查阅源代码的 update_platform_config 分派表以了解准确的 param 代码。
常见陷阱
- 白名单哨兵设置错误。
BondingCurveParam的total_locked_amount = 0不是通配符——它匹配明确选择不使用锁仓的启动。该字段的通配符是u64::MAX。cliff_period和unlock_period也存在同样的陷阱。使用clear()(程序公开了)来正确设置哨兵。 - NFT 分配四舍五入错误。 三个份额必须精确求和至
1_000_000。在CreatePlatformConfig处的差一错误会报错;运行时的差一错误会多铸造或多销毁一个流动性单位,这正是严格等值检查防止的情况。 - 平台锁仓双重分配。 如果
platform_vesting_scale > 0,平台必须在启动募资结束后调用一次CreatePlatformVestingAccount;如果忘记了,该份额保持未分配和休眠(启动的total_locked_amount预算已消耗但平台永远无法领取)。 platform_cp_creator模糊性。 设为Pubkey::default()时,启动创建者被记录为毕业后 CPMM 池的pool_creator;设为真实密钥时,那个密钥被记录为代替。这影响后来谁可以调用CPMM::CollectCreatorFee。在平台配置创建时决定你想要哪种模式。
相关文档
products/launchlab/global-config— 协议层规则,启动必须满足。products/launchlab/vesting—platform_vesting_scale机制。products/launchlab/creator-fees— Fee Key NFT、Burn & Earn。products/launchlab/platforms— 平台集成者的操作指南。
raydium-launch/programs/launchpad/src/states/platform_config.rs—PlatformConfig、PlatformParams、MigrateNftInfo、PlatformCurveParam、BondingCurveParam、is_valid_curve_param。raydium-launch/programs/launchpad/src/states/platform_global_access.rs—PlatformGlobalAccess。raydium-launch/programs/launchpad/src/lib.rs—create_platform_config、update_platform_config、update_platform_curve_param、remove_platform_curve_param、create_platform_global_access、close_platform_global_access、claim_platform_fee、claim_platform_fee_from_vault。


