Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
PlatformConfig 是位於 GlobalConfig 之上的平台級覆蓋層。GlobalConfig 定義協議範圍的規則(「交易費為 1%、供應量至少 10M、只有此錢包可以畢業」),而 PlatformConfig 是每個啟動平台(pump.fun、Raydium 自有 UI、第三方啟動板)用來新增其費用、聲稱畢業後 LP 的份額、限制其啟動可選擇的曲線形狀,以及在鏈上展示其品牌(名稱、網站、圖片)的方式。

概述

PlatformConfig 帳戶為平台擁有五個跨領域的關注點:
  1. 品牌 — 名稱、網站、圖片連結,全部內聯儲存,以便任何瀏覽器或聚合器都可以顯示啟動代幣的平台。
  2. 平台費用 — 在協議 trade_fee_rate 之上的額外交易費用(fee_rate)。累積到平台的 platform_fee_wallet。由 GlobalConfig.max_share_fee_rate 限制在 100 bps。
  3. LP 遷移分配 — 三個儲存的整數(platform_scalecreator_scaleburn_scale),總和為 1_000_000。在 2026-08-17 升級之前,創作者規模產生了一個單獨的創作者費用密鑰。升級後執行的遷移將前兩個合併為一個平台擁有的鎖定 LP 份額;其餘的被銷毀。
  4. 曲線參數白名單 — 一個 Vec<PlatformCurveParam>,列出此平台允許的確切 (supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...) 組合。如果向量為空或所有條目都無效,任何組合都被允許;否則啟動必須完全匹配其中一個條目。
  5. 全局配置允許清單 — 一個選擇加入的限制,要求為選定的 GlobalConfig 建立平台建立的 PlatformAllowConfig
PDA 推導:
(請參閱原始碼中的 create_platform_config 以獲取規範的種子清單。)

佈局

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 鑄造。嚴格的「無內部人士」啟動。

品牌欄位

namewebimg 是內聯位元組陣列,用零填充至其大小常數。要將它們讀取為字串,請切片至第一個 \0
常數故意設定得很寬鬆(name: 64web: 256img: 256),以便平台可以為瀏覽器和聚合器包含足夠的元資料,而無需觸及鏈外儲存。任何超過這些大小的內容都會在 CreatePlatformConfig 時以 InvalidInput 還原。

費用機制

綁定到 PlatformConfig 的曲線上的交換收取三層費用:
  • trade_fee 累積到協議的 protocol_fee_owner(通過 CollectFee 聲稱)。
  • platform_fee 累積到每個平台的保管庫(通過 ClaimPlatformFeeClaimPlatformFeeFromVault 聲稱;請參閱 instructions)。
  • creator_fee 累積到由創作者的公鑰 + 報價鑄造廠鍵入的每個創作者保管庫(通過 ClaimCreatorFee 聲稱)。
creator_fee_rateMAX_CREATOR_FEE_RATE = 5000(50 bps)限制。fee_rate(平台費用)由 GlobalConfig.max_share_fee_rate 限制在 10000(100 bps)。

NFT 遷移分配(僅限 CPMM)

當啟動畢業到 CPMM 時,遷移指令將 CPMM::InitializeWithPermission 鑄造的 LP 代幣分為兩種方式:
如果 lp_to_platform 非零,LP 鎖定程式將其包裝成一個由 platform_nft_wallet 擁有的費用密鑰 NFT。這取代了升級前建立單獨平台和創作者費用密鑰的行為。升級前完成的遷移建立的費用密鑰保持不變。此 LP 費用權利與由 platform_cp_creator 控制的 CPMM 創作者費用分開。 銷毀份額被直接銷毀,因此沒有帳戶可以提取它或聲稱該份額代表的 LP 費用。 具有儲存 migrate_type = 0 的現有啟動仍可使用舊版 AMM v4 路徑。新初始化拒絕該遷移類型。

曲線參數白名單

curve_params: Vec<PlatformCurveParam> 是平台限制其啟動可選擇的曲線形狀的機制。如果向量非空且至少一個條目有效,程式在 Initialize 時強制啟動的參數完全匹配至少一個條目。
每個欄位都有一個哨兵值,表示萬用字元(任何值都匹配):u64 欄位為 u64::MAXu8 欄位為 u8::MAX,供應量/銷售/籌資欄位為 0。具有所有哨兵的 BondingCurveParam 是「允許任何東西」— 等同於空白名單行為。 Initialize 時的匹配演算法:
  1. 篩選 curve_paramsglobal_config 與啟動選擇的 GlobalConfig 相符的條目。
  2. 如果篩選清單為空,允許任何參數(平台未為此 GlobalConfig 白名單任何內容)。
  3. 如果篩選清單中的每個條目都有 all_is_invalid()(每個欄位都是萬用字元),允許任何參數。
  4. 否則迭代條目;對於每個條目,根據每個非萬用字元欄位檢查啟動的參數。如果所有非萬用字元欄位都匹配,接受並返回。
  5. 如果沒有條目匹配,以 InvalidInput 還原。
這讓平台可以說「我們只允許標準 1B 供應量 / 800M 銷售 / 30k USDC 籌資 / 無質押形狀」,方法是為這四個欄位寫入具體值,其他地方為萬用字元的單個條目。或者更嚴格的平台可能會列舉三個或四個離散形狀,每個支援的啟動層級一個。 MAX_CURVE_PARAMS = 10 限制白名單大小。

PlatformAllowConfig — 限制平台

每個平台決定是否限制其啟動可使用的 GlobalConfig 帳戶。使用 UpdatePlatformConfig::RestrictGlobalConfig(0 | 1) 設定 restrict_global_config
PDA 種子:[b"platform_allow_config", platform_config, global_config] 平台管理員通過 CreatePlatformAllowConfigClosePlatformAllowConfig 為每個允許的對建立或關閉一個帳戶。當限制為 1 時,初始化在 remaining_accounts 中搜尋預期的 PDA,並以 NotEnoughRemainingAccounts 拒絕缺失帳戶。當限制為 0 時,不需要允許帳戶。 前協議管理員管理的 PlatformGlobalAccess 帳戶及其建立/關閉指令已停用。現有 PlatformConfigGlobalConfig 大小不變,但解碼器必須用新平台標誌替換舊全局標誌。舊存取 PDA 不被新檢查消耗。

讀取路徑

對於顯示「此代幣從何處啟動」的 UI,PoolState.platform_config 直接指向原始 PlatformConfig — 一次性獲取並快取品牌。

更新路徑

錢包輪換(platform_fee_walletplatform_nft_walletplatform_vesting_walletplatform_cp_creatortransfer_fee_extension_authcpswap_config)都通過 UpdatePlatformConfig 進行。閱讀原始碼的 update_platform_config 分派表以獲取確切的 param 代碼。

常見陷阱

  • 白名單哨兵設定錯誤。 具有 total_locked_amount = 0BondingCurveParam 不是萬用字元 — 它匹配明確選擇退出質押的啟動。該欄位的萬用字元是 u64::MAXcliff_periodunlock_period 也存在相同的陷阱。使用 clear()(程式公開的)正確設定哨兵。
  • NFT 分配四捨五入。 三個規模必須完全總和為 1_000_000CreatePlatformConfig 時的差一錯誤會還原;執行時的差一會鑄造或銷毀一個額外的 LP 單位,這正是嚴格相等檢查的目的。
  • 平台質押雙重分配。 如果 platform_vesting_scale > 0,平台必須在啟動的籌資結束後呼叫 CreatePlatformVestingAccount 一次;如果忘記,該份額將永遠保持未分配和休眠(啟動的 total_locked_amount 預算被消耗,但平台永遠不會聲稱)。
  • platform_cp_creator 歧義。 當設定為 Pubkey::default() 時,啟動創作者被記錄為畢業後 CPMM 池的 pool_creator;當設定為真實密鑰時,該密鑰被記錄。這決定了畢業後 CPMM 創作者費用的受益人以及誰可以簽署原始 CPMM::CollectCreatorFee 路徑。無許可收集路徑仍向此記錄密鑰的規範 ATA 支付。在平台配置建立時決定你想要哪個模型。
  • 沒有允許帳戶的限制。 在建立所需的 PlatformAllowConfig 之前啟用 restrict_global_config 會阻止選擇該配置的新啟動。

指標

來源:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfigPlatformParamsMigrateNftInfoPlatformCurveParamBondingCurveParamis_valid_curve_param
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig
  • raydium-launch/programs/launchpad/src/lib.rs — 平台配置和允許配置端點。