本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
PlatformConfig 是位于 GlobalConfig 之上的平台级覆盖层。GlobalConfig 定义协议范围的规则(“交易费为 1%,供应量至少 1000 万,只有这个钱包可以毕业”),而 PlatformConfig 是每个启动平台(pump.fun、Raydium 自有 UI、第三方启动板)用来添加其费用、声称毕业后 LP 的份额、限制其启动可以选择的启动参数,以及在链上展示其品牌(名称、网站、图像)的方式。概述
PlatformConfig 账户为平台拥有五个跨领域的关注点:
- 品牌 — 名称、网站、图像链接,全部内联存储,以便任何浏览器或聚合器都可以显示启动代币的平台。
- 平台费 — 在协议
trade_fee_rate之上的额外交易费(fee_rate)。累积到平台的platform_fee_wallet。在创建和更新路径上均限制为 500 bps(50000),从 2026-08-26 的 100 bps(10000)提高 — 见费率上限。 - LP 迁移分割 — 三个存储的整数(
platform_scale、creator_scale、burn_scale),总和为1_000_000。在 2026-08-17 升级之前,创建者规模产生单独的创建者费用密钥。升级后执行的迁移将前两个合并为一个平台拥有的锁定 LP 份额;其余的被销毁。 - 启动参数规则 — 可选的限制(
restrict_curve_param),要求启动满足其选择的GlobalConfig的PlatformCurveRule账户。规则支持值范围、替代层级和代币类型门控;它们存在于自己的账户中,而不是在PlatformConfig上。 - 全局配置允许列表 — 可选的限制,要求为选定的
GlobalConfig创建平台的PlatformAllowConfig。
create_platform_config 获取规范种子列表。)
布局
PlatformCurveRule 账户之前,它持有尾部的 Vec<PlatformCurveParam>;restrict_curve_param、curve_rule_manager 和 vec 长度前缀占用的 4 字节都来自填充,因此字节计数和每个早期字段偏移都保持不变。有关解码器必须更改的内容,请参阅更改日志条目。
platform_scale + creator_scale + burn_scale 必须等于 1_000_000。在 2026-08-17 升级之前,creator_scale 被单独锁定,其费用密钥转到代币创建者。对于升级后执行的迁移,它被添加到 platform_scale,其锁定 LP 权利转到平台。更新逻辑下的示例结果:
(0, 100_000, 900_000)— 90% LP 销毁,10% 锁定到平台。(50_000, 100_000, 850_000)— 85% 销毁,15% 锁定到平台。(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声称)。
费率上限
两个费率都以1/1_000_000 计价,因此 5000 是 50 bps,50000 是 500 bps。
fee_rate 的两个强制执行点是不同文件中的单独 require! 调用,因此它们携带不同的错误代码,但它们应用相同的上限。在任何允许的费率下创建的平台可以稍后编辑,包括通过一次重写每个字段的 AllInfo 批量变体。
两个 fee_rate 上限最初都是 100 bps(10000)。更新上限在 2026-01-27 移至 25000(250 bps);在 2026-08-26 两者都移至 50000(500 bps) — 见更改日志条目。
GlobalConfig.max_share_fee_rate 不限制任何一个费率。它限制四个交换指令采用的每个交易 share_fee_rate 参数 — 推荐费 — 仅此而已。见global-config。
Token-2022 转账费权限
transfer_fee_extension_auth 命名平台密钥,当通过 InitializeWithToken2022 创建启动并附加转账费时,该密钥最终会持有基础铸币厂的 TransferFeeConfig 权限。该扩展携带两个权限,它们在启动生命周期的不同点被移交:
在 2026-08-27 之前,铸币厂是用两个权限上的
authority PDA 创建的,两者都在毕业时移到平台。该程序不公开任何提取扣留或收获指令,因此在债券曲线阶段扣留的费用在启动毕业之前是无法到达的。在铸币厂创建时在提取端写入使它们可从第一笔交易声称 — 见更改日志条目。
值得规划的两个后果:
- 在启动前设置字段,而不是之后。 在
transfer_fee_extension_auth为Pubkey::default()时创建的启动将authorityPDA 放在提取端。稍后设置字段仍然有效 — 毕业找到 PDA 就位并移交权限 — 但在此期间没有任何东西可以提取扣留的余额。 - 在启动中旋转字段会分割两个权限。 在启动的创建和毕业之间更改
transfer_fee_extension_auth,铸币厂的提取扣留权限保留在创建时配置的密钥(PDA 不再持有它,所以迁移跳过该移交),而费用配置权限转到新密钥。在启动之间旋转,或计划通过 Token-2022 直接协调两个密钥。
Pubkey::default() 的平台永久将两个权限保留在 authority PDA 上:费率永远无法更改,扣留的余额永远无法提取。仅当平台打算持有这些密钥时才将转账费附加到启动。
NFT 迁移分割(仅 CPMM)
当启动毕业到 CPMM 时,迁移指令将CPMM::InitializeWithPermission 铸造的 LP 代币分为两种方式:
lp_to_platform 非零,LP-Lock 程序将其包装成一个由 platform_nft_wallet 拥有的费用密钥 NFT。这替代了创建单独平台和创建者费用密钥的升级前行为。由升级前完成的迁移创建的费用密钥保持不变。此 LP 费用权利与由 platform_cp_creator 控制的 CPMM 创建者费用分开。
销毁片段直接被销毁,因此没有账户可以提取它或声称该份额代表的 LP 费用。
具有存储 migrate_type = 0 的现有启动仍可使用旧版 AMM v4 路径。新初始化拒绝该迁移类型。
启动参数规则
restrict_curve_param 是开关。在 0 时,程序根本不读取规则。在 1 时,通过此平台路由的每个启动必须满足其选择的 GlobalConfig 的 PlatformCurveRule 账户,启动构建器必须将该账户附加到 remaining_accounts。
Eq、Gte、Lte 和 Neq 的 (field, op, value) 三元组。这涵盖了值范围、替代层级、毕业估值上限、迁移下限、代币类型门控和时间限制的组 — 完整模型、字段表和九个工作手册在 products/launchlab/curve-rules。
两件事属于这里而不是那一页:
curve_rule_manager是委托,不是转移。 通过UpdatePlatformConfig::CurveRuleManager设置它,该钱包可以创建、更新、删除和关闭此平台的规则账户,而无需管理员密钥。平台管理员并行保持相同的权力,因此旋转或清除字段会恢复控制。Pubkey::default()意味着只有管理员可以管理规则。它不能翻转restrict_curve_param,这仍然是仅管理员的调用。- 规则在
GlobalConfig之上强制执行,永远不是代替。 规则检查在配置自己的限制之前运行,只能缩小它们。
curve_params: Vec<PlatformCurveParam> 白名单,它只能测试精确相等,最多在所有配置中持有 10 个条目,并增加了 PlatformConfig 账户本身。使用它的平台由协议在一次性通过中迁移;旧版字段、其两个指令和 MAX_CURVE_PARAMS 已消失。
PlatformAllowConfig — 限制平台
每个平台决定是否限制其启动可能使用的 GlobalConfig 账户。使用 UpdatePlatformConfig::RestrictGlobalConfig(0 | 1) 设置 restrict_global_config。
[b"platform_allow_config", platform_config, global_config]。
平台管理员通过 CreatePlatformAllowConfig 和 ClosePlatformAllowConfig 为每个允许的对创建或关闭一个账户。当限制为 1 时,初始化在 remaining_accounts 中搜索预期的 PDA,并以 NotEnoughRemainingAccounts 拒绝缺失的账户。当限制为 0 时,不需要允许账户。
前面的协议管理员管理的 PlatformGlobalAccess 账户及其创建/关闭指令已停用。现有 PlatformConfig 和 GlobalConfig 大小不变,但解码器必须用新的平台标志替换旧的全局标志。旧访问 PDA 不被新检查消费。
读取路径
PoolState.platform_config 直接指向原始 PlatformConfig — 获取一次并缓存品牌。
更新路径
钱包轮换(
platform_fee_wallet、platform_nft_wallet、platform_vesting_wallet、platform_cp_creator、transfer_fee_extension_auth、cpswap_config)都通过 UpdatePlatformConfig 进行。阅读源代码的 update_platform_config 调度表以获取确切的 param 代码。
常见陷阱
- 在构建器更新之前启用
restrict_curve_param。 当它为1时,规则 PDA 必须在每个启动的remaining_accounts中,即使对于没有规则账户的配置 — 缺失的账户是NotEnoughRemainingAccounts,而不是通过。首先发布构建器更改,然后翻转标志。 - 启用
restrict_curve_param且规则为空。 持有零组的规则,或持有零约束的组,允许一切。启用标志本身不是限制;首先写入组,使用 SDK 检查 验证它们,并在 devnet 上排练整个序列。 - NFT 分割舍入。 三个规模必须精确总和为
1_000_000。CreatePlatformConfig处的差一错误会回滚;运行时的差一会铸造或销毁一个额外的 LP 单位,这正是严格相等检查所在的位置。 - 平台归属双重分配。 如果
platform_vesting_scale > 0,平台必须在启动的筹款结束后调用CreatePlatformVestingAccount一次;如果它忘记了,该份额保持未分配和休眠状态(启动的total_locked_amount预算被消费但平台永远不声称)。 platform_cp_creator歧义。 当设置为Pubkey::default()时,启动创建者被记录为毕业后 CPMM 池的pool_creator;当设置为真实密钥时,该密钥被记录。这决定了毕业后 CPMM 创建者费用的受益人以及谁可以签署原始CPMM::CollectCreatorFee路径。无权限收集路径仍向此记录密钥的规范 ATA 支付。在平台配置创建时决定你想要哪个模型。transfer_fee_extension_auth设置晚或旋转。 该字段每个 Token-2022 启动读取两次 — 一次在铸币厂创建时用于withdraw_withheld_authority,一次在毕业时用于transfer_fee_config_authority— 所以在这两个时刻之间更改的值将两个权限留在不同的密钥上。见 Token-2022 转账费权限。- 限制而无允许账户。 在创建所需的
PlatformAllowConfig之前启用restrict_global_config会阻止选择该配置的新启动。
指针
products/launchlab/global-config— 启动必须满足的协议端规则。products/launchlab/vesting—platform_vesting_scale机制。products/launchlab/creator-fees— 创建者费用与平台费用密钥权利。products/launchlab/platforms— 平台集成商的操作指南。
raydium-launch/programs/launchpad/src/states/platform_config.rs—PlatformConfig、PlatformParams、MigrateNftInfo、is_curve_rule_manager、is_platform_admin。raydium-launch/programs/launchpad/src/states/platform_curve_rule.rs—PlatformCurveRule、CurveRuleGroup、ParamConstraint。raydium-launch/programs/launchpad/src/states/platform_allow_config.rs—PlatformAllowConfig。raydium-launch/programs/launchpad/src/instructions/platform/update_platform_config.rs—PlatformConfigParam调度和强制执行更新时费率上限的每个字段设置器。raydium-launch/programs/launchpad/src/lib.rs— 平台配置和允许配置入口点。raydium-launch/programs/launchpad/src/instructions/initialize_with_token_2022.rs—transfer_fee_extension_auth被写入新铸币厂的TransferFeeConfig的位置。raydium-launch/programs/launchpad/src/instructions/admin/migrate_to_cpswap.rs— 毕业时权限移交及其get_withdraw_withheld_authority守卫。

