Passer au contenu principal

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 →

Disposition des comptes : ATAs utilisateur d’un bout à l’autre

Chaque variante de swap activée route les tokens intermédiaires via des ATAs contrôlés par l’utilisateur. L’utilisateur possède l’ATA d’entrée, chaque ATA intermédiaire et l’ATA de sortie final. Il n’existe pas de compte de token intermédiaire partagé / appartenant au routeur dans la surface active. Propriétés :
  • L’utilisateur possède un ATA par token intermédiaire.
  • L’utilisateur fournit chaque ATA dans la liste de comptes.
  • Chaque ATA intermédiaire doit déjà exister (initialisez-le avec CreateSyncNative pour wSOL, ou via le programme SPL Associated Token Account pour tout autre mint, avant le routage).
  • Le routeur transfère depuis un ATA et vers le vault du prochain pool à chaque étape.
  • Chaque ATA intermédiaire se termine avec le même solde qu’il a commencé — la route consomme ce que l’étape précédente a produit.
Exemple de flux pour la route USDC → SOL → STEP :
Accounts list:
  [
    USDC_input_ata (user, signer),
    SOL_intermediate_ata (user),
    STEP_output_ata (user),
    token_program,

    amm_program_1, *amm1_accounts,    // hop 1: USDC → SOL
    amm_program_2, *amm2_accounts,    // hop 2: SOL → STEP
  ]

Hop 1: USDC_input_ata → AMM1 → SOL_intermediate_ata
Hop 2: SOL_intermediate_ata → AMM2 → STEP_output_ata

Disposition des comptes par étape

Les comptes de chaque étape sont passés consécutivement. Le routeur identifie le programme enfant en lisant le premier compte de chaque bloc d’étape (l’ID du programme), puis envoie vers le bon gestionnaire. Pour chaque étape, le routeur s’attend à ce que les comptes soient groupés comme :
[
  program_id,         // Identifies which pool program (AMM v4, CPMM, CLMM, Stable)
  *child_accounts,    // All accounts required by that pool's swap instruction
]
Les comptes enfants varient selon le type de pool :

Étape AMM v4

Environ 18 comptes : pool, autorité, vaults, mints, comptes du marché OpenBook (conservés dans la liste des comptes pour la compatibilité ascendante bien que l’intégration OpenBook d’AMM v4 ne soit plus active), programmes de token. Voir products/amm-v4/accounts pour la liste complète.

Étape CPMM

Environ 11–13 comptes : état du pool, autorité, vaults (2), mints (2), programmes de token, programme système, programme de token account associé. Voir products/cpmm/accounts.

Étape CLMM

Environ 15+ comptes : pool, tableaux de tick, vaults, mints, état d’observation, signataire, programmes de token. Voir products/clmm/accounts.

Étape Stable

Similaire à AMM v4. Voir products/stable/accounts.

Flux de token et propriété des ATAs

  • L’appelant signe avec user_input_ata.
  • L’appelant doit posséder tous les ATAs d’entrée, intermédiaires et de sortie. Le routeur rejettera la transaction si le propriétaire d’un ATA intermédiaire n’est pas le signataire.
  • Le solde de user_input_ata de l’appelant doit être suffisant pour l’entrée de la première étape (amount_in pour le tag 0 / 8, ou maximum_amount_in pour le tag 1 / 9).
  • Chaque ATA intermédiaire doit déjà exister on-chain. S’il n’existe pas, créez-le à l’avance — généralement via le programme SPL Associated Token Account, ou avec CreateSyncNative (tag 5) pour un ATA wSOL.

L’instruction CreateSyncNative

Si vous devez router via du SOL enrobé et ne voulez pas créer et synchroniser manuellement un ATA wSOL, utilisez CreateSyncNative (tag 5) :
CreateSyncNative(amount)
Cela crée un ATA wSOL sous le portefeuille de l’appelant, transfère amount de SOL dedans via le programme Système, et le synchronise en une seule instruction. Utile pour initialiser un nouvel ATA wSOL avant le routage.

L’instruction CloseTokenAccount

Une fois qu’une route est terminée, vous souhaiterez peut-être fermer un ATA intermédiaire — le plus souvent un ATA wSOL — pour récupérer la rente. Utilisez CloseTokenAccount (tag 6) :
CloseTokenAccount
Le compte de token doit avoir un solde de token zéro avant la fermeture ; le routeur ne le vidangera pas automatiquement pour vous.

Étapes suivantes