> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-08-27 — LaunchLab：平台在鑄幣建立時持有提取預扣權限

> InitializeWithToken2022 現在將 PlatformConfig.transfer_fee_extension_auth 寫入新基礎鑄幣的 withdraw_withheld_authority，而不是啟動權限 PDA；MigrateToCpswap 僅在 PDA 仍持有該權限時才重新指派。無帳戶佈局、指令或錯誤變更。

<Info>
  **本頁內容由 AI 自動翻譯，所有內容以英文版本為準。**

  [查看英文版 →](/reference/changelog/2026-08-27-launchlab-token2022-withheld-authority)
</Info>

<Info>
  本項目涵蓋即將推出的 LaunchLab 程式更新。在部署前已針對本地發行分支進行驗證。在依賴預畢業預扣費用提取之前，請確認已部署的程式。
</Info>

由 `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` 時序未變。** 它在畢業前仍是啟動 `authority` PDA，在 `MigrateToCpswap` 中仍會移至 `transfer_fee_extension_auth`。費率在啟動期間無法變更。
* **在啟動前設定 `transfer_fee_extension_auth`。** 當它在鑄幣建立時為 `Pubkey::default()` 時，提取權限會回退到 `authority` PDA——舊行為。之後設定該欄位仍會在畢業時恢復權限，但預扣餘額會被凍結直到那時。
* **不要在啟動期間輪換該欄位。** 兩個權限在兩個不同時刻讀取，因此在中間變更的值會將它們放在不同的金鑰上。詳見[輪換會分割兩個權限](#輪換會分割兩個權限)。
* **`MigrateToCpswap` 對呼叫者未變。** 相同的帳戶、相同的引數、相同的錯誤。新防護是內部的；沒有它，新代鑄幣的遷移會在 Token-2022 內部還原，因為 PDA 不再能簽署它不持有的權限。
* **現有啟動不受影響。** 已在鏈上的鑄幣在兩個權限上保持 PDA，在畢業時仍會將兩者交出。
* **無需刷新 IDL。** 沒有佈局、帳戶、引數或錯誤代碼改變。

## 誰持有什麼，以及何時

| 權限                              | 鑄幣建立時的持有者                                                                  | `MigrateToCpswap` 後的持有者                 |
| ------------------------------- | -------------------------------------------------------------------------- | --------------------------------------- |
| `withdraw_withheld_authority`   | `transfer_fee_extension_auth`；當該欄位為 `Pubkey::default()` 時為 `authority` PDA | 當它已是平台金鑰時保持不變。僅在 PDA 仍持有時才重新指派。         |
| `transfer_fee_config_authority` | `authority` PDA，始終                                                         | `transfer_fee_extension_auth`，當該欄位非預設值時 |

兩個交接仍在它們一直以來所在的相同外部條件後面：基礎鑄幣必須攜帶 `TransferFeeConfig` **且** `transfer_fee_extension_auth` 必須非預設值。從不設定該欄位的平台會永遠在 `authority` PDA 上保持兩個權限——費率永遠無法變更，預扣餘額永遠無法提取。

## 輪換會分割兩個權限

`transfer_fee_extension_auth` 在每次啟動期間讀取兩次，在可能相隔數天的兩個時刻：

1. 在 `InitializeWithToken2022` 時，用於 `withdraw_withheld_authority`。
2. 在 `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](/zh-Hant/reference/changelog/2026-08-24-launchlab-token2022-quote-mint)以來未變。
* **錯誤代碼。** `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 基礎鑄幣項目說明誰持有轉帳費用權限以及何時持有。
