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

# Enrutamiento de AMM

> Un programa que encadena intercambios entre múltiples pools (AMM v4, CPMM, CLMM, Stable) en una única transacción, con ATAs intermedias controladas por el usuario.

<Info>
  **Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.**

  [Ver versión en inglés →](/products/routing/index)
</Info>

## Qué es

El programa de Enrutamiento de AMM es un enrutador CPI que ejecuta intercambios multisalto entre los pools de AMM de Raydium en una única transacción en cadena. En lugar de empaquetar N CPIs de programas secundarios en tu código cliente, puedes invocar el enrutador una sola vez y pasar la ruta como una lista de cuentas. El enrutador envía cada salto al programa de pool correcto (AMM v4, CPMM, CLMM o Stable) y encadena la salida de un salto como entrada para el siguiente.

**ID del programa:** consulta [`reference/program-addresses`](/es/reference/program-addresses).

**Devnet:** `DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd`.

**Modelo de cuentas:** cada flujo de token intermedio pasa a través de una **ATA propiedad del usuario**. El usuario firma con su ATA de entrada y proporciona cada ATA intermedia en la lista de cuentas. Los puntos de entrada de intercambio recomendados son etiqueta 8 (`SwapBaseIn`) y etiqueta 9 (`SwapBaseOut`), que aceptan una deque `limit_prices` vacía cuando no hay un salto CLMM involucrado.

## Contenido del capítulo

<CardGroup cols={2}>
  <Card title="Descripción general" icon="circle-info" href="/es/products/routing/overview">
    Qué hace el enrutador, por qué existe y cuándo debes usarlo en comparación con el stitching del lado del cliente.
  </Card>

  <Card title="Cuentas" icon="database" href="/es/products/routing/accounts">
    Diseño de ATA de usuario, bloque de cuentas por salto y cómo el enrutador envía leyendo el slot del ID del programa.
  </Card>

  <Card title="Matemáticas" icon="function" href="/es/products/routing/math">
    El enrutador no realiza matemáticas. Cada salto calcula el precio según su propia curva. El deslizamiento se compone entre saltos; `limit_prices` para CLMM.
  </Card>

  <Card title="Instrucciones" icon="terminal" href="/es/products/routing/instructions">
    Referencia para las seis variantes de instrucción habilitadas: intercambios entrada exacta / salida exacta Actual (8 / 9) e Heredado (0 / 1), más las utilidades wSOL (5 / 6).
  </Card>

  <Card title="Tarifas" icon="percent" href="/es/products/routing/fees">
    Sin tarifa de enrutador. Cada salto paga la tarifa del programa subyacente. El costo de CU se escala linealmente con el número de saltos.
  </Card>

  <Card title="Demostraciones de código" icon="code" href="/es/products/routing/code-demos">
    Ejemplos de TypeScript usando el SDK y construcción de instrucciones sin procesar.
  </Card>
</CardGroup>

## Cuándo leer esto

* Necesitas ejecutar una ruta con 2 o más saltos en una única transacción.
* Estás implementando un programa que hace CPI en el enrutador.
* Eres un agregador decidiendo entre stitching del lado del cliente y enrutamiento en cadena.

## A dónde ir a continuación

* [`products/routing/overview`](/es/products/routing/overview) — el diseño y la motivación.
* [`products/routing/instructions`](/es/products/routing/instructions) — la referencia completa de instrucciones.
* [`integration-guides/routing-and-mev`](/es/integration-guides/routing-and-mev) — estrategia de enrutamiento más amplia.
* [`integration-guides/aggregator`](/es/integration-guides/aggregator) — cuándo usar el enrutador en un contexto de agregador.

Fuentes:

* [`reference/program-addresses`](/es/reference/program-addresses) para el ID de programa canónico
* `raydium-io/raydium-programs/raydium-route` para el código fuente
