Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Raydium akzeptiert keine beliebigen Token-2022-Mints. Sowohl CPMM als auch CLMM laufen im strikten Allow-List-Modus: Nur eine kleine Menge von Erweiterungen passiert standardmäßig; alles andere wird bei der Pool-Erstellung abgelehnt. Eine Handvoll vertrauenswürdiger Mints werden durch hardcodierte Adressen zugelassen; CLMM unterstützt zusätzlich eine von Administratoren verwaltete Pro-Mint-Registry und eine Laufzeit-Superstate-Token-Erkennung. Diese Seite ist die Einzelseiten-Referenz für das, was durchgesetzt wird und wo, mit Datei- und Zeilenzitaten in den Programmquellen.
Unterstützung auf Programmebene
Die Allow-List-Checks befinden sich in:
- CPMM:
is_supported_mintinraydium-cp-swap/programs/cp-swap/src/utils/token.rs:178, aufgerufen vonInitialize. - CLMM:
is_supported_mintinraydium-clmm/programs/amm/src/util/token.rs:280, aufgerufen vonCreatePool. - LaunchLab:
initialize_with_token_2022inraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(Quelle nicht öffentlich verfügbar).
CLMM-Position-NFT-Einfrieren für eingeschränkte Emittenten
Position-NFT-Konten bleiben standardmäßig aufgetaut. CLMM friert einen nur ein, wenn die Position einen V2-Open-Pfad verwendet und mindestens eine Vault-Mint die aktuellefreeze_authority hat, die der hardcodierten Liste eingeschränkter Emittenten entspricht. Die anfängliche Liste enthält die gleiche Authority, die vom Superstate-Erkennungspfad unten verwendet wird. Das Setzen des Pool-PDA als Freeze-Authority des Position-NFT-Mints ist selbst kein Einfrieren. Dies ist eine Position-Custody-Regel, keine weitere Pool-Erstellungs-Allow-List:
- Der Pool kann bereits existieren und bleibt swappbar.
- Der Position-NFT-Mint verwendet den CLMM-Pool-PDA als seine eigene Freeze-Authority; der zugrunde liegende Emittent kontrolliert den Position-NFT nicht.
OpenPositionV2deckt klassische SPL-Position-NFTs über Token-2022-Pool-Assets ab.OpenPositionWithToken22Nftdeckt Token-2022-Position-NFTs ab.OpenPositionV1 inspiziert Vault-Mints nicht und kann nicht die Token-2022-eingeschränkten Assets bedienen, auf die die ausgelieferte Liste abzielt.- Bestehende Positionen bleiben unverändert.
ClosePosition taut auf und brennt atomar, wenn der Client den Pool als erstes verbleibendes Konto übergibt. Siehe products/clmm/ticks-and-positions.
CPMM- und CLMM-Erweiterungs-Allow-List
Nach den statischen Whitelist-Kurzschlüssen (unten behandelt) iteriert das Programm die Erweiterungen des Mints und lehnt den Mint ab, wenn er irgendeine Erweiterung außer diesen fünf trägt:
Alles nicht in dieser Liste —
TransferHook, NonTransferable, ConfidentialTransferMint, PermanentDelegate, MintCloseAuthority, DefaultAccountState, GroupPointer, GroupMemberPointer, MemberPointer, Pausable usw. — führt dazu, dass is_supported_mint false zurückgibt und die Pool-Erstellung zurückgerollt wird.
Die relevanten Zeilen (CPMM, identische Form in CLMM):
cp-swap/src/utils/token.rs:190–200
Bypass-Pfade
Ein Token-2022-Mint, der nicht in die Allow-List passt, kann immer noch durch einen von drei expliziten Bypasses zugelassen werden. Sie werden der Reihe nach versucht, bevor die Erweiterungsiteration ausgeführt wird.1. Statische Mint-Whitelist
Ein konstantesMINT_WHITELIST-Array von Base58-Strings ist in jedem Programm hardcodiert. Wenn die Adresse des Mints übereinstimmt, gibt die Funktion sofort true zurück und es wird keine Erweiterungsprüfung durchgeführt.
Diese Adressen sind in das Programm eingebacken; das Aktualisieren der Liste erfordert ein Programm-Upgrade durch das 3/4-Upgrade-Multisig.
2. Pro-Mint-Registry — nur CLMM
CLMM konsultiert zusätzlich einenSupportMintAssociated-PDA mit Seed [b"support_mint", mint]. Wenn dieser PDA für den Mint existiert, wird er unabhängig von seinem Erweiterungssatz zugelassen.
Der PDA wird von CreateSupportMintAssociated erstellt (admin/create_support_mint_associated.rs). Die Anweisung ist auf zwei Unterzeichner beschränkt:
crate::admin::ID— die Standard-Raydium-Admin-Authority.crate::create_support_mint_associated_owner::ID— eine dedizierte Authority für diesen Zweck:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(Mainnet),rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(Devnet).
3. Superstate-Erkennung — nur CLMM
CLMM hat einen dritten Pfad speziell für Superstates tokenisierte Assets, die dieScaledUiConfig-Erweiterung verwenden, die die Version von spl-token-2022, die in das CLMM-Programm verlinkt ist, nicht entpacken kann. Anstatt die Abhängigkeit zu aktualisieren, erkennt CLMM Superstate-Token an ihrer Authority-Form:
raydium-clmm/programs/amm/src/util/token.rs:485
Ein Mint passiert diesen Branch, wenn alle vier zutreffen:
- Sein besitzendes Programm ist das Token-2022-Programm.
- Seine Freeze-Authority entspricht
superstate_allowlist::ID. Siehereference/program-addressesfür die Mainnet-Beta- und Devnet-Werte. - Seine
DefaultAccountState-Erweiterung ist aufFrozengesetzt. - Sein permanenter Delegate ist auch
superstate_allowlist::ID.
Was die Bypasses nicht verzeihen
Die Bypasses überspringen die Erweiterungs-Allow-List, aber das Programm erzwingt immer noch:- Der Mint wird entweder von
TokenoderToken-2022besessen. Ein benutzerdefiniertes Token-Programm wird vorgelagert abgelehnt. - Die Pool-Vaults werden mit den richtigen ATA-Erweiterungen für Token-2022-Pools erstellt (
ImmutableOwnerusw.). - Alle Transfers gehen durch
transfer_checked— gebührentragende Mints landen den richtigen Betrag im Vault.
TransferHook hinzufügt, erhält keinen Swap-Zeit-Check; der Hook würde einfach bei jedem Transfer ausgeführt und könnte Swaps blockieren. Whitelisting ist daher eine Aktion mit hohem Vertrauen.
„Blocked”-Semantik
Wennis_supported_mint false zurückgibt, wird die Pool-Erstellung mit ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM) zurückgerollt. Siehe reference/error-codes für die numerischen Codes.
Bestehende Pools können diese Prüfung nicht rückwirkend fehlschlagen — das Gate wird nur bei der Erstellung ausgeführt. Mint-Erweiterungen sind unveränderlich für die Kategorien, die Raydium ablehnt (Transfer-Hook, Non-Transferable, Confidential-Transfer können nach der Erstellung nicht hinzugefügt werden), daher ist die statische Prüfung ausreichend.
Warum jede ausgeschlossene Erweiterung ausgeschlossen ist
- TransferHook — ruft ein benutzerdefiniertes Programm bei jedem Transfer auf, mit beliebigem CU-Verbrauch, beliebigen Fehlerbedingungen und der Möglichkeit, das aufrufende Programm erneut einzugeben. Es gibt keine sichere Sandbox. Einige DEXes führen Hook-Allow-Listen; Raydium nicht.
- NonTransferable —
Transferschlägt immer fehl. Ein Pool kann keine Custody übernehmen. - ConfidentialTransfer — Transfer-Beträge sind verschlüsselt; die Kurve kann den Swap nicht bewerten.
- PermanentDelegate — ein Inhaber des Delegates kann jedes Token-Konto, einschließlich des Pool-Vaults, leeren. Nur über die statische Whitelist für vertrauenswürdige Emittenten zulässig (z. B. regulierte Stablecoins).
- MintCloseAuthority — der Mint kann geschlossen werden; bestehende Pools werden unbrauchbar. Standardmäßig nicht zulässig.
- DefaultAccountState (Frozen) — Pool-ATAs würden im
Frozen-Status landen und müssen pro Konto aufgetaut werden. Nur über Superstate-Erkennung zulässig, die davon ausgeht, dass der Emittent institutionelle Konten bei der Registrierung auftaut. - Group/Member-Pointer — nicht aktiv schädlich, aber ungeprüft. Standardmäßig nicht zulässig, um die Oberfläche eng zu halten.
Transfer-Gebühren-Buchhaltung
Für Mints mitTransferFeeConfig bewegt jeder Swap, jede Einzahlung und jede Auszahlung weniger als den nominalen Betrag. Das SDK zeigt beide Hälften der Berechnung:
amountIn + token2022FeeInals „Sie senden”amountOut - token2022FeeOutals „Sie erhalten”feeAmountals die Pool-Gebühr (LP + Protokoll), die von der Token-2022-Transfer-Gebühr getrennt ist
amountIn → amountOut zeigt, unterschätzt die Kosten.
maximumFee-Obergrenze
Token-2022-Transfer-Gebühren sind pro Transfer begrenzt. Für einen 1%-Mint mit einer 10.000-Token-Obergrenze zahlt ein 100.000.000-Token-Transfer nur 10.000 an Gebühren. Das computeSwapAmount des SDK wendet die Obergrenze an; direkte Programm-Aufrufer müssen sie replizieren.
Epoch-Übergang
Eine Mint-Authority kann eine Gebührensatzänderung planen, die in der nächsten Epoch aktiviert wird. Während des Übergangsfensters leben zwei Configs (older, newer) gleichzeitig auf dem Mint und TransferChecked wählt nach aktuellem Epoch. Sowohl CPMM SwapV2 als auch CLMM SwapV2 übergeben das vollständige Mint-Konto in accounts, sodass das Programm die richtige Config ohne zusätzliche Suche liest.
Wenn Sie mehr als eine Epoch im Voraus über die Trade API oder das SDK zitieren, kann die ausgeführte Gebühr von der zitierten Gebühr abweichen — begrenzt durch die maximum_fee_basis_points der älteren Config.
Zinsträger und ScaledUiAmount
Der Pool hält den Hauptbetrag; der „UI-Betrag” ist der Hauptbetrag multipliziert mit einem zeitabhängigen oder von Admin gesetzten Skalierungsfaktor. Swap-Mathematik arbeitet mit dem Hauptbetrag:pool.token0Vault.amount als Hauptbetrag behandeln.
Definition von „Token-2022-Pool”
Ein Pool ist ein Token-2022-Pool, wenn entweder MintprogramId == TokenzQdB... hat. Die API zeigt dies:
programId zum Dispatchen und hasTransferFee zum Anzeigen einer UI-Warnung.
SDK-Helfer
Häufige Integrationsfehler
- Nur die Programm-ID vorab prüfen. Ein Mint kann Token-2022 und nicht unterstützt sein. Gehen Sie die Erweiterungsliste gegen die Allow-List (und die statische Whitelist) durch, bevor Sie die Pool-Erstellung zulassen.
- Das SDK-Zitat vertrauen, wenn der Mint überhaupt nicht akzeptiert wird. Die Zitat-API weigert sich nicht zu zitieren — die Pool-Erstellung ist das, was zurückgerollt wird. Bestätigen Sie die
is_supported_mint-Semantik offline, bevor Sie die Pool-Erstellung in Ihrer UI verfügbar machen. - Zitieren ohne Transfer-Gebühren-Haarschnitt. Ein 1%-Transfer-Gebühren-Mint auf beiden Seiten eines 0,25%-CPMM-Pools hat eine effektive Gebühr von etwa 2,25%, nicht 0,25%. Verwenden Sie das SDK-Zitat oder Trade-API-Zitat — berechnen Sie die Gebühr niemals manuell nur aus der Pool-Gebühren-Stufe.
- Die Legacy-
Swap-Anweisung auf einem Token-2022-Pool aufrufen.Swapstammt aus der Zeit vor Token-2022. Verwenden SieSwapV2, wenn entweder Mint Token-2022 ist. - Neue Token-2022-Mints automatisch auflisten. Wallets und Aggregatoren sollten auf
TransferHookundNonTransferableprüfen, bevor sie einen Mint Benutzern anzeigen; beide sind Raydium-feindselig.
Zukünftige Arbeiten
Solana-Ökosystem- und Protokoll-Roadmap-Elemente, die diese Matrix ändern würden:- Allow-gelistete Transfer-Hook-Programme auf Solana-Ebene (Ökosystem-Konvention entwickelt sich).
- Confidential-Transfer-kompatible AMMs (Forschungsphase).
- Breitere CPMM-Pro-Mint-Registry (Parität mit CLMM).
- Abhängigkeits-Upgrade, damit die
ScaledUiConfig-Dekodierung von CLMM ohne die Superstate-Heuristik funktioniert.
Verweise
algorithms/token-2022-transfer-fees— Gebühren-Mathematik in Swaps.products/cpmm/instructions—SwapV2,Initialize.products/clmm/instructions—SwapV2,CreatePool,CreateSupportMintAssociated.reference/error-codes—NotSupportMint-Numerische Codes pro Programm.
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— Pro-Mint-Registry-Anweisung.raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs— LaunchLab Token-2022-Base-Mint-Erstellung.

