Zum Hauptinhalt springen

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.

Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →

Kontenaufbau: Benutzer-ATAs durchgängig

Jede aktivierte Swap-Variante leitet Zwischentokens durch vom Benutzer kontrollierte ATAs. Der Benutzer besitzt die Input-ATA, jede Zwischen-ATA und die endgültige Output-ATA. Es gibt keine gemeinsam genutzte / vom Router kontrollierte Zwischen-Token-Adresse in der aktiven Oberfläche. Eigenschaften:
  • Der Benutzer besitzt eine ATA pro Zwischentoken.
  • Der Benutzer stellt jede ATA in der Kontenliste bereit.
  • Jede Zwischen-ATA muss bereits existieren (initialisieren Sie sie mit CreateSyncNative für wSOL oder über das SPL Associated Token Account-Programm für jeden anderen Mint, bevor Sie das Routing durchführen).
  • Der Router überweist aus einer ATA und in den nächsten Pool-Vault bei jedem Hop.
  • Jede Zwischen-ATA endet bei jeder Route mit dem gleichen Saldo, mit dem sie begonnen hat – die Route verbraucht das, was der vorherige Hop produziert hat.
Beispielablauf für 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

Kontenaufbau pro Hop

Die Konten jedes Hops werden nacheinander übergeben. Der Router identifiziert das untergeordnete Programm, indem er das erste Konto in jedem Hop-Block liest (die Programm-ID), und leitet dann zum korrekten Handler weiter. Für jeden Hop erwartet der Router Konten, die wie folgt gruppiert sind:
[
  program_id,         // Identifies which pool program (AMM v4, CPMM, CLMM, Stable)
  *child_accounts,    // All accounts required by that pool's swap instruction
]
Die untergeordneten Konten unterscheiden sich je nach Pool-Typ:

AMM v4 Hop

Ungefähr 18 Konten: Pool, Authority, Vaults, Mints, OpenBook Market-Konten (werden beibehalten, um Rückwärtskompatibilität zu gewährleisten, auch wenn AMM v4s OpenBook-Integration nicht mehr aktiv ist), Token-Programme. Siehe products/amm-v4/accounts für die vollständige Liste.

CPMM Hop

Ungefähr 11–13 Konten: Pool-Status, Authority, Vaults (2), Mints (2), Token-Programme, System-Programm, Associated Token-Programm. Siehe products/cpmm/accounts.

CLMM Hop

Ungefähr 15+ Konten: Pool, Tick-Arrays, Vaults, Mints, Beobachtungsstatus, Signer, Token-Programme. Siehe products/clmm/accounts.

Stable Hop

Ähnlich wie AMM v4. Siehe products/stable/accounts.

Token-Fluss und ATA-Eigentümerschaft

  • Der Aufrufer unterzeichnet mit user_input_ata.
  • Der Aufrufer muss alle Input-, Zwischen- und Output-ATAs besitzen. Der Router lehnt die Transaktion ab, wenn der Eigentümer einer Zwischen-ATA nicht der Unterzeichner ist.
  • Das Guthaben der user_input_ata des Aufrufers muss für die Input des ersten Hops ausreichen (amount_in für Tag 0 / 8 oder maximum_amount_in für Tag 1 / 9).
  • Jede Zwischen-ATA muss bereits in der Kette existieren. Falls nicht, erstellen Sie sie im Voraus – normalerweise über das SPL Associated Token Account-Programm oder mit CreateSyncNative (Tag 5) für eine wSOL-ATA.

Die CreateSyncNative-Anweisung

Falls Sie durch wrapped SOL routen möchten und keine wSOL-ATA manuell erstellen und synchronisieren möchten, verwenden Sie CreateSyncNative (Tag 5):
CreateSyncNative(amount)
Dies erstellt eine wSOL-ATA unter der Wallet des Aufrufers, überweist amount SOL über das System-Programm und synchronisiert alles in einer Anweisung. Dies ist nützlich, um eine neue wSOL-ATA vor dem Routing zu initialisieren.

Die CloseTokenAccount-Anweisung

Nach Abschluss einer Route möchten Sie möglicherweise jede Zwischen-ATA schließen – am häufigsten eine wSOL-ATA – um die Miete zurückzufordern. Verwenden Sie CloseTokenAccount (Tag 6):
CloseTokenAccount
Das Token-Konto muss vor dem Schließen einen Null-Token-Saldo haben. Der Router leert es nicht automatisch für Sie.

Nächste Schritte