> ## 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-Übersicht

> Was das AMM-Routing-Programm tut, warum es als separates Programm existiert und wann Sie es statt Client-seitiger Instruction-Verkettung verwenden sollten.

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

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

## Eine-Absatz-Zusammenfassung

Das AMM-Routing-Programm fasst Multi-Hop-Swaps in einer einzigen On-Chain-Transaktion zusammen, die Liquidität über mehrere Pools verteilt. Sie geben eine Route an (eine Liste von Pools und Zwischen-Mints) und eine Instruction mit Slippage-Parametern an; der Router führt dann alle N Hops nacheinander aus und leitet die Ausgabe eines Pools in die Eingabe des nächsten weiter. Für die Preisberechnung ist keine separate On-Chain-Router-Logik erforderlich – jeder Hop handhabt seine Gebühren und Kurve über sein eigenes Pool-Programm mittels CPI – aber der Router orchestriert die Account-Übergabe und Token-Bewegung.

## Warum ein separates Router-Programm?

Raydium-Clients und Aggregatoren können Multi-Hop-Swaps jederzeit clientseitig ohne den Router verketten: bauen Sie N Swap-Instructions (eine pro Pool) und reichen Sie sie in einer einzigen Transaktion ein. Warum dann ein dediziertes Router-Programm?

### Gründe für die Nutzung des Routers

1. **CPI von anderen Programmen.** Wenn Ihr eigenes Programm einen Route als Teil einer größeren Transaktion aufrufen muss (z. B. ein Liquiditäts-Manager, der Gebühren in ein Ziel-Token tauscht), ist ein CPI in den Router sauberer, als N untergeordnete CPIs zu bündeln und alle ihre Accounts in Ihrem Contract zu verwalten.

2. **Atomarer Account-Status.** Die Account-Liste jedes Hops wird in einem einzigen Instruction-Kontext validiert. Wenn der Status eines Zwischen-Pools beschädigt ist oder eine Limit-Price-Assertion fehlschlägt, schlägt die gesamte Route atomar fehl, ohne dass es zu Teilausführungen kommt.

3. **Einzelne Instruction-Komposition.** SDKs und Frontends können eine Multi-Hop-Route als einen logischen Vorgang darstellen, nicht als N separate Instructions, die zufällig aufeinander folgen.

### Client-seitige Verkettung bleibt die Standardmethode

Für die meisten Anwendungen ist es einfacher, separate `Swap`-Instructions für jeden Pool zu erstellen und sie nacheinander einzureichen – und ist gleichermaßen gültig. Der Raydium SDK's `Trade.makeSwapTransaction` und ähnliche Flows arbeiten für die meisten Routes genau so.

Der Router ist eine Alternative, keine Ersetzung. Verwenden Sie ihn, wenn:

* Sie ein Programm implementieren, das Routing als Teil einer größeren atomaren Operation benötigt.
* Sie einen Aggregator bauen, der eine einzelne „Sende diese Route"-Operation möchte.

## Wie es funktioniert

Eine Router-Instruction enthält:

* **Swap-Argumente**: exakte Eingabe (`amount_in`, `minimum_amount_out`) oder exakte Ausgabe (`maximum_amount_in`, `amount_out`).
* **Route-Spezifikation**: eine Liste von `program_id` + Kinder-Programm-Accounts für jeden Hop, in der richtigen Reihenfolge. Der Router liest den ersten Account in jeder Hop-Gruppe, um zu bestimmen, welches Programm aufgerufen werden soll.
* **Limit-Preise** (für CLMM): eine `VecDeque<u128>` von `sqrt_price_x64`-Grenzen. Wird nur für Hops in CLMM-Pools verwendet; eine leere Deque ist ein Fehler für ältere Instruction-Varianten.

Der Router führt dann aus:

1. **Führt den ersten Hop aus:** überweist `amount_in` (oder berechnet die erforderliche Eingabe für exakte Ausgabe) in den Input-Vault des ersten Pools, ruft den Swap dieses Pools auf und sammelt die Ausgabe ein.
2. **Verkettung nachfolgender Hops:** für jeden Hop N wird die Ausgabe von Hop N−1 als Eingabe für Hop N verwendet.
3. **Erzwingt Slippage-Schutz:** bei jedem CLMM-Hop wird `sqrt_price` gegen den entsprechenden `limit_price` geprüft; beim finalen Hop wird die Gesamtausgabe gegen die globale `minimum_amount_out` geprüft.

Zwischen-Tokens können entweder über **benutzergesteuerte ATAs** (eine pro Hop, langsamer aber transparent) oder über ein **gemeinsames PDA-abgeleitetes Account** (eine Adresse für alle Hops, schneller, opak) fließen.

## Delegation von Preisen und Gebühren

Der Router **berechnet keine Preise selbst**. Jeder Hop delegiert an die Kurve des Kinder-Programms:

* **AMM v4**: verwendet die Constant-Product-Formel mit OpenBook-Hybrid-Preisen.
* **CPMM**: verwendet die Constant-Product-Formel mit dem konfigurierten Gebührensatz.
* **CLMM**: verwendet die Concentrated-Liquidity-Mathematik mit Tick-basierten Preisen.
* **Stable**: verwendet die Stable-Swap-Kurve für ähnliche Token.

Gebühren werden von jedem Pool nach seiner eigenen Konfiguration erhoben. Der Router selbst erhebt keine Gebühr.

## Wann Sie den Router vermeiden sollten

* **Geringe Hop-Anzahl (1–2 Hops).** Der Account-Weitergabe-Overhead ist minimal; verwenden Sie einfach zwei separate Swap-Instructions.
* **Nicht-Raydium-Pools.** Der Router kennt nur die vier Raydium-Pool-Typen. Für Routes, die externe Programme kreuzen, verketten Sie Instructions in Ihrem Client.
* **Bedingte Routing.** Wenn Sie während der Route auf Basis von Preisen oder Pool-Status verzweigen müssen, ist On-Chain-Routing weniger flexibel als Client-seitige Komposition.

## Mentales Modell

Denken Sie des Routers als ein **Transaction-Packing-Utility**. Es nimmt Ihre Route-Spezifikation und packt sie in eine Instruction, eine Transaktion, ein Compute-Budget. Jeder Hop ruft intern sein Pool-Programm via CPI auf und behandelt die Kurven-Mathematik dort. Die Aufgabe des Routers ist es, Accounts korrekt zu übergeben, Tokens zwischen Hops zu verschieben und Slippage zu überprüfen.

## Nächste Schritte

* [`products/routing/accounts`](/de/products/routing/accounts) – das Route-Authority-PDA und das Shared-Account-Muster.
* [`products/routing/instructions`](/de/products/routing/instructions) – die vollständige Instruction-API (alle 10 Varianten).
* [`products/routing/code-demos`](/de/products/routing/code-demos) – Beispiele für das Erstellen von Routes in TypeScript und reinem Rust.
* [`integration-guides/routing-and-mev`](/de/integration-guides/routing-and-mev) – breitere Strategie für Multi-Hop-Routing.
