本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
本項目涵蓋即將推出的 LaunchLab 程式更新。在部署前已針對本地發佈分支進行驗證。在依賴新指令或變更的
MigrateToAmm 配置前,請確認已部署的程式。get_upgrade_timestamp(一個硬編碼的截止日期,多個檢查會將時鐘與其比較)、一個已棄用的 Initialize(在該日期後三天內仍可運作)以及 MigrateToAmm 的 OpenBook 管道(在 AMM v4 於七月移除其自身 OpenBook 依賴後無法使用)。這三個機制現已全部移除。在主網上截止日期已過去數月,因此行為影響為零——但失敗模式已改變,且一個帳戶列表已大幅改變。
框架同時升級:Anchor 0.32.1 升至 =1.0.2,Agave 2.3.0 升至 3.1.10。如同 AMM v4 和 CPMM,新增了一個管理員指令用於回收租金。
交易、費用、質押、曲線規則和平台設定保持不變。
整合者速覽
- 沒有交易指令改變其帳戶、參數或數學運算。
BuyExactIn、BuyExactOut、SellExactIn、SellExactOut位元組相同。沒有帳戶配置改變。 Initialize(已棄用版本)現在總是以NotApproved(6000)失敗, 在讀取任何帳戶前。請使用InitializeV2。已透過它建立的啟動項目可正常交易和畢業。MigrateToAmm對遷移錢包造成硬性破壞。 它失去了全部三個參數(base_lot_size、quote_lot_size、market_vault_signer_nonce)和九個帳戶。詳見下文。- 三個交易
remaining_accounts現在無條件必需, 且system_program插槽已驗證。省略它們的建構者現在總是以NotEnoughRemainingAccounts(6018)失敗,而不是僅在截止日期後失敗。 - 新增一個指令:
CollectExcessLamports。 僅限管理員。詳見products/launchlab/instructions。 - 新增一個錯誤代碼:
6031LamportsCalculateError。 代碼6000–6030保持不變。 - 三個
MigrateToCpswap位址約束移至指令主體, 將其錯誤從ConstraintAddress(2012)改為RequireKeysEqViolated(2502)。 - 需要 IDL 刷新。 一個新指令、一組移除的參數、九個移除的帳戶、一個新的錯誤變體。
MigrateToAmm 失去了 OpenBook 部分
這是最可能造成破壞的改變。舊指令資料在判別器後攜帶 17 位元組的參數;新資料是裸判別器。舊帳戶列表攜帶九個不再存在於結構中的帳戶,因此第一次移除後的所有內容都錯位了。
移除的參數: base_lot_size: u64、quote_lot_size: u64、market_vault_signer_nonce: u8。這三個參數僅用於設定程式曾透過 CPI 初始化的 OpenBook 市場。該 CPI——initialize_openbook_market——已消失,驗證 nonce 的 gen_vault_signer_key 檢查也一併消失。
移除的帳戶: openbook_program、request_queue、event_queue、bids、asks、market_vault_signer、market_base_vault、market_quote_vault 和 amm_open_orders。最後一個被移除是因為 AMM v4 的 Initialize2 不再接受它。
market 帳戶保留, 在其原始位置。AMM v4 仍將市場記錄為 AmmInfo 上的參考欄位,因此 LaunchLab 仍轉發它。關於它的兩件事改變了:程式不再初始化它,且它現在完全未驗證——其宣告是裸 #[account(mut)],沒有所有者、位址或種子約束,因為 owner = openbook_program.key() 與 openbook_program 帳戶一起移除,沒有任何東西取代它。遷移錢包傳遞的任何內容都直接轉發至 AMM v4 的 Initialize2 CPI 並記錄在新池上。想要該欄位後面有真正初始化市場的呼叫者必須事先建立它,程式不會告知否則。
產生的 23 帳戶列表完整記錄在 products/launchlab/instructions。
MigrateToCpswap 不受影響——它從未有參數,其帳戶列表保持不變。
已棄用的 Initialize 總是失敗
initialize 先前執行軟棄用:它在 get_upgrade_timestamp() + 3 days 前運作,然後返回 NotApproved。隨著時間戳幫助器被刪除,失敗現在無條件——處理器現在只是 msg! 和 err!(NotApproved)。
如果你在讀取日誌,有一個細節值得注意:Accounts 結構保持不變,仍攜帶四個 init 約束,因此 Anchor 生成的帳戶驗證序言在處理器返回前執行——並建立那些帳戶。無論如何交易都會還原,所以實際上沒有建立任何東西,但失敗出現在帳戶驗證之後而不是之前。
該指令被保留而不是移除,以便其判別器保持佔用且 IDL 保持穩定形狀。其參數和帳戶定義仍值得記錄以解碼歷史交易,頁面將它們保留在警告後面。
get_upgrade_timestamp 閘道已消失
該幫助器在 local 和 devnet 功能下返回 0,否則返回硬編碼的主網時間戳 1755522000(2025-08-18 13:00 UTC)。四個指令將時鐘與其比較,跨越源中的五個參考。每個都無條件變成截止日期後分支:
主網時間戳已過去一年多,因此正確、最新的建構者看不到行為改變。改變的是過時的建構者現在確定性失敗,而不是看起來對 devnet 建構有效。新的
system_program 驗證是真正新的:該插槽先前接受任何帳戶。
CollectExcessLamports
SIMD-0437 的第 1 步於 2026 年 9 月 3 日在主網上線,將租金豁免最小值減少 9%,還有四個步驟待進行。每個在步驟前建立的 LaunchLab 池金庫、費用金庫和程式擁有的 PDA 現在都過度資金化。
該指令接受四個固定帳戶——簽署者/目標錢包、一個金庫授權 PDA 和兩個代幣程式——然後 remaining_accounts 中任意數量的源帳戶。
authority 插槽是值得仔細閱讀的部分。LaunchLab 有三個金庫授權 PDA(vault_auth_seed、platform_fee_vault_auth_seed、creator_fee_vault_auth_seed),指令透過重新推導全部三個並匹配來解析你傳遞的任何一個;不匹配任何一個的鑰匙以 InvalidOwner(6001)失敗。因為一個呼叫攜帶一個授權,且代幣程式要求每個帳戶的實際所有者簽署,源帳戶必須按授權分組——池金庫、平台費用金庫和建立者費用金庫在單獨的交易中清掃。程式擁有的 PDA 直接扣除,可與任何授權一起進行。
包裝的 SOL 遵循 CPMM 和 AMM v4 使用的相同 SyncNative → 增量大小 UnwrapLamports → 斷言不變序列,如果往返不淨為零則返回 LamportsCalculateError(6031)。SOL 報價的啟動項目保持其完整報價儲備。
基礎鑄幣無法清掃。 InitializeV2 和 InitializeWithToken2022 在鑄造供應的同一指令中撤銷 MintTokens,因此沒有鑰匙可以簽署基礎鑄幣的 WithdrawExcessLamports。其租金被設計為擱置。
簽署者可以是共享程式管理員或專用收集 lamports 錢包;位址在 reference/program-addresses。
MigrateToCpswap 約束重定位
三個帳戶約束從 Accounts 結構移至指令主體:
PoolState 上的值。只有錯誤表面不同:Anchor 的通用 RequireKeysEqViolated(2502),報告時不帶帳戶名稱,而不是 ConstraintAddress(2012)命名違規帳戶。更新任何匹配這三個帳戶的 2012 的錯誤處理。
工具鏈和依賴變更
Anchor 1.0 的兩個呼叫位置變更也適用於此:
Context 從四個生命週期參數縮減為一個,CpiContext::new 接受程式的 Pubkey 而不是其 AccountInfo。詳見 sdk-api/rust-cpi。
兩個構建系統細節沒有鏈上效果:local 功能被 localnet 取代,它從 LAUNCHPAD_LOCALNET_ADMIN 環境變數編譯本地錢包作為 admin(yarn test:local-admin 連接它),programs/launchpad/Cargo.toml 中的重複 [profile.release] 區塊被刪除——Cargo 忽略工作區根外的 [profile],因此根區塊已是有效的,包括程式級區塊的 panic = "abort" 從未應用的事實。
未改變的內容
- 每個帳戶配置。
PoolState、GlobalConfig、PlatformConfig、PlatformCurveRule、PlatformAllowConfig、質押記錄——相同大小、相同偏移。 - 錯誤代碼
6000–6030, 包括故意保留的6020。 - 曲線數學、費率、費用累積、質押時間表和畢業 LP 分割。
- 平台曲線規則和
GlobalConfig允許列表。 相同指令、相同帳戶、相同語義;只有曲線規則檢查周圍的時鐘閘道消失。 MigrateToCpswap的帳戶列表和remaining_accounts索引。- Token-2022 轉移費用授權在畢業時的交接。
- 程式 ID。 保持不變。
更新的頁面
products/launchlab/instructions— 新增CollectExcessLamports及其帳戶列表、授權解析表和分組警告;記錄MigrateToAmm的參數和帳戶移除及完整新列表;Initialize前置總是失敗警告;新的「交易剩餘帳戶」部分涵蓋現在無條件的三個帳戶和system_program檢查;清單和狀態變更矩陣行。products/launchlab/overview— 發佈橫幅;「僅 CPMM」和基礎鑄幣不變量已更正。products/launchlab/accounts— 鑄幣授權撤銷時機已更正為啟動項目建立(之前記錄在畢業時);新增CollectExcessLamports行。reference/error-codes— 記錄6031。reference/program-addresses— 新的「超額 lamports 收集錢包」部分。solana-fundamentals/rent-and-reclaimable-rent— 新的「Raydium 程式在其自身側清掃的內容」部分。sdk-api/rust-cpi、solana-fundamentals/toolchain— Anchor 1.0 釘選和 CPI 遷移說明。

