> ## 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-24 — LaunchLab：Token-2022 報價代幣

> LaunchLab 在設定、池初始化、交換、費用領取和 CPMM 遷移中接受 Token-2022 報價代幣。交換滑點邊界現在計價報價端轉帳費用，PoolState.token_program_flag 位元 1 變得有意義，MigrateToCpswap 重新命名其兩個代幣程式帳戶。

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

  [查看英文版 →](/reference/changelog/2026-08-24-launchlab-token2022-quote-mint)
</Info>

<Info>
  本項目涵蓋即將推出的 LaunchLab 程式更新。在部署前已針對本地發佈分支進行驗證。在生產環境中啟用新路徑前，請確認已部署的程式和已發佈的 IDL。
</Info>

此版本允許啟動項目使用 Token-2022 代幣進行報價。在此之前，報價端被硬連線到舊版 SPL Token 程式，因此只有基礎代幣可以是 Token-2022。現在，每個涉及報價代幣的地方——`GlobalConfig` 建立、池初始化、四個交換指令、所有費用領取和 CPMM 遷移——都接受任一代幣程式，且交換指令會計算報價代幣的轉帳費用。

## 整合者快速摘要

* **報價代幣可以是 Token-2022。** `CreateConfig` 接受 Token-2022 `quote_token_mint`，`InitializeV2` / `InitializeWithToken2022` 在報價程式槽中接受任一代幣程式。帳戶順序不變——你在該槽中傳遞的值會改變。
* **已棄用的 `Initialize` 仍為舊版專用。** 其報價程式帳戶仍被型別化為 SPL Token，因此報價代幣為 Token-2022 的設定只能透過 `InitializeV2` 或 `InitializeWithToken2022` 啟動。
* **滑點邊界移至付款人實際支付和接收的金額。** `minimum_amount_out` 和 `maximum_amount_in` 現在與報價代幣轉帳費用淨額進行比較，而不是與金庫移動的金額進行比較。在費用承擔報價代幣上，現有報價邏輯會低估成本並高估收益。
* **`PoolState.token_program_flag` 位元 1 變得有意義。** 當報價代幣為舊版時，它始終為 `0`。將整個位元組與 `0` 進行比較的用戶端，只要報價代幣是 Token-2022，就會將舊版基礎代幣讀取為 Token-2022。這是此版本中最可能的無聲中斷。
* **`MigrateToCpswap` 重新命名其兩個代幣程式帳戶。** `base_token_program` / `quote_token_program` 變為 `token_program` / `token_program_2022`。兩者始終都是必需的，程式會根據代幣選擇正確的。
* **代幣/程式對現在已驗證。** 兩個交換代幣都獲得了 `mint::token_program` 約束，`ClaimPlatformFee` 的報價代幣也是如此，因此不匹配的對會還原而不是被忽略。
* **新錯誤 `6023` `CalculateOverflow`。** 代碼 `6000`–`6022` 保持不變。`6023` 由上一版本空出，現在被重新使用。
* **費用金庫跟隨報價代幣。** 建立者和平台費用金庫，以及分享費用接收者的代幣帳戶，位於擁有報價代幣的任何程式上。

## 哪些帳戶改變了型別

這些都不會改變其帳戶列表中的位置。只有允許的值會改變。

| 指令                                                                   | 帳戶                    | 之前           | 之後      |
| -------------------------------------------------------------------- | --------------------- | ------------ | ------- |
| `CreateConfig`                                                       | `quote_token_mint`    | SPL Token 代幣 | 任一程式的代幣 |
| `InitializeV2`                                                       | `quote_token_program` | SPL Token    | 任一程式    |
| `InitializeWithToken2022`                                            | `quote_token_program` | SPL Token    | 任一程式    |
| `BuyExactIn` / `BuyExactOut` / `SellExactIn` / `SellExactOut`        | `quote_token_program` | SPL Token    | 任一程式    |
| `CollectFee` / `CollectMigrateFee`                                   | `token_program`       | SPL Token    | 任一程式    |
| `ClaimCreatorFee` / `ClaimPlatformFee` / `ClaimPlatformFeeFromVault` | `token_program`       | SPL Token    | 任一程式    |

已棄用的 `Initialize`（V1 路徑）刻意不在此表中。其報價程式帳戶保持型別化為 SPL Token。

其中幾個也加強了其代幣約束，因此不匹配的代幣/程式對現在會還原，而之前是被接受或未檢查的：

* 四個交換指令將 `base_token_mint` 和 `quote_token_mint` 都約束到在匹配槽中傳遞的程式。之前都沒有該約束，因此錯誤的基礎程式被無聲接受。
* `ClaimPlatformFee` 在 `quote_mint` 上添加相同的約束。
* `ClaimPlatformFeeFromVault` 將其約束從代幣帳戶形式更正為代幣帳戶上的代幣形式。

## 報價端轉帳費用會計

這是改變數字而不是帳戶列表的部分。在沒有 `TransferFeeConfig` 的報價代幣上，下面的每個公式都會折疊為先前的行為，因此舊版池和無費用 Token-2022 池在位元上完全不變。

| 指令             | 引數現在的含義                                                                                                                    |
| -------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `BuyExactIn`   | `amount_in` 是總借方。曲線以 `amount_in − transfer_fee(amount_in)` 定價，這是進入金庫的金額。在完全成交時，付款人被收取正好 `amount_in`；在部分成交時，收費是消耗的金庫金額向上調整。 |
| `BuyExactOut`  | `maximum_amount_in` 與金庫金額**加上**反向轉帳費用——實際借方——進行比較，而不是僅與金庫金額進行比較。                                                           |
| `SellExactIn`  | `minimum_amount_out` 與賣方在代幣扣除其費用後剩下的金額進行比較，而不是與從金庫釋放的總金額進行比較。                                                              |
| `SellExactOut` | `amount_out` 是賣方最終得到的。曲線以 `amount_out` 加上反向轉帳費用為目標，因此請求的金額準確到達。                                                            |

兩個值得明確說明的後果：

* 從等效無費用池計算的邊界不再可接受。使用無費用成本作為 `maximum_amount_in` 的 `BuyExactOut` 現在以 `ExceededSlippage` 還原，`SellExactIn` 使用無費用收益作為 `minimum_amount_out` 也是如此。這是預期行為——舊比較讓付款人被扣除轉帳費用，超過他們已同意的邊界。
* 池簿只記錄進入金庫的內容。在 5% 報價代幣上進行 `amount_in` 的 `BuyExactIn` 後，`real_quote` 前進 `amount_in × 0.95`，而不是 `amount_in`。

`get_transfer_inverse_fee` 也放棄了其 100% 費用代幣的特殊情況：它現在在無法計算反向費用時返回新的 `CalculateOverflow` 錯誤，而不是回退到 `maximum_fee`。因此 `10000` 基點的報價代幣會導致精確輸出路徑失敗，而不是無聲地以費用上限進行交易。

## `token_program_flag` 位元 1

`PoolState.token_program_flag` 是一個位欄位，一直都是：

```text theme={null}
bit0  基礎代幣  0 = SPL Token，1 = Token-2022
bit1  報價代幣 0 = SPL Token，1 = Token-2022
```

該欄位、位元位置和寫入兩個位元的代碼都早於此版本。改變的是位元 1 現在實際上可以是 `1`，因為報價代幣現在可以是 Token-2022 代幣。四個值是：

| 值   | 基礎代幣       | 報價代幣       |
| --- | ---------- | ---------- |
| `0` | SPL Token  | SPL Token  |
| `1` | Token-2022 | SPL Token  |
| `2` | SPL Token  | Token-2022 |
| `3` | Token-2022 | Token-2022 |

使用 `(token_program_flag >> bit) & 1` 讀取每個代幣的程式。任何將位元組視為基礎代幣布林值的用戶端——`flag === 0 ? Token : Token-2022`——會將值 `2` 解析為 Token-2022 基礎代幣，並將針對錯誤的程式建立基礎端代幣帳戶和轉帳。沒有帳戶大小或欄位偏移改變，因此索引器不需要儲存遷移，只需要解碼修復。

## CPMM 遷移帳戶重新命名

`MigrateToCpswap` 之前為每個代幣取一個代幣程式，呼叫者決定哪個是哪個。現在它無條件地取兩個程式，並從代幣本身推導映射：

| 位置      | 之前                                         | 之後                                       |
| ------- | ------------------------------------------ | ---------------------------------------- |
| 第一個代幣程式 | `base_token_program` — 擁有基礎代幣的任何程式         | `token_program` — 始終是舊版 SPL Token 程式     |
| 第二個代幣程式 | `quote_token_program` — 始終是舊版 SPL Token 程式 | `token_program_2022` — 始終是 Token-2022 程式 |

兩個位置保持不變，因此這是值改變，而不是佈局改變——但值幾乎完全反轉，建立者繼續傳遞其舊對將在任一代幣是 Token-2022 代幣時立即傳遞 Token-2022，其中舊版程式是必需的。

舊版程式仍然無條件地必需，無論任一代幣如何，因為 CPMM LP 代幣和鎖定流動性費用密鑰 NFT 始終位於其上。來自 [2026-08-17 版本](/zh-Hant/reference/changelog/2026-08-17-launchlab-cpmm-only-platform-config) 的 `remaining_accounts` 佈局保持不變。

## 報價代幣僅由管理員自由裁量承認

與 CPMM 和 CLMM 不同，LaunchLab 對報價代幣**不執行**擴展允許清單。`CreateConfig` 按原樣接受代幣帳戶，因此唯一的門檻是管理員將哪些代幣綁定到 `GlobalConfig`。程式的 `NoSupportExtension` 檢查僅適用於 LaunchLab 自己建立的 Token-2022 基礎代幣，其中只允許 `MetadataPointer` 和 `TransferFeeConfig`。

將 Token-2022 報價代幣綁定視為高信任操作，理由與 [`reference/token-2022-support`](/zh-Hant/reference/token-2022-support) 中的 CPMM/CLMM 靜態白名單相同。`TransferHook` 或 `PermanentDelegate` 報價代幣將在設定建立時被承認，然後將在每個以其報價的池上執行或能夠掃除。

## `amm_creator_fee_on` 時間戳門檛

`InitializeV2` 放棄了時間戳門檛，該門檛在升級時間戳之前拒絕任何 `amm_creator_fee_on` 而不是 `BothToken`。等效的門檛仍存在於 `InitializeWithToken2022` 中。實際上，兩條路徑在 mainnet-beta 上今天都接受任一值，因為該時間戳（`1755522000`，2025-08-18 13:00 UTC）早已過去——這是清理，而不是當前呼叫者的行為改變。

## 錯誤和 IDL 影響

代碼 `6000`–`6022` 保持不變，包括 `6022` `InvalidPlatformAllowConfig`。

| 代碼   | 名稱                  | 含義                 |
| ---- | ------------------- | ------------------ |
| 6023 | `CalculateOverflow` | 轉帳費用或反向轉帳費用計算無法表示。 |

上一版本停用了舊的 `6023` 並將其留空；此版本重新使用該數字。不要使用早期版本的 IDL 解碼 `6023`。

在傳遞 Token-2022 報價程式、解碼 `token_program_flag` 位元 1 或建立重新命名的 `MigrateToCpswap` 帳戶列表前，刷新 LaunchLab IDL。

## SDK 影響

SDK 的啟動板模組的報價端在與程式相同的地方被硬編碼為 `TOKEN_PROGRAM_ID`。伴隨此版本的分支改為解析報價代幣的擁有者，將其穿過代幣帳戶建立、分享費用接收者的 ATA 和指令的報價程式槽，並為四個 `Curve` 方法添加可選的 `transferFeeConfigB`，以便報價反映上述公式。`Curve` 結果獲得 `transferFeeB` 欄位；`amountB` 保持其含義——付款人花費或賣方接收的內容——因此無費用報價代幣產生與之前相同的數字。

這些 SDK 改變未發佈。本文件集中代碼演示頁面上的規範釘選保持不變；在依賴新參數前檢查已發佈的版本。

## 參考實現

新演示透過 Yellowstone gRPC 訂閱 LaunchLab 程式，並為每個 `GlobalConfig` 和 `PoolState` 更新記錄每個代幣是 Token 還是 Token-2022 代幣：

[`raydium-sdk-V2-demo/src/grpc/launchpadPoolInfo.ts`](https://github.com/raydium-io/raydium-sdk-V2-demo/blob/master/src/grpc/launchpadPoolInfo.ts)

它是此版本使必要的兩件事的緊湊參考。池直接從 `token_program_flag` 分類，使用兩個位元解碼，完全不需要代幣提取——這是上述位元 1 中斷的修復。設定無法以這種方式分類，因為 `GlobalConfig` 只儲存其報價代幣的地址，沒有程式標誌，因此演示讀取代幣帳戶的擁有者一次並按代幣快取。並排看到兩條路徑是檢查你自己解碼器的最快方式。

請參閱 [`products/launchlab/code-demos`](/zh-Hant/products/launchlab/code-demos#watch-configs-and-pools-over-grpc) 以取得逐步說明。

## 更新的頁面

* `products/launchlab/accounts` — 報價代幣程式、`token_program_flag` 位元佈局和金庫所有權。
* `products/launchlab/instructions` — 報價程式帳戶、交換滑點語義和重新命名的遷移帳戶。
* `products/launchlab/global-config` — `quote_mint` 可能是 Token-2022 代幣，以及什麼會和不會限制它。
* `products/launchlab/code-demos` — gRPC 設定/池監視器。
* `reference/token-2022-support` — LaunchLab 列和報價代幣部分。
* `reference/error-codes` — `6023` `CalculateOverflow`。
