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

概述

PlatformConfig 帳戶為平台擁有五個跨領域的關注點:
  1. 品牌 — 名稱、網站、圖片連結,全部內聯儲存,以便任何瀏覽器或聚合器都能顯示啟動代幣的平台。
  2. 平台費用 — 在協議 trade_fee_rate 之上的額外交易費用(fee_rate)。累積到平台的 platform_fee_wallet。在建立和更新路徑上均限制為 500 bps(50000),於 2026-08-26 從 100 bps(10000)提高 — 見費率上限
  3. LP 遷移分配 — 三個儲存的整數(platform_scalecreator_scaleburn_scale),總和為 1_000_000。在 2026-08-17 升級之前,創作者規模產生單獨的創作者費用金鑰。升級後執行的遷移將前兩者合併為一個平台擁有的鎖定 LP 份額;其餘部分被銷毀。
  4. 啟動參數規則 — 可選的限制(restrict_curve_param),要求啟動滿足所選 GlobalConfigPlatformCurveRule 帳戶。規則支援數值範圍、替代層級和代幣類型閘門;它們位於自己的帳戶中,而不是在 PlatformConfig 上。
  5. 全域設定允許清單 — 可選的限制,要求為所選 GlobalConfig 建立平台建立的 PlatformAllowConfig
PDA 推導:
(見原始碼中的 create_platform_config 以取得規範種子清單。)

佈局

該帳戶固定為 944 位元組。在 2026-08-31 版本將啟動參數移至 PlatformCurveRule 帳戶之前,它持有尾部 Vec<PlatformCurveParam>restrict_curve_paramcurve_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 鑄造。嚴格的「無內部人士」啟動。

品牌欄位

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

費用機制

在綁定到 PlatformConfig 的曲線上進行的交換會收取三層費用:
  • trade_fee 累積到協議的 protocol_fee_owner(透過 CollectFee 聲稱)。
  • platform_fee 累積到每個平台的保管庫(透過 ClaimPlatformFeeClaimPlatformFeeFromVault 聲稱;見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_authPubkey::default() 時建立的啟動會在提取端放置 authority PDA。稍後設定欄位仍然有效 — 畢業會找到 PDA 並移交授權 — 但在此期間沒有任何內容可以提取扣留的餘額。
  • 在啟動中旋轉欄位會分割兩個授權。 在啟動建立和畢業之間變更 transfer_fee_extension_auth,鑄造幣的提取扣留授權會保留在建立時配置的金鑰(PDA 不再持有它,因此遷移會跳過該移交),而費用配置授權會轉到新金鑰。在啟動之間旋轉,或計劃透過 Token-2022 直接協調兩個金鑰。
在啟動的整個生命週期中將欄位保留在 Pubkey::default() 的平台會永久在 authority PDA 上保留兩個授權:費率永遠無法變更,扣留的餘額永遠無法提取。只有在平台打算持有這些金鑰時才將轉帳費用附加到啟動。

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 路徑。新初始化拒絕該遷移類型。

啟動參數規則

restrict_curve_param 是開關。在 0 時,程式根本不讀取規則。在 1 時,透過此平台路由的每個啟動必須滿足其選擇的 GlobalConfigPlatformCurveRule 帳戶,啟動建構器必須將該帳戶附加到 remaining_accounts
規則是允許的啟動形狀的選單:一個檢查組內的約束是 AND 的,組是 OR 的,每個約束是支援 EqGteLteNeq(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
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 代碼。

常見陷阱

  • 在建構器更新之前啟用 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 會阻止選擇該設定的新啟動。

指標

來源:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfigPlatformParamsMigrateNftInfois_curve_rule_manageris_platform_admin
  • raydium-launch/programs/launchpad/src/states/platform_curve_rule.rsPlatformCurveRuleCurveRuleGroupParamConstraint
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig
  • raydium-launch/programs/launchpad/src/instructions/platform/update_platform_config.rsPlatformConfigParam 分派和強制執行更新時費率上限的每個欄位設定器。
  • 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 守衛。