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 →
Les portefeuilles intégrant Raydium doivent généralement répondre à quatre questions par utilisateur : dans quels pools cet utilisateur détient-il du LP ? quelles positions (NFT CLMM) détient-il ? dans quelles farms est-il engagé ? quelle est la valeur totale ? Cette page documente chaque point.
Détection des positions Raydium
Jetons LP classiques (CPMM, AMM v4)
Ils ressemblent à n’importe quel autre jeton SPL : le compte de tokens ATA de l’utilisateur détient un solde. Un portefeuille les affiche par défaut comme un jeton ordinaire. Pour les révéler comme une position Raydium LP :- Énumérez les comptes de tokens de l’utilisateur :
connection.getParsedTokenAccountsByOwner(user, { programId: TOKEN_PROGRAM_ID }). - Pour chaque mint, vérifiez la liste de mints de Raydium :
GET https://api-v3.raydium.io/pools/info/lps?lps=<LP_MINT>,...(jusqu’à ~50 mints LP par appel). - Pour les mints correspondants, l’API retourne la référence du pool. Utilisez-la pour calculer la valeur de la position en jetons :
NFT de positions CLMM
Les positions CLMM sont des NFT. LePersonalPositionState PDA de chaque position est dérivé du mint du NFT. Pour détecter :
- Énumérez les NFT de l’utilisateur. Pour les NFT Metaplex hérités : filtrez les comptes de tokens pour ceux avec une offre de 1 et 0 décimales.
- Pour chaque mint NFT, essayez de dériver le PDA PersonalPositionState :
-
Décodez via
raydium.clmm.getPositionInfo({ positionPda })pour obtenir :poolId→ récupérez le pool pour résoudre les mintstickLower,tickUpper→ affichez la plageliquidity,tokensOwedA/B→ calculez la valeur de la position + frais en attenterewardInfos→ récompenses par flux en attente
-
Pour les NFT de positions émis sous Token-2022 (
OpenPositionWithToken22Nft), le programme du mint NFT est Token-2022 plutôt que SPL Token. Énumérez les deux lors de l’analyse.
Mises en farm
Farm v3 / v5 / v6 ont chacun un PDA de registre par utilisateur. Dérivations :UserLedger possibles en hachant l’utilisateur avec une liste organisée de « probables » farm IDs. L’énumération exhaustive de tous les farm IDs est impraticable (des milliers existent) ; utilisez l’API.
Calcul de la valeur de position
LP CPMM / AMM v4
raydium.token ou un oracle de prix).
Position CLMM
- Valeur de liquidité (prix actuel)
- Frais non collectés
- Récompenses en attente par flux
- Plage :
[tickLower_price, tickUpper_price]avec une barre visuelle montrant si le prix actuel est dans la plage
Mise en farm
reward_per_share_x64 avec la formule de mise à jour lazy avant le calcul (temps écoulé × taux d’émission ÷ total_staked).
Simulation de transaction pour aperçu
Avant qu’un utilisateur signe, les portefeuilles prévisualisent généralement les changements de solde. UtilisezsimulateTransaction :
accounts demande au validateur de retourner l’état du compte après simulation pour les adresses listées. Beaucoup plus précis que d’essayer de prédire le changement de solde uniquement à partir de la forme de l’instruction.
Pièges de simulation
- Les swaps CLMM ont besoin de tableaux de tick valides. Si la taille d’entrée de l’utilisateur traverserait un tableau de tick non initialisé, la simulation revient (comme l’exécution). Surfacez cela clairement dans l’interface.
- Frais de priorité. La simulation s’exécute sans les instructions de budget de calcul appliquées. Pour une grande transaction qui dépasserait le défaut 200k CU, la simulation échoue mais l’exécution réelle avec une limite CU explicite réussit. Définissez toujours la limite CU sur la tx simulée aussi.
- Blockhash frais. La simulation utilise le blockhash actuel ; si la signature prend >60s la tx devient invalide. Re-simulez si l’utilisateur hésite.
Affichage Token-2022
Les jetons du programme Token-2022 doivent être étiquetés comme tels dans la liste de jetons du portefeuille, car ils présentent des surfaces de risque différentes :- Mints avec frais de transfert : affichez les
transferFeeBasisPointsactuels comme « Frais de transfert : X% » à côté du solde. Avertissez à la réception — les utilisateurs pourraient ne pas réaliser qu’ils recevront moins que ce que l’expéditeur a envoyé. - Mints avec transfert-hook : surfacez l’ID du programme hook. Un hook malveillant peut bloquer les transferts sortants ; les utilisateurs doivent vérifier que le hook est celui qu’ils attendent.
- Mints non transférables : affichez « Non-transférable » et désactivez swap/envoi. Il s’agit généralement de jetons soulbound ou de justificatifs d’identité.
- Mints porteurs d’intérêt : le solde de l’interface utilisateur dérivé de
TokenAccount.amountne reflète pas les intérêts courus. UtilisezamountToUiAmountde@solana/spl-token(qui applique le facteur d’échelle) pour la valeur affichée.
Affichage APR de farm
L’APR affiché aux utilisateurs doit combiner tous les flux de récompenses actifs, convertis en USD et annualisés :APR : X.Y%. Si le mint de staking est un jeton LP, calculez également l’APR des frais de base du LP sous-jacent et étiquetez la somme comme « APR total » ou « APR + frais ».
Pointeurs
products/clmm/ticks-and-positions— dérivation de valeur de position.products/farm-staking/accounts— champs d’état de farm.algorithms/token-2022-transfer-fees— sémantique d’affichage pour les jetons avec frais de transfert.
- Raydium SDK v2 — assistants position/farm.
- Points de terminaison de position d’utilisateur sur
api-v3.raydium.io.


