本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
本項目涵蓋即將推出的 LaunchLab 程式更新。在部署前已針對本地發行分支進行驗證。在依賴預畢業預扣費用提取之前,請確認已部署的程式。
InitializeWithToken2022 建立的 Token-2022 基礎鑄幣可以攜帶 TransferFeeConfig。該擴展有兩個權限:transfer_fee_config_authority(變更費率和最高費用)和 withdraw_withheld_authority(提取 Token-2022 在代幣帳戶上預扣的費用)。
在此版本之前,程式在鑄幣建立時將啟動 authority PDA 放在兩者上,並在畢業時將兩者交給 PlatformConfig.transfer_fee_extension_auth。啟動板程式沒有預扣提取或收穫指令,因此在整個結合曲線階段,沒有人可以提取預扣餘額——唯一可以提取的金鑰是一個沒有指令可簽署的 PDA。
此版本在鑄幣建立時將 transfer_fee_extension_auth 直接寫入 withdraw_withheld_authority,因此平台可以從第一筆交易開始掃除預扣費用。MigrateToCpswap 增加了一個防護,使其僅在 PDA 仍持有該權限時才重新指派該權限,這使得來自兩代鑄幣的畢業都能正常運作。
其他一切都未改變。沒有帳戶增長或縮小,沒有指令增加或失去帳戶,沒有引數改變,也沒有錯誤代碼移動。
整合者速覽
- 預扣轉帳費用在啟動期間可提取。 在新 Token-2022 啟動中,如果平台設定了
transfer_fee_extension_auth,該金鑰從建立時起就是鑄幣的withdraw_withheld_authority。直接呼叫 Token-2022 自身的WithdrawWithheldTokensFromAccounts/WithdrawWithheldTokensFromMint;LaunchLab 沒有此指令,也從未有過。 transfer_fee_config_authority時序未變。 它在畢業前仍是啟動authorityPDA,在MigrateToCpswap中仍會移至transfer_fee_extension_auth。費率在啟動期間無法變更。- 在啟動前設定
transfer_fee_extension_auth。 當它在鑄幣建立時為Pubkey::default()時,提取權限會回退到authorityPDA——舊行為。之後設定該欄位仍會在畢業時恢復權限,但預扣餘額會被凍結直到那時。 - 不要在啟動期間輪換該欄位。 兩個權限在兩個不同時刻讀取,因此在中間變更的值會將它們放在不同的金鑰上。詳見輪換會分割兩個權限。
MigrateToCpswap對呼叫者未變。 相同的帳戶、相同的引數、相同的錯誤。新防護是內部的;沒有它,新代鑄幣的遷移會在 Token-2022 內部還原,因為 PDA 不再能簽署它不持有的權限。- 現有啟動不受影響。 已在鏈上的鑄幣在兩個權限上保持 PDA,在畢業時仍會將兩者交出。
- 無需刷新 IDL。 沒有佈局、帳戶、引數或錯誤代碼改變。
誰持有什麼,以及何時
兩個交接仍在它們一直以來所在的相同外部條件後面:基礎鑄幣必須攜帶
TransferFeeConfig 且 transfer_fee_extension_auth 必須非預設值。從不設定該欄位的平台會永遠在 authority PDA 上保持兩個權限——費率永遠無法變更,預扣餘額永遠無法提取。
輪換會分割兩個權限
transfer_fee_extension_auth 在每次啟動期間讀取兩次,在可能相隔數天的兩個時刻:
- 在
InitializeWithToken2022時,用於withdraw_withheld_authority。 - 在
MigrateToCpswap時,用於transfer_fee_config_authority——以及僅當 PDA 仍持有時的withdraw_withheld_authority。
UpdatePlatformConfig 輪換該欄位,兩個權限會落在不同的金鑰上:提取方保持在建立時配置的金鑰,因為 PDA 不再持有它且遷移跳過該交接,而費用配置方則轉到新金鑰。兩個呼叫都不會失敗;分割是無聲的。在啟動之間輪換,或之後透過 Token-2022 直接用舊金鑰簽署來協調金鑰。
為什麼防護是必需的,而不僅是防禦性的
Token-2022 的SetAuthority 需要當前權限簽署。在新建立規則下,啟動 authority PDA 不是新鑄幣上的提取預扣權限,因此程式曾經進行的無條件 CPI 會失敗——而且因為它位於 MigrateToCpswap 內部,該失敗會阻止在配置了該欄位的平台上進行轉帳費用的每個 Token-2022 啟動的畢業。這兩個變更只有作為一對才能運作。
未改變的內容
- 轉帳費用數學和會計。
MAX_TRANSFER_FEE_RATE仍為500(5%,分母10_000),費用仍以相同方式計入曲線,預扣餘額仍在 Token-2022 放置它的代幣帳戶上累積。 MigrateToCpswap的介面。 相同的帳戶列表、相同的remaining_accounts索引、相同的兩個代幣程式、無引數。InitializeWithToken2022的介面。 相同的帳戶、相同的TransferFeeExtensionParams、相同的NoSupportExtension拒絕任何在MetadataPointer和TransferFeeConfig之外的內容。- 報價方 Token-2022 處理。 自2026-08-24以來未變。
- 錯誤代碼。
6000–6023未變;此版本不新增任何代碼。 - 帳戶佈局和 IDL。 未變。
PlatformConfig.transfer_fee_extension_auth保持其偏移和類型;僅程式讀取它的方式改變。
更新的頁面
products/launchlab/platform-config— 新增「Token-2022 轉帳費用權限」部分,涵蓋兩個權限、兩個交接點和輪換陷阱;佈局註解和缺陷列表已更正。products/launchlab/instructions—MigrateToCpswap增加「Token-2022 轉帳費用權限交接」區塊;Initialize後置條件記錄新鑄幣建立權限。products/launchlab/accounts— 權限 PDA 角色列表和基礎鑄幣部分註明 PDA 實際持有哪些轉帳費用權限。reference/token-2022-support— LaunchLab 基礎鑄幣項目說明誰持有轉帳費用權限以及何時持有。

