Passer au contenu principal
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →

Informations de version

  • SDK : @raydium-io/raydium-sdk-v2@0.2.42-alpha
  • Réseau : mainnet-beta
  • ID du programme routeur : routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS
  • Vérifié : avril 2026

Exemple 1 : routage basé sur le SDK

Source : src/trade/routeSwap.ts Le SDK Raydium abstrait la construction des routes. Utilisez les fonctions de trading du SDK pour composer une route multi-hop et l’exécuter via le routeur automatiquement.

Configuration

Construire un swap multi-hop

Le routage dans @raydium-io/raydium-sdk-v2 est exposé sur raydium.tradeV2. La forme end-to-end — récupération des données de pool, calcul des routes, classement par rendement et création de la transaction de swap — est présentée ci-dessous ; cela correspond à l’exemple canonique dans raydium-sdk-V2-demo/src/trade/routeSwap.ts.

Comportement attendu

Le SDK gère :
  • la découverte des routes sur AMM v4, CPMM, CLMM et Stable AMM ;
  • la dérivation des comptes (états de pool, vaults, comptes d’observation, pré-création des ATA) ;
  • l’empaquetage des instructions pour le programme routeur (Router) quand la route est multi-hop, ou un swap direct de pool quand un seul pool donne déjà le meilleur prix ;
  • l’application du slippage via le paramètre slippage sur getAllRouteComputeAmountOut.
raydium.tradeV2.swap peut retourner plus d’une transaction — la première initialise généralement les ATA intermédiaires et la seconde effectue le swap lui-même. Passez toujours sequentially: true à execute() pour qu’elles se confirment dans l’ordre.

Exemple 2 : construction brute d’instructions (pseudocode style Rust)

Si vous avez besoin d’un contrôle plus fin ou si vous construisez un programme qui effectue un CPI vers le routeur, construisez les instructions manuellement. L’exemple ci-dessous utilise le tag 8 (SwapBaseIn) — la variante Current recommandée — et route via des ATA appartenant à l’utilisateur de bout en bout.

Scénario : USDC → SOL (CPMM) → mSOL (CPMM)

Étape 1 : Dériver les ATA de l’utilisateur

Étape 2 : Collecter les comptes pour chaque hop

Le hop 1 est USDC/SOL sur CPMM. Le hop 2 est SOL/mSOL sur CPMM.

Étape 3 : Construire l’instruction

Étape 4 : Envoyer la transaction


Exemple 3 : gestion des erreurs

Les erreurs courantes et comment les résoudre :

ExceededSlippage

Le rendement était inférieur à minimum_amount_out. Réessayez avec une tolérance de slippage plus élevée ou re-cotez la route.

SqrtPriceX64 (CLMM)

Le prix d’un hop CLMM a dérivé en dehors des limites limit_prices. Mettez à jour les limites et réessayez.

InvalidOwner

Un ATA intermédiaire ou de sortie n’est pas possédé par l’appelant. Le routeur valide la propriété à chaque slot ; assurez-vous que chaque ATA que vous passez a été dérivé du portefeuille de l’utilisateur (et non d’une autre autorité).

Conseils et meilleures pratiques

Pré-créer les ATA intermédiaires

Avant de router pour la première fois via un nouveau jeton intermédiaire, créez l’ATA de l’utilisateur pour que la route ne échoue pas à la validation :
Pour wSOL en particulier, préférez CreateSyncNative (tag 5) — il crée l’ATA, transfère le SOL et synchronise en une seule instruction.

Quoter avant d’exécuter

Interrogez toujours les pools et calculez le rendement attendu avant de construire l’instruction :

Utiliser les variantes d’instruction plus récentes (8–9)

Les tags 8 et 9 (SwapBaseIn et SwapBaseOut) sont plus tolérants avec limit_prices. Préférez-les aux variantes héritées si vous n’avez pas besoin de validation de prix CLMM.

Prochaines étapes

Sources :