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.
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Support au niveau du programme
| Programme | Mints base/quote Token-2022 ? | Mode |
|---|---|---|
| CPMM | Oui — contrôlé | Liste blanche stricte d’extensions + liste blanche statique de 4 mints. |
| CLMM | Oui — contrôlé | Liste blanche stricte d’extensions + liste blanche statique de 6 mints + registre par mint admin + détection Superstate. |
| AMM v4 | Non | Le programme antécède Token-2022 ; les deux mints doivent être du Token SPL classique. |
| Stable AMM | Non | Mêmes contraintes que AMM v4. |
| Farm v6 | Oui, partiel | Le mint de récompense peut être Token-2022 (soumis à la même liste blanche quand une farm enveloppe un LP CPMM/CLMM) ; les mints LP de stake des utilisateurs héritent du pool enveloppé. |
| LaunchLab | Oui, géré par programme | Le mint de base peut être Token-2022, mais seulement via l’instruction dédiée initialize_with_token_2022 ; le programme crée lui-même le mint avec MetadataPointer (toujours) et optionnellement TransferFeeConfig (taux ≤ 5 %). Les mints Token-2022 pré-existants avec extensions arbitraires ne peuvent pas être utilisés comme base. |
| Burn & Earn | Miroir du programme de pool | Hérite du contrôle CPMM / CLMM. |
- CPMM :
is_supported_mintdansraydium-cp-swap/programs/cp-swap/src/utils/token.rs:178, appelé depuisInitialize. - CLMM :
is_supported_mintdansraydium-clmm/programs/amm/src/util/token.rs:280, appelé depuisCreatePool. - LaunchLab :
initialize_with_token_2022dansraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(source non publiquement disponible).
Liste blanche d’extensions CPMM et CLMM
Après les courts-circuits de liste blanche statique (couverts ci-dessous), le programme itère les extensions du mint et rejette le mint s’il porte une extension autre que ces cinq :| Extension | Raison pour laquelle c’est autorisé |
|---|---|
TransferFeeConfig | Les mathématiques du pool soustraient la commission entrante ; le programme Token-2022 traite la commission sortante. Voir algorithms/token-2022-transfer-fees. |
MetadataPointer | Décorateur — pointe vers des métadonnées on-chain. |
TokenMetadata | Décorateur — métadonnées en ligne. |
InterestBearingConfig | Le pool voit le montant principal ; le multiplicateur UI est un décorateur et le solde sous-jacent est préservé. |
ScaledUiAmount | Même forme que l’intérêt composé — le facteur d’échelle s’applique uniquement à l’affichage UI. |
TransferHook, NonTransferable, ConfidentialTransferMint, PermanentDelegate, MintCloseAuthority, DefaultAccountState, GroupPointer, GroupMemberPointer, MemberPointer, Pausable, etc. — fait que is_supported_mint retourne false et la création du pool s’annule.
Les lignes pertinentes (CPMM, forme identique dans CLMM) :
cp-swap/src/utils/token.rs:190–200
Chemins de contournement
Un mint Token-2022 qui ne correspond pas à la liste blanche peut quand même être admis par l’un des trois contournements explicites. Ils sont tentés dans l’ordre, avant que l’itération d’extension ne s’exécute.1. Liste blanche de mint statique
Un tableau constantMINT_WHITELIST de chaînes base58 est codé en dur dans chaque programme. Si l’adresse du mint correspond, la fonction retourne true immédiatement et aucune vérification d’extension n’est effectuée.
| Programme | Mints en liste blanche |
|---|---|
| CPMM | HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM, Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g, FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4, 2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo |
| CLMM | Les quatre mêmes, plus DAUcJBg4jSpVoEzASxYzdqHMUN8vuTpQyG2TvDcCHfZg, AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9 |
2. Registre par mint — CLMM uniquement
CLMM consulte en outre un PDASupportMintAssociated à la graine [b"support_mint", mint]. Si ce PDA existe pour le mint, il est admis indépendamment de son ensemble d’extensions.
Le PDA est créé par CreateSupportMintAssociated (admin/create_support_mint_associated.rs). L’instruction est contrôlée à deux signataires :
crate::admin::ID— l’autorité admin Raydium standard.crate::create_support_mint_associated_owner::ID— une autorité dédiée à cet effet :RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(mainnet),rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(devnet).
3. Détection Superstate — CLMM uniquement
CLMM a un troisième chemin spécifiquement pour les actifs tokenisés de Superstate, qui utilisent l’extensionScaledUiConfig que la version de spl-token-2022 liée au programme CLMM ne peut pas décompacter. Plutôt que de mettre à niveau la dépendance, CLMM détecte les tokens Superstate par la forme de leur autorité :
raydium-clmm/programs/amm/src/util/token.rs:485
Un mint passe cette branche si les quatre tiennent :
- Son programme propriétaire est le programme Token-2022.
- Son autorité de gel égale
superstate_allowlist::ID. Mainnet :2Yq4T3mPNfjtEyTxSbRjRKqLf1pwbTasuCQrWe6QpM7x. Devnet :3TRuL3MFvzHaUfQAb6EsSAbQhWdhmYrKxEiViVkdQfXu. - Son extension
DefaultAccountStateest définie surFrozen. - Son délégué permanent est aussi
superstate_allowlist::ID.
Ce que les contournements ne dispensent pas
Les contournements ignorent la liste blanche d’extensions, mais le programme applique toujours :- Le mint est propriété de
TokenouToken-2022. Un programme de token personnalisé est rejeté en amont. - Les coffres du pool sont créés avec les bonnes extensions ATA pour les pools Token-2022 (
ImmutableOwner, etc.). - Tous les transferts passent par
transfer_checked— les mints porteurs de frais landent le bon montant dans le coffre.
TransferHook plus tard ne gagne pas une vérification au moment du swap ; le hook s’exécuterait simplement à chaque transfert et pourrait bloquer les swaps. La mise en liste blanche est donc une action de haute confiance.
Sémantique « Bloqué »
Quandis_supported_mint retourne false, la création du pool s’annule avec ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM). Voir reference/error-codes pour les codes numériques.
Les pools existants ne peuvent pas échouer rétroactivement cette vérification — le portail ne s’exécute qu’à la création. Les extensions de mint sont immuables pour les catégories que Raydium rejette (transfer hook, non-transférable, transfer confidentiel ne peut pas être ajouté post-création), donc la vérification statique est suffisante.
Pourquoi chaque extension exclue est exclue
- TransferHook — invoque un programme personnalisé à chaque transfert, avec consommation CU arbitraire, conditions d’échec arbitraires, et la capacité à réentrer le programme appelant. Aucun sandbox sûr n’existe. Certains DEX maintiennent des listes blanches de hooks ; Raydium ne le fait pas.
- NonTransferable —
Transferéchoue toujours. Un pool ne peut pas prendre la garde. - ConfidentialTransfer — les montants de transfert sont chiffrés ; la courbe ne peut pas évaluer le swap.
- PermanentDelegate — un titulaire du délégué peut balayer n’importe quel compte de token, y compris le coffre du pool. Autorisé uniquement via la liste blanche statique pour les émetteurs de confiance (p. ex., stablecoins réglementés).
- MintCloseAuthority — le mint peut être fermé ; les pools existants deviennent inutilisables. Disallowed by default.
- DefaultAccountState (Frozen) — les ATA du pool se retrouveraient à l’état
Frozenet nécessiteraient un dégel par compte. Autorisé uniquement via la détection Superstate, qui suppose que l’émetteur dégèle les comptes institutionnels lors de l’inscription. - Group/Member pointers — pas activement nuisibles, mais non examinés. Disallowed by default to keep the surface narrow.
Comptabilité des frais de transfert
Pour les mints portantTransferFeeConfig, chaque swap, dépôt et retrait déplace moins que le montant nominal. Le SDK expose les deux moitiés du calcul :
amountIn + token2022FeeIncomme « vous envoyez »amountOut - token2022FeeOutcomme « vous recevez »feeAmountcomme la commission du pool (LP + protocole), qui est séparée de la commission de transfert Token-2022
amountIn → amountOut sous-estime les coûts.
Plafond maximumFee
Les frais de transfert Token-2022 sont plafonné par transfert. Pour un mint à 1 % avec un plafond de 10 000 tokens, un transfert de 100 000 000 tokens ne paie que 10 000 en frais. Le computeSwapAmount du SDK applique le plafond ; les appelants de programme directs doivent le reproduire.
Transition d’époque
Une autorité de mint peut programmer un changement de taux de frais qui s’active à l’époque suivante. Pendant la fenêtre de transition, deux configs (older, newer) vivent sur le mint à la fois et TransferChecked sélectionne par époque actuelle. SwapV2 de CPMM et SwapV2 de CLMM passent tous deux le compte de mint complet dans accounts, donc le programme lit la bonne config sans recherche supplémentaire.
Si vous cotez plus d’une époque à l’avance via l’API Trade ou le SDK, les frais exécutés peuvent différer des frais cotés — délimité par maximum_fee_basis_points de la config la plus ancienne.
Interest-bearing et ScaledUiAmount
Le pool détient le montant principal ; le « montant UI » est le principal multiplié par un facteur d’échelle dépendant du temps ou défini par un administrateur. Les mathématiques du swap opèrent sur le principal :pool.token0Vault.amount comme principal.
Définition de « pool Token-2022 »
Un pool est un pool Token-2022 si l’un ou l’autre mint aprogramId == TokenzQdB.... L’API expose ceci :
programId pour dispatcher, et hasTransferFee pour afficher un avertissement UI.
Aides du SDK
Erreurs d’intégration courantes
- Pré-validation seulement de l’ID du programme. Un mint peut être Token-2022 et non supporté. Marchez la liste d’extension par rapport à la liste blanche (et la liste blanche statique) avant d’autoriser la création du pool.
- Faire confiance à la cotation du SDK quand le mint n’est pas accepté du tout. L’API de cotation ne refuse pas de coter — la création du pool est ce qui s’annule. Confirmez la sémantique
is_supported_minthors chaîne avant d’exposer la création du pool dans votre UI. - Coter sans la retenue de frais de transfert. Un mint à frais de transfert de 1 % des deux côtés d’un pool CPMM à 0,25 % a une commission effective d’environ 2,25 %, pas 0,25 %. Utilisez la cotation du SDK ou la cotation de l’API Trade — ne calculez jamais les frais manuellement à partir du seul niveau de frais du pool.
- Appeler l’instruction
Swaphéritée sur un pool Token-2022.Swapantécède Token-2022. UtilisezSwapV2quand l’un ou l’autre mint est Token-2022. - Lister automatiquement les nouveaux mints Token-2022. Les portefeuilles et agrégateurs doivent vérifier
TransferHooketNonTransferableavant de surfacer un mint aux utilisateurs ; les deux sont hostiles à Raydium.
Travaux futurs
Les éléments de feuille de route d’écosystème Solana et de protocole qui changeraient cette matrice :- Programmes de transfer-hook en liste blanche au niveau Solana (convention d’écosystème en évolution).
- AMM compatibles avec confidential-transfer (stade de recherche).
- Registre par mint CPMM plus large (parité avec CLMM).
- Mise à niveau de dépendance afin que le décodage
ScaledUiConfigde CLMM fonctionne sans l’heuristique Superstate.
Pointeurs
algorithms/token-2022-transfer-fees— mathématiques des frais dans les swaps.products/cpmm/instructions—SwapV2,Initialize.products/clmm/instructions—SwapV2,CreatePool,CreateSupportMintAssociated.reference/error-codes— codes numériquesNotSupportMintpar programme.
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— instruction de registre par mint.raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs— création de mint de base Token-2022 pour LaunchLab.


