本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
本項目涵蓋即將推出的 LaunchLab 程式更新。在部署前已針對本地發行分支進行驗證。在依賴新帳戶或指令之前,請確認已部署的程式。
PlatformConfig.curve_params 限制建立者可選擇的啟動形狀。該機制僅測試完全相等:一個項目要麼將欄位固定為一個值,要麼用哨兵值進行萬用字元匹配。此外,在平台支援的每個 GlobalConfig 中最多只能有 10 個項目,且它存放在 PlatformConfig 帳戶本身上,每個項目會增加 491 位元組。
隨著協議新增設定,這三個特性產生了衝突。表達「募資目標在 50 到 200 SOL 之間」需要為每個允許的值建立一個項目,因此根本無法實現。同時,GlobalConfig 本身的下限已大幅放寬——1 bps 費率、99999 供應量上限——正是為了讓每個平台都符合要求,這導致平台無法進一步縮小範圍。
本版本用曲線規則取代白名單:每個 (platform, config) 對應一個 PlatformCurveRule 帳戶,最多可容納 10 個檢查群組,每個群組最多 25 個 (field, op, value) 約束,涵蓋 19 個啟動參數,支援 Eq、Gte、Lte 和 Neq 運算子。群組內的約束使用 AND 邏輯,群組之間使用 OR 邏輯。範圍是同一欄位上的 Gte 加 Lte。
完整模型和九個實作範例位於新頁面:products/launchlab/curve-rules。
整合者速查表
PlatformConfig保持大小和所有現有欄位偏移。 固定為 944 位元組。curve_params已移除;restrict_curve_param(u8)、curve_rule_manager(Pubkey)和向量長度前綴佔用的 4 位元組全部來自填充區,填充區從 107 位元組縮減至 78 位元組。- 解碼器必須捨棄尾部向量。 仍期望在填充後有
Vec<PlatformCurveParam>的解碼器會將兩個新欄位讀作向量位元組。填充前的所有內容不受影響,因此只讀取費用錢包和費率的解碼器保持正常運作。 - 啟動建構器在旗標開啟時需要一個額外帳戶。 當
restrict_curve_param為1時,InitializeV2和InitializeWithToken2022在remaining_accounts中需要規則 PDA——包括帳戶不存在時,以防止省略它來跳過檢查。推導方式:[b"platform_curve_rule", platform_config, global_config]。 - 預設情況下沒有平台受限。 每個現有帳戶上
restrict_curve_param為0,0表示程式根本不讀取規則。 - 兩個指令已移除:
UpdatePlatformCurveParam和RemovePlatformCurveParam。新增四個:CreatePlatformCurveRule、UpdatePlatformCurveRule、RemovePlatformCurveRule、ClosePlatformCurveRule。 UpdatePlatformConfig新增兩個變體: 分派索引 13 的RestrictCurveParam(u64)和索引 14 的CurveRuleManager(Pubkey)。現有索引 0–12 保持不變。- 新增七個錯誤代碼,
6024–6030。6020CurveParamIsNotExist保留為佔位符,儘管其最後一個呼叫者已消失,因此後續代碼不會移位。參見reference/error-codes。 - 需要 IDL 刷新。 新帳戶類型、四個新指令、兩個已移除、兩個新分派變體、七個新錯誤代碼。
- 在發送任何內容前離線檢查規則。 SDK 公開
checkLaunchAgainstCurveRule(鏡像啟動時檢查,包括失敗關閉行為)和checkCurveRuleGroupWritable(鏡像寫入時驗證)。兩者都是純函數。參見發送前檢查。 - 在主網啟用前在開發網排練。 開啟
restrict_curve_param會立即改變建立者的可用選項。建議序列——包括啟動一個應被拒絕的代幣以證明建構器確實通過規則帳戶——位於先在開發網測試。
規則能表達而白名單無法表達的內容
19 個欄位包括四個衍生費率——
SellRateA、LockRate、MigrateRateA、FundRaisingRateB——這使得規則可跨供應量移植,而不是固定於一個。
委派管理
PlatformConfig.curve_rule_manager 是一個熱錢包,可以建立、更新、移除和關閉該平台的規則帳戶。編輯規則是常規操作,平台管理員金鑰通常是多簽;此欄位的作用是將多簽排除在外。透過 UpdatePlatformConfig::CurveRuleManager 設定一次。
平台管理員保留相同的並行權力——程式透過從簽署者重新推導 PlatformConfig PDA 來接受——因此遺失的管理員金鑰可透過輪換此欄位來恢復。Pubkey::default() 表示僅限管理員。
被洩露的管理員金鑰可以放寬或刪除參數規則,並回收規則帳戶的租金。但它無法翻轉 restrict_curve_param、觸及任何費用錢包、質押欄位或 CPMM 設定,或破壞 GlobalConfig 限制。
租金和大小
規則帳戶建立時不含任何群組,每次變更時調整大小,因此平台只需為實際寫入的規則付費,移除群組會將差額退款給簽署者。
由於大小是動態的,解碼器必須讀取帳戶的實際長度,而不是假設常數。
啟動時的計算成本
檢查在啟用時於每次啟動時執行。端到端測量——PDA 推導、remaining_accounts 掃描、反序列化、評估:
衍生約束的成本約為 223 CU,而直接欄位讀取約為 48 CU。即使是完全加載的規則也保持在預設 200 000 CU 每指令預算的三分之一以內。群組按順序評估直到一個匹配,因此最常用的層級應放在最前面。
一次性遷移
使用白名單的平台在旗標可用前由協議在單次通過中進行遷移。一個專用授權為每個平台執行一筆交易,將每個舊版項目轉譯為其命名設定的規則帳戶的檢查群組,清除PlatformConfig 中的項目,並將該帳戶縮減回 944 位元組。
轉譯精確保留了舊語義:每個項目變成一個群組,每個非哨兵欄位變成一個 Eq 約束,全哨兵項目——匹配每次啟動——變成無約束群組,也匹配每次啟動。
遷移寫入了規則但未啟用它們。遷移的平台保持不受限制,直到自己將 restrict_curve_param 設定為 1。遷移指令現已從程式中移除,因為通過已完成,讀取它的舊版欄位也一併移除。
未變更的內容
GlobalConfig。 相同的佈局、相同的限制、相同的指令。規則縮小這些限制並與它們一起檢查;它們永遠無法擴寬任何限制。- 啟動指令的帳戶列表和參數。
InitializeV2和InitializeWithToken2022採用相同的固定帳戶和相同的參數。只有remaining_accounts新增一個項目,且僅在旗標開啟時。 - 交易、畢業、費用和質押路徑。 未觸及。
PlatformAllowConfig。 未變更且無關:它決定平台的啟動可使用哪些設定,而規則決定設定內哪些參數。兩個旗標是獨立的。- 錯誤代碼
6000–6023。 未變更,包括6020。 PlatformConfig的大小和填充前偏移。 未變更,因此現有帳戶無需自己遷移。
更新的頁面
products/launchlab/curve-rules— 新頁面。 三層模型、19 欄位和 4 運算子表、九個範例、曲線類型限制、兩個離線檢查助手、開發網排練序列、委派管理、租金、推出順序和計算成本。products/launchlab/platform-config— 「曲線參數白名單」替換為「啟動參數規則」;佈局針對restrict_curve_param、curve_rule_manager和 78 位元組填充進行更新;更新路徑表、讀取路徑片段和陷阱已重寫。products/launchlab/instructions— 新增「平台啟動參數規則」部分,涵蓋四個指令、其帳戶、參數和錯誤;清單列已替換。products/launchlab/accounts—PlatformCurveRule新增至清單並獲得自己的部分,含完整佈局和可變大小警告。reference/error-codes—6024–6030已記錄;6018和6020已註解。

