> ## 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.

# Routing-Konten

> Wie Konten pro Hop im AMM-Routing-Programm übergeben werden: Benutzer-ATAs für jeden Zwischentoken, dann der Pool-Kontoblöcke für jeden Leg der Route.

<Info>
  **Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.**

  [Englische Version ansehen →](/products/routing/accounts)
</Info>

## 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`](/de/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`](/de/products/cpmm/accounts).

### CLMM Hop

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

### Stable Hop

Ähnlich wie AMM v4. Siehe [`products/stable/accounts`](/de/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](https://spl.solana.com/associated-token-account) 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`](/de/products/routing/instructions#createsyncnative-tag-5) (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`](/de/products/routing/instructions#closetokenaccount-tag-6) (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

* [`products/routing/instructions`](/de/products/routing/instructions) – Argumentformen und Kontenlistenreihenfolge pro Anweisung.
* [`products/routing/code-demos`](/de/products/routing/code-demos) – Eine Route in TypeScript erstellen.
* [`reference/program-addresses`](/de/reference/program-addresses) – Untergeordnete Programm-IDs.
