Skip to main content
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Les produits principaux de Raydium ne dépendent pas d’oracles externes pour la tarification — l’état du pool est l’oracle. Cependant, l’API et le SDK utilisent des oracles externes pour la tarification en USD affichée aux utilisateurs, et les mints Token-2022 apportent un ensemble plus riche de contrôles que SPL Token, dont certains changent fondamentalement le modèle de confiance d’un pool. Cette page catalogue les deux.

Oracles dans Raydium

Interne : le pool est l’oracle

Pour AMM v4, CPMM et CLMM, la définition du protocole du « prix actuel » est dérivée uniquement de l’état du pool :
  • AMM v4 / CPMM : price = vaultB_balance / vaultA_balance (en tenant compte des décimales).
  • CLMM : price = (sqrtPriceX64 / 2^64)^2 × 10^(decimalsA - decimalsB).
Aucun oracle externe n’est consulté lors d’un swap, d’un dépôt ou d’un retrait. C’est la partie « sans confiance » de la conception AMM : si les mathématiques du pool sont correctes, aucune manipulation externe d’un flux de prix ne peut le corrompre.

ObservationState CLMM comme oracle TWAP

Les pools CLMM maintiennent un compte ObservationState qui enregistre des snapshots historiques de sqrt_price. D’autres programmes peuvent composer avec ceci pour dériver un prix moyen pondéré dans le temps résistant à la manipulation :
C’est le même modèle qu’Uniswap V3 utilise. Une manipulation de prix à court terme (une baleine poussant temporairement le pool) ne corrompt pas le TWAP car il est moyenné sur des centaines de slots. Les programmes qui ont besoin d’un flux de prix plus sûr pour les mints CLMM (oracles de liquidation, tarification d’options, etc.) doivent utiliser les TWAP d’ObservationState plutôt que les prix instantanés. N’utilisez pas les prix instantanés CLMM pour la composabilité. Un seul grand swap peut pousser le prix spot de 10 % + sur un pool peu profond ; le TWAP amortit cela. Voir products/clmm/accounts#observation-state pour la disposition des données.

Externe : tarification en USD sur le frontend/API

Le frontend de Raydium et api-v3.raydium.io affichent les valeurs en USD (TVL, APR des frais, volume en $). Celles-ci proviennent de :
  • Pyth comme oracle principal pour les mints majeurs.
  • Prix agrégateur de Jupiter comme solution de secours.
  • Prix dérivé du pool pour les mints de queue longue sans couverture d’oracle externe.
Les affichages en USD sont strictement cosmétiques — les opérations on-chain ne lisent jamais Pyth, et aucune mathématique de pool n’utilise l’USD. Si Pyth cesse de fournir des données pour un mint, l’interface affiche « — » ; le pool continue de fonctionner.

La manipulation d’oracle ne s’applique pas aux pools Raydium

Parce que l’état du pool est l’oracle, il n’y a pas d’« attaque d’oracle » au sens que la littérature des bug-bounty signifie — aucune source de données externe manipulable que l’attaquant peut corrompre. Les attaques économiques sur l’état du pool (manipulation de style flash-loan) sont couvertes dans security/attack-vectors.

Risques des extensions Token-2022

SPL Token-2022 (alias « Token Extensions ») ajoute un comportement configurable aux mints via des extensions. Certaines extensions changent les propriétés de confiance des pools qui les incluent. Les programmes Raydium en gèrent certaines automatiquement et en exposent d’autres comme avertissements utilisateur.

Frais de transfert

Ce que c’est : Un frais configurable (pourcentage du transfert, jusqu’à un plafond maximum_fee en termes absolus) payé par l’expéditeur à l’autorité du mint à chaque transfert. Risque : Le frais peut être modifié par l’autorité de configuration des frais du mint. Si vous déposez de la liquidité quand le frais est de 1 %, et que l’autorité l’augmente à 50 %, les swaps ultérieurs retournent beaucoup moins que prévu. Atténuation dans Raydium : Les pools lisent le transferFeeConfig actuel au moment du swap et ajustent les mathématiques. Le pool lui-même n’est pas corrompu, mais les utilisateurs voient une sortie pire. L’autorité des frais peut également programmer un changement de frais retardé ; l’interface de Raydium signale les pools avec des changements de frais imminents. Risque résiduel : Si une autorité de frais malveillante change le frais pendant votre swap en vol, votre minimumAmountOut protège le côté négatif — la tx revient. Si vous faites confiance à l’émetteur du mint, c’est bien ; sinon, ne fournissez pas de liquidité.

Hook de transfert

Ce que c’est : Un transfert invoque un programme séparé (le « hook ») pour exécuter une validation personnalisée ou des effets secondaires. Risque : Le hook peut bloquer n’importe quel transfert, y compris les transferts internes du pool lors d’un swap. Un hook modifiable peut devenir malveillant plus tard — ce qui était sûr au moment du dépôt peut devenir non-échangeable au moment du retrait. Atténuation dans Raydium : Raydium liste un ID de programme hook dans l’état du pool. Les intégrations doivent afficher l’ID du programme hook aux utilisateurs afin qu’ils puissent vérifier qu’il s’agit du programme attendu (non-modifiable, audité). Risque résiduel : Si un hook est modifiable et que son autorité devient hostile, le pool peut être gelé. Raydium ne bloque pas les pools avec des hooks de transfert, mais il les signale. Ne fournissez de liquidité à un pool avec hook de transfert que si le hook est vérifié comme sûr.

Autorité de gel

Ce que c’est : L’autorité de gel d’un mint peut geler n’importe quel compte de token détenant ce mint, empêchant tous les transferts. Risque : Une autorité de gel capable de geler le compte vault du pool arrête effectivement le pool — les utilisateurs ne peuvent pas se retirer, les traders ne peuvent pas swapper. Cela s’applique à SPL Token et Token-2022 ; ce n’est pas nouveau avec Token-2022, mais c’est toujours un risque. Atténuation dans Raydium : Aucune au niveau du programme — le gel de SPL Token est opaque pour le pool. L’interface de Raydium avertit sur les pools avec des mints gélables. Les utilisateurs qui déposent doivent vérifier que l’autorité de gel est nulle ou un multisig auquel ils font confiance (USDC a une autorité de gel ; c’est l’émetteur Circle). Risque résiduel : Acceptez que les mints gélables puissent être gelés. Les mints majeurs (USDC, USDT, USDY) ont des autorités de gel détenues par l’émetteur et utilisées uniquement pour la conformité réglementaire ; c’est généralement acceptable.

NFT de position CLMM avec autorité d’émetteur restreint

CLMM applique un contrôle supplémentaire pour les autorités de gel d’émetteur restreint KYC sélectionnées. Quand l’autorité de gel de l’un ou l’autre mint du pool correspond à la liste codée en dur du programme, les nouvelles positions ouvertes via OpenPositionV2 ou OpenPositionWithToken22Nft ont leur compte de token NFT gelé immédiatement. Le PDA du pool correspondant est l’autorité de gel du mint du NFT de position. Cela empêche la position d’être transférée à un portefeuille non approuvé ou de changer le propriétaire de son compte de token. Cela ne donne pas à l’émetteur du token sous-jacent le contrôle du NFT de position : seul le PDA du pool CLMM est l’autorité de gel du NFT de position, et le programme l’utilise pour dégeler uniquement dans le cadre de ClosePosition avant la combustion. La gestion de la liquidité et la collecte des frais ou récompenses continuent de nécessiter le propriétaire du NFT. Les positions existantes restent dégelées. Les intégrateurs doivent traiter la transférabilité comme un état spécifique à la position et lire le drapeau isFrozen du compte de token NFT.

Délégué permanent

Ce que c’est : Une extension Token-2022 qui désigne un délégué permanent qui peut transférer des tokens de n’importe quel détenteur sans approbation. Risque : Le délégué permanent peut vider le vault du pool à tout moment. Atténuation dans Raydium : CPMM et CLMM refusent de créer des pools avec des mints qui ont un délégué permanent. L’initialisation revient. Aucun pool Raydium en cours d’exécution n’a de mint avec délégué permanent. Risque résiduel : Zéro (tant que la vérification est correcte, ce que les deux audits ont vérifié).

Non-transférable

Ce que c’est : Les mints qui ne peuvent pas être transférés par les détenteurs. Risque : Les pools dépendent de la transférabilité pour déplacer les tokens entre les ATA utilisateur et les vaults du pool. Les mints non-transférables cassent trivialement les pools. Atténuation dans Raydium : La création de pool revient sur les mints non-transférables. Les fermes refusent également les mints de staking non-transférables.

Gel par défaut / autorité de fermeture / portant intérêt

Extensions d’impact inférieur gérées par Raydium :
  • Gel par défaut : les nouveaux comptes de token doivent être dégelés avant utilisation. Raydium gère cela de manière transparente lors de la création d’ATA.
  • Autorité de fermeture : une autorité désignée peut fermer les comptes de token. Les vaults du pool sont possédés par l’autorité dérivée du programme du pool, donc l’autorité de fermeture sur le mint ne s’applique pas au vault.
  • Portant intérêt : le solde affiché accumule des intérêts ; amount reste fixe mais uiAmount augmente. Les mathématiques du pool Raydium utilisent amount, pas les intérêts accumulés ; l’affichage s’ajuste séparément.

Autorité de mint

Pas un risque spécifique à Token-2022, mais à noter : si un mint conserve l’autorité de mint, le détenteur peut gonfler l’offre à volonté. Pour les tokens lancés, cela dilue les LP au prix actuel du pool. LaunchLab refuse de créer des lancements à moins que l’autorité de mint soit nulle.

Étiquettes de risque dans l’interface

L’interface de Raydium étiquette chaque pool avec les tags de risque applicables :
  • TRANSFER_FEE — frais de transfert non nul.
  • TRANSFER_HOOK — extension hook de transfert active.
  • FREEZE — le mint a une autorité de gel.
  • MINT — le mint a une autorité de mint (l’offre peut gonfler).
  • CLOSE — le mint a une autorité de fermeture.
Les agrégateurs consommant l’API de Raydium doivent afficher ces étiquettes aux utilisateurs.

Liste de contrôle pour les intégrateurs

Avant de composer avec un pool Raydium :
  • Vérifiez les extensions de chaque mint via getMint(mint, TOKEN_2022_PROGRAM_ID).
  • Ignorez les pools où un mint a permanent_delegate ou non_transferable (ceux-ci ne devraient pas exister dans Raydium, mais défense en profondeur).
  • Vérifiez l’autorité de gel pour les deux mints ; nulle ou autorité de confiance uniquement.
  • Avant d’offrir le transfert de position, l’escrow ou Burn & Earn, confirmez que le compte de token NFT de position CLMM n’est pas gelé.
  • Pour les pools avec hook de transfert, vérifiez l’ID du programme hook par rapport à une liste blanche.
  • Dimensionnez l’exposition par rapport aux scénarios de frais de transfert (que se passe-t-il si le frais atteint le maximum ?).
  • Utilisez CLMM TWAP (ObservationState) plutôt que le prix spot pour la tarification des dérivés.

Déclaration d’acceptation du risque résiduel

Les programmes de Raydium appliquent ce qui peut être appliqué au niveau du programme :
  • La création de pool refuse les mints avec délégué permanent / non-transférable.
  • Les mathématiques de swap s’ajustent correctement pour les frais de transfert actuels.
  • ObservationState fournit un oracle résistant à la manipulation.
Les risques résiduels que les utilisateurs doivent accepter :
  • L’autorité de gel d’un mint peut geler le pool.
  • L’autorité des frais d’un mint peut augmenter les frais de transfert (jusqu’au plafond maximum_fee) à tout moment.
  • Un programme hook de transfert peut être mis à niveau vers du code malveillant.
  • Le taux d’accumulation d’un mint portant intérêt peut être modifié.
La bonne défense est la diligence raisonnable avant de fournir de la liquidité : ne déposez pas dans les pools avec des mints qui ont des autorités concentrées auxquelles vous ne faites pas confiance. Raydium ne peut pas décider cette confiance pour vous ; il ne peut que présenter les faits pertinents.

Pointeurs

Sources :