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.
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
プログラムレベルのサポート
| プログラム | Token-2022 ベース/クォートミント? | モード |
|---|---|---|
| CPMM | あり — ゲート制限 | 厳密な拡張機能許可リスト + 4ミントの静的許可リスト。 |
| CLMM | あり — ゲート制限 | 厳密な拡張機能許可リスト + 6ミントの静的許可リスト + 管理者ミント単位レジストリ + Superstate検出。 |
| AMM v4 | いいえ | プログラムは Token-2022 以前のもので、両方のミントはクラシック SPL Token である必要があります。 |
| Stable AMM | いいえ | AMM v4 と同じ制約。 |
| Farm v6 | あり、部分的 | リワードミントは Token-2022 にできます(ファームが CPMM/CLMM LP をラップする場合は同じ許可リストに従う)。ユーザーステーク LP ミントはラップされたプールから継承します。 |
| LaunchLab | あり、プログラム管理 | ベースミントは Token-2022 にできますが、専用の initialize_with_token_2022 命令を経由してのみ可能です。プログラム自体は MetadataPointer(常に)とオプションで TransferFeeConfig(レート ≤ 5%)でミントを作成します。任意の拡張機能を持つ既存の Token-2022 ミントはベースとして使用できません。 |
| Burn & Earn | プールプログラムをミラー | CPMM / CLMM ゲートを継承します。 |
- CPMM:
is_supported_mintinraydium-cp-swap/programs/cp-swap/src/utils/token.rs:178,Initializeから呼び出し。 - CLMM:
is_supported_mintinraydium-clmm/programs/amm/src/util/token.rs:280,CreatePoolから呼び出し。 - LaunchLab:
initialize_with_token_2022inraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(ソースは公開されていません)。
CPMM および CLMM 拡張機能許可リスト
静的許可リストの短いサーキット後(以下で説明)、プログラムはミントの拡張機能を反復し、これらの 5 つ以外の拡張機能を持つミントを拒否します:| 拡張機能 | 許可される理由 |
|---|---|
TransferFeeConfig | プール数学は受信手数料を差し引きます。Token-2022 プログラムは送信手数料を処理します。algorithms/token-2022-transfer-fees を参照。 |
MetadataPointer | 装飾的 — オンチェーンメタデータを指します。 |
TokenMetadata | 装飾的 — インラインメタデータ。 |
InterestBearingConfig | プールは元本金額を認識します。UI 乗数は装飾のみで、基礎残高は保持されます。 |
ScaledUiAmount | 利息付きと同じ形状 — スケール係数は UI 表示にのみ適用されます。 |
TransferHook、NonTransferable、ConfidentialTransferMint、PermanentDelegate、MintCloseAuthority、DefaultAccountState、GroupPointer、GroupMemberPointer、MemberPointer、Pausable など — は is_supported_mint が false を返し、プール作成が戻ります。
関連する行(CPMM、CLMM で同じ形状):
cp-swap/src/utils/token.rs:190–200
迂回パス
許可リストに適合しない Token-2022 ミントは、3 つの明示的な迂回路のいずれかを通じて許可されることができます。拡張機能の反復が実行される前に、順番に試みられます。1. 静的ミント許可リスト
定数MINT_WHITELIST の base58 文字列の配列は各プログラムにハードコードされています。ミントのアドレスが一致する場合、関数は true を直ちに返し、拡張機能チェックは実行されません。
| プログラム | ホワイトリストされたミント |
|---|---|
| CPMM | HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM, Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g, FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4, 2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo |
| CLMM | 同じ 4 つ、加えて DAUcJBg4jSpVoEzASxYzdqHMUN8vuTpQyG2TvDcCHfZg, AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9 |
2. ミント単位のレジストリ — CLMM のみ
CLMM はさらに、シード[b"support_mint", mint] で SupportMintAssociated PDA に相談します。そのミントに対して PDA が存在する場合、その拡張機能セットに関係なく許可されます。
PDA は CreateSupportMintAssociated によって作成されます(admin/create_support_mint_associated.rs)。命令は 2 つの署名者にゲート制限されています:
crate::admin::ID— 標準 Raydium 管理者権限。crate::create_support_mint_associated_owner::ID— この目的専用の権限:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(メインネット)、rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(デブネット)。
3. Superstate検出 — CLMM のみ
CLMM には、Superstate のトークン化資産専用の 3 番目のパスがあります。これらは CLMM プログラムにリンクされたspl-token-2022 のバージョンがアンパックできない ScaledUiConfig 拡張機能を使用します。依存関係をアップグレードするのではなく、CLMM は Superstate トークンを権限形状によって検出します:
raydium-clmm/programs/amm/src/util/token.rs:485
ミントは、すべての 4 つが成立する場合、このブランチをパスします:
- そのプログラムの所有者は Token-2022 プログラムです。
- その凍結権限は
superstate_allowlist::IDと等しい。メインネット:2Yq4T3mPNfjtEyTxSbRjRKqLf1pwbTasuCQrWe6QpM7x。デブネット:3TRuL3MFvzHaUfQAb6EsSAbQhWdhmYrKxEiViVkdQfXu。 - その
DefaultAccountState拡張機能はFrozenに設定されています。 - その永続的な委任者も
superstate_allowlist::IDです。
迂回路が放棄しないもの
迂回路は拡張機能許可リストをスキップしますが、プログラムは依然として実装します:- ミントは
TokenまたはToken-2022によって所有されています。カスタムトークンプログラムはアップストリームで拒否されます。 - プールボールトは Token-2022 プール用の正しい ATA 拡張機能で作成されます(
ImmutableOwnerなど)。 - すべての転送は
transfer_checkedを通過します — 手数料付きミントはボールトに正しい金額を配置します。
TransferHook を追加する場合、スワップ時チェックは取得されません。フックはすべての転送で実行され、スワップをブリックする可能性があります。したがって、ホワイトリストは高度な信頼アクションです。
「ブロック」セマンティクス
is_supported_mint が false を返すと、プール作成は ErrorCode::NotSupportMint(CPMM)/ ErrorCode::NotSupportMint(CLMM)で戻ります。数値コードについては reference/error-codes を参照してください。
既存のプールはこのチェックで遡及的に失敗することはできません — ゲートは作成時にのみ実行されます。ミント拡張機能は Raydium が拒否するカテゴリでは不変です(転送フック、非転送可能、機密転送は作成後に追加することはできません)ため、静的チェックで十分です。
除外された各拡張機能が除外される理由
- TransferHook — すべての転送で カスタムプログラムを呼び出します。任意の CU 消費、任意の失敗条件、呼び出し元プログラムの再入能力があります。安全なサンドボックスはありません。一部の DEX はフック許可リストを保持しており、Raydium はそうしません。
- NonTransferable —
Transferは常に失敗します。プールは保管を取ることができません。 - ConfidentialTransfer — 転送金額は暗号化されています。曲線はスワップを価格設定できません。
- PermanentDelegate — 委任者の保有者はプールボールトを含む任意のトークンアカウントをスイープできます。信頼できる発行者(例えば規制されたステーブルコイン)の場合のみ静的許可リストを介して許可されます。
- MintCloseAuthority — ミントは閉じることができます。既存のプールは使用不可になります。デフォルトで禁止されています。
- DefaultAccountState (Frozen) — プール ATA は
Frozen状態で着陸し、アカウントごとにチューニングが必要です。Superstate 検出でのみ許可されます。これは発行者が登録時に機関口座をチューニングすることを前提としています。 - Group/Member ポインター — 積極的に有害ではありませんが、レビューされていません。表面を狭く保つため、デフォルトで禁止されています。
転送手数料計算
TransferFeeConfig を持つミントの場合、すべてのスワップ、デポジット、および撤回では名目金額より少ない金額が移動します。SDK は計算の両半分を表示します:
amountIn + token2022FeeInを「送信」としてamountOut - token2022FeeOutを「受け取る」としてfeeAmountをプール手数料(LP + プロトコル)として。これは Token-2022 転送手数料とは別です
amountIn → amountOut のみを表示するナイーブ UI はコストを過小評価します。
maximumFee キャップ
Token-2022 転送手数料は転送ごとにキャップされます。1% ミントと 10,000 トークンのキャップの場合、100,000,000 トークン転送は手数料として 10,000 のみを支払います。SDK の computeSwapAmount はキャップを適用します。直接プログラム呼び出し元はそれを複製する必要があります。
エポック遷移
ミント権限は、次のエポックで有効になる手数料レート変更をスケジュールできます。遷移ウィンドウ中、2 つの設定(older、newer)がミントに同時に存在し、TransferChecked は現在のエポックによって選択されます。CPMM SwapV2 と CLMM SwapV2 の両方とも、accounts に完全なミントアカウントを渡します。したがって、プログラムは余分なルックアップなしで正しい設定を読みます。
Trade API または SDK を通じて 1 つ以上のエポック前にクォートする場合、実行される手数料はクォートされた手数料と異なる可能性があります — より古い設定の maximum_fee_basis_points によってバインドされます。
利息付きおよび ScaledUiAmount
プールは元本金額を保持します。「UI 金額」は元本に時間に依存した、または管理者設定のスケール係数を乗じたものです。スワップ数学は元本で操作されます:pool.token0Vault.amount を元本として扱うべきです。
「Token-2022 プール」定義
プールは いずれかのミントがprogramId == TokenzQdB... を持つ場合、Token-2022 プールです。API は以下を表示します:
programId を使用し、UI 警告を表示するには hasTransferFee を使用してください。
SDK ヘルパー
統合の一般的な誤り
- プログラム ID のみをプリフライトする。 ミントは Token-2022 かつサポートされていない可能性があります。許可リスト(および静的許可リスト)に対して拡張機能リストをウォークしてから、プール作成を許可してください。
- ミントがまったく受け入れられていない場合、SDK のクォートを信頼する。 クォート API は拒否されません — プール作成が戻ります。UI でプール作成を公開する前に、
is_supported_mintセマンティクスをオフチェーンで確認してください。 - 転送手数料カットなしでクォートする。 0.25% CPMM プールの両側に 1% 転送手数料ミントがあると、実効手数料は約 2.25% であり、0.25% ではありません。SDK クォートまたは Trade API クォートを使用してください — プールの手数料層だけから手数料を手動計算しないでください。
- Token-2022 プールで従来の
Swap命令を呼び出す。Swapは Token-2022 以前のものです。いずれかのミントが Token-2022 であるときはいつでもSwapV2を使用してください。 - 新しい Token-2022 ミントを自動リストする。 ウォレットとアグリゲーターは、ミントをユーザーに表示する前に
TransferHookとNonTransferableを確認する必要があります。両方とも Raydium に対して敵対的です。
今後の作業
このマトリックスを変更する Solana エコシステムとプロトコル ロードマップアイテム:- Solana レベルで許可されている転送フックプログラム(エコシステム慣例進化中)。
- 機密転送互換 AMM(研究段階)。
- より広い CPMM ミント単位レジストリ(CLMM とのパリティ)。
- Superstate ヒューリスティックなしで CLMM の
ScaledUiConfigデコーディングが機能するように依存関係をアップグレード。
ポインター
algorithms/token-2022-transfer-fees— スワップの手数料数学。products/cpmm/instructions—SwapV2,Initialize.products/clmm/instructions—SwapV2,CreatePool,CreateSupportMintAssociated.reference/error-codes— プログラムごとのNotSupportMint数値コード。
raydium-cp-swap/programs/cp-swap/src/utils/token.rs—MINT_WHITELIST,is_supported_mint.raydium-clmm/programs/amm/src/util/token.rs—MINT_WHITELIST,superstate_allowlist,is_superstate_token,is_supported_mint.raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs— ミント単位レジストリ命令。raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs— LaunchLab Token-2022 ベースミント作成。


