> ## 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 quote mints

> LaunchLab は Token-2022 quote mints をコンフィグ、プール作成、スワップ、フィー請求、CPMM マイグレーション全体で受け入れます。スワップ スリッページ境界は quote-side トランスファーフィーを価格設定し、PoolState.token_program_flag bit1 が意味を持つようになり、MigrateToCpswap は 2 つのトークンプログラム アカウントの名前を変更します。

<Info>
  **このページは AI による自動翻訳です。すべての内容は英語版を正とします。**

  [英語版を表示 →](/reference/changelog/2026-08-24-launchlab-token2022-quote-mint)
</Info>

<Info>
  このエントリは、今後の LaunchLab プログラム更新をカバーしています。デプロイ前にローカル リリース ブランチに対して検証されました。本番環境で新しいパスを有効にする前に、デプロイされたプログラムと公開された IDL を確認してください。
</Info>

このリリースにより、ローンチを Token-2022 ミントで引用できるようになります。これまで quote 側はレガシー SPL Token プログラムにハードワイヤードされていたため、base ミントのみが Token-2022 になる可能性がありました。quote ミントが触れられるすべての場所（`GlobalConfig` 作成、プール初期化、4 つのスワップ命令、すべてのフィー請求、CPMM マイグレーション）は、どちらのトークンプログラムも受け入れるようになり、スワップ命令は quote ミントのトランスファーフィーを考慮します。

## インテグレーター向け TL;DR

* **Quote mints は Token-2022 になります。** `CreateConfig` は Token-2022 `quote_token_mint` を受け入れ、`InitializeV2` / `InitializeWithToken2022` は quote-program スロットでどちらのトークンプログラムも受け入れます。アカウント順序は変わりません。そのスロットに渡す値が変わります。
* **非推奨の `Initialize` はまだレガシーのみです。** その quote-program アカウントは SPL Token に型付けされたままなので、quote ミントが Token-2022 であるコンフィグは `InitializeV2` または `InitializeWithToken2022` を通じてのみ起動できます。
* **スリッページ境界は支払者が実際に支払い、受け取る金額に移動します。** `minimum_amount_out` と `maximum_amount_in` は、vault が移動した金額ではなく、quote ミントのトランスファーフィーを差し引いた金額と比較されるようになりました。フィーを負担する quote ミント上の既存の見積もりロジックは、コストを過小見積もりし、収益を過大見積もりします。
* **`PoolState.token_program_flag` bit1 が意味を持つようになります。** quote mints がレガシーのみの間は常に `0` でした。バイト全体を `0` と比較するクライアントは、quote ミントが Token-2022 の場合、レガシー base ミントを Token-2022 として読み取ります。これはこのリリースで最も可能性の高いサイレント破損です。
* **`MigrateToCpswap` は 2 つのトークンプログラム アカウントの名前を変更します。** `base_token_program` / `quote_token_program` は `token_program` / `token_program_2022` になります。両方は常に必須であり、プログラムはミントごとに正しいものを選択します。
* **Mint/program ペアが検証されるようになりました。** 両方のスワップ ミントは `mint::token_program` 制約を取得し、`ClaimPlatformFee` の quote ミントも同様に取得したため、一致しないペアは無視される代わりに戻ります。
* **新しいエラー `6023` `CalculateOverflow`。** コード `6000`–`6022` は変更されていません。`6023` は前のリリースで空けられ、現在は再利用されています。
* **フィー vault は quote ミントに従います。** クリエーター フィーと プラットフォーム フィー vault、および share-fee レシーバーのトークン アカウントは、quote ミントを所有するプログラムに存在します。

## どのアカウントが型を変更したか

これらのいずれもアカウント リスト内の位置は変わりません。許可される値のみが変わります。

| 命令                                                                   | アカウント                 | 前             | 後             |
| -------------------------------------------------------------------- | --------------------- | ------------- | ------------- |
| `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 パス）は意図的にこのテーブルに含まれていません。その quote-program アカウントは SPL Token に型付けされたままです。

これらの多くは、mint 制約も厳しくしたため、一致しない mint/program ペアは以前受け入れられたか未チェックだった場所で戻るようになりました：

* 4 つのスワップ命令は、`base_token_mint` と `quote_token_mint` の両方を、一致するスロットで渡されたプログラムに制約します。どちらも以前はその制約を持っていなかったため、間違った base プログラムはサイレントに受け入れられました。
* `ClaimPlatformFee` は `quote_mint` に同じ制約を追加します。
* `ClaimPlatformFeeFromVault` は、トークン アカウント形式から mint アカウントである mint 形式への制約を修正します。

## Quote-side トランスファーフィー会計

これはアカウント リストではなく数値を変更する部分です。`TransferFeeConfig` がない quote ミント上では、以下のすべての式は前の動作に縮小されるため、レガシー プールとフィーなし Token-2022 プールはビット単位で変更されません。

| 命令             | 引数が現在意味するもの                                                                                                                                                              |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `BuyExactIn`   | `amount_in` は総デビットです。曲線は `amount_in − transfer_fee(amount_in)` で価格設定されます。これは vault に到達するものです。完全な約定では、支払者は正確に `amount_in` で請求されます。部分的な約定では、請求額は消費された vault 金額を総額に戻したものです。 |
| `BuyExactOut`  | `maximum_amount_in` は vault 金額だけでなく、逆トランスファーフィー（実際のデビット）を含む vault 金額と比較されます。                                                                                             |
| `SellExactIn`  | `minimum_amount_out` は、vault から解放された総額ではなく、ミントがそのフィーを差し引いた後に売り手に残されたものと比較されます。                                                                                           |
| `SellExactOut` | `amount_out` は売り手が最終的に得るものです。曲線は `amount_out` と逆トランスファーフィーをターゲットにするため、要求された金額が正確に到達します。                                                                                  |

明確に述べる価値のある 2 つの結果：

* 同等のフィーなし プールから計算された境界はもはや受け入れられません。フィーなしコストを `maximum_amount_in` として `BuyExactOut` を実行すると、`ExceededSlippage` で戻り、`SellExactIn` もフィーなし収益を `minimum_amount_out` として戻ります。これは意図した動作です。古い比較により、支払者は既に同意した境界の上にトランスファーフィーで請求されました。
* プール帳簿は vault に到達したものだけを記録します。5% quote ミント上で `amount_in` の `BuyExactIn` の後、`real_quote` は `amount_in × 0.95` ではなく `amount_in` で進みます。

`get_transfer_inverse_fee` は 100% フィー ミントの特殊ケースも削除しました。`maximum_fee` にフォールバックする代わりに、逆フィーを計算できない場合は新しい `CalculateOverflow` エラーを返すようになりました。したがって、`10000` ベーシス ポイントの quote ミントは、フィー キャップで静かにトランザクションするのではなく、正確な出力パスで失敗します。

## `token_program_flag` bit1

`PoolState.token_program_flag` はビットフィールドであり、常にそうでした：

```text theme={null}
bit0  base mint  0 = SPL Token, 1 = Token-2022
bit1  quote mint 0 = SPL Token, 1 = Token-2022
```

フィールド、ビット位置、および両方のビットを書き込むコードはすべてこのリリースより前のものです。変わるのは、quote ミントが Token-2022 ミントになる可能性があるため、bit1 が実際に `1` になる可能性があることです。4 つの値は：

| 値   | Base ミント   | Quote ミント  |
| --- | ---------- | ---------- |
| `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` で読み取ります。バイトを base ミントのブール値として扱うクライアント（`flag === 0 ? Token : Token-2022`）は、値 `2` を Token-2022 base ミントに解決し、base-side トークン アカウントと転送を間違ったプログラムに対して構築します。アカウント サイズまたはフィールド オフセットの変更がないため、インデクサーはストレージ マイグレーションは不要で、デコード修正のみが必要です。

## CPMM マイグレーション アカウント名変更

`MigrateToCpswap` は以前、ミントごとに 1 つのトークンプログラムを取得し、呼び出し元がどちらであるかを決定しました。現在は両方のプログラムを無条件に取得し、ミント自体からマッピングを導出します：

| 位置             | 前                                              | 後                                          |
| -------------- | ---------------------------------------------- | ------------------------------------------ |
| 最初のトークンプログラム   | `base_token_program` — base ミントを所有するプログラム      | `token_program` — 常にレガシー SPL Token プログラム   |
| 2 番目のトークンプログラム | `quote_token_program` — 常にレガシー SPL Token プログラム | `token_program_2022` — 常に Token-2022 プログラム |

2 つの位置は変更されていないため、これは値の変更であり、レイアウトの変更ではありません。ただし、値はほぼ反転しており、古いペアを渡し続けるビルダーは、どちらかのミントが Token-2022 ミントになるとすぐに、レガシー プログラムが必須である場所に Token-2022 を渡します。

レガシー プログラムは、CPMM LP ミントとロックされたリクイディティ フィー キー NFT が常にそこに存在するため、どちらのミントに関わらず無条件に必須です。[2026-08-17 リリース](/ja/reference/changelog/2026-08-17-launchlab-cpmm-only-platform-config)からの `remaining_accounts` レイアウトは変更されていません。

## Quote mints は管理者の裁量でのみ許可されます

CPMM および CLMM とは異なり、LaunchLab は quote ミントに対して**拡張許可リストを実行しません**。`CreateConfig` はミント アカウントをそのまま受け入れるため、唯一のゲートは管理者が `GlobalConfig` にバインドするミントです。プログラムの `NoSupportExtension` チェックは、LaunchLab 自体が作成する Token-2022 base ミントにのみ適用され、`MetadataPointer` と `TransferFeeConfig` のみが許可されます。

Token-2022 quote ミントのバインドを、[`reference/token-2022-support`](/ja/reference/token-2022-support) の CPMM/CLMM 静的ホワイトリストと同じ推論を持つ高信頼アクションとして扱います。`TransferHook` または `PermanentDelegate` quote ミントは config 作成時に許可され、その後、それで引用されるすべてのプールで実行されるか、スイープできます。

## `amm_creator_fee_on` タイムスタンプ ゲート

`InitializeV2` は、アップグレード タイムスタンプ前に `BothToken` 以外の `amm_creator_fee_on` を拒否したタイムスタンプ ゲートを削除します。同等のゲートは `InitializeWithToken2022` に存在します。実際には、両方のパスは mainnet-beta で今日どちらの値も受け入れます。そのタイムスタンプ（`1755522000`、2025-08-18 13:00 UTC）は遠い過去だからです。これはクリーンアップであり、現在の呼び出し元の動作変更ではありません。

## エラーと IDL への影響

コード `6000`–`6022` は、`6022` `InvalidPlatformAllowConfig` を含めて変更されていません。

| コード  | 名前                  | 意味                                     |
| ---- | ------------------- | -------------------------------------- |
| 6023 | `CalculateOverflow` | トランスファーフィーまたは逆トランスファーフィー計算を表現できませんでした。 |

前のリリースは古い `6023` を廃止し、それを空けました。このリリースは番号を再利用します。前のいずれかのバージョンの IDL で `6023` をデコードしないでください。

Token-2022 quote プログラムを渡す前に、LaunchLab IDL をリフレッシュしてください。`token_program_flag` bit1 をデコードするか、名前が変更された `MigrateToCpswap` アカウント リストを構築します。

## SDK への影響

SDK のローンチパッド モジュールの quote 側は、プログラムと同じ場所で `TOKEN_PROGRAM_ID` にハードコードされていました。このリリースに付属するブランチは、代わりに quote ミントの所有者を解決し、トークン アカウント作成、share-fee レシーバーの ATA、命令の quote-program スロットを通じてスレッド化し、4 つの `Curve` メソッドにオプションの `transferFeeConfigB` を追加して、見積もりが上記の式を反映するようにします。`Curve` 結果は `transferFeeB` フィールドを取得します。`amountB` はその意味を保持します。支払者が費やすか売り手が受け取るものです。したがって、フィーなし quote ミントは前と同じ数値を生成します。

これらの 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)

これはこのリリースが必要にする 2 つのことのコンパクト リファレンスです。プールは `token_program_flag` から直接分類され、ミント フェッチなしで両方のビットをデコードします。これは上記で説明した bit1 破損の修正です。`GlobalConfig` はその quote ミントのアドレスのみを格納し、プログラム フラグを格納しないため、コンフィグはそのようには分類できません。デモはミント アカウントの所有者を 1 回読み取り、ミントごとにキャッシュします。両方のパスを並べて見ることは、独自のデコーダーをチェックする最速の方法です。

詳細は [`products/launchlab/code-demos`](/ja/products/launchlab/code-demos#watch-configs-and-pools-over-grpc) を参照してください。

## 更新されたページ

* `products/launchlab/accounts` — quote-mint トークンプログラム、`token_program_flag` ビット レイアウト、および vault 所有権。
* `products/launchlab/instructions` — quote-program アカウント、スワップ スリッページ セマンティクス、および名前が変更されたマイグレーション アカウント。
* `products/launchlab/global-config` — `quote_mint` は Token-2022 ミントになる可能性があり、何がそれをゲートし、何がゲートしないか。
* `products/launchlab/code-demos` — gRPC config/pool ウォッチャー。
* `reference/token-2022-support` — LaunchLab 行と quote-mint セクション。
* `reference/error-codes` — `6023` `CalculateOverflow`。
