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

# Direcciones de programas

> IDs de programas canónicos de Raydium y PDAs compartidas en Solana mainnet-beta y devnet. Todas las demás páginas enlazan aquí en lugar de codificar direcciones.

<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 →](/reference/program-addresses)
</Info>

<Info>
  **Fuente de verdad.** Esta página es el único lugar de la documentación que enumera direcciones de programas de manera literal. Otras páginas enlazan aquí. Si una ID cambia, actualízala **solo aquí** y cada referencia en el sitio se mantendrá consistente.

  Siempre coteja los valores con la API en directo (`https://api-v3.raydium.io/main/info`) antes de firmar transacciones reales.
</Info>

## Mainnet-beta

<Tip>
  Regla práctica: si una ID de programa en la naturaleza no coincide con la tabla a continuación, **no firmes la transacción.** Una ID de programa que no coincida es la forma más fácil de perder fondos en Solana.
</Tip>

### Programas en cadena

| Programa                                         | ID del programa                                | Fuente                                                           |
| ------------------------------------------------ | ---------------------------------------------- | ---------------------------------------------------------------- |
| **AMM v4** (AMM híbrido + OpenBook)              | `675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8` | [raydium-amm](https://github.com/raydium-io/raydium-amm)         |
| **CPMM** (AMM estándar)                          | `CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C` | [raydium-cp-swap](https://github.com/raydium-io/raydium-cp-swap) |
| **CLMM** (Liquidez concentrada)                  | `CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK` | [raydium-clmm](https://github.com/raydium-io/raydium-clmm)       |
| **Stable AMM** (curva de tipo StableSwap)        | `5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h` | fuente no disponible públicamente                                |
| **Farm v3** (staking RAY heredado)               | `EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q` | fuente no disponible públicamente                                |
| **Farm v5** (granjas de ecosistema heredadas)    | `9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z` | fuente no disponible públicamente                                |
| **Farm v6** (granjas de ecosistema actuales)     | `FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG` | fuente no disponible públicamente                                |
| **LaunchLab**                                    | `LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj`  | fuente no disponible públicamente                                |
| **AMM Routing** (enrutador en cadena de Raydium) | `routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS`  | fuente no disponible públicamente                                |
| **Burn & Earn / LP Lock**                        | `LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE`  | fuente no disponible públicamente                                |

Notas:

* AMM v4 y Farm v3/v5 se **retienen para grupos de posiciones existentes.** La interfaz de usuario y SDK de Raydium enrutan la creación de nuevos grupos y nuevas granjas de ecosistema a CPMM, CLMM y Farm v6 respectivamente — ver [`protocol-overview/versions-and-migration`](/es/protocol-overview/versions-and-migration).
* La ID de Farm v3 anterior también funciona como el programa de staking de activo único \$RAY. El comportamiento es idéntico a Farm v3 para staking de LP.
* **Stable AMM** es un programa separado que el programa de enrutamiento de AMM puede dirigirse junto con AMM v4, CPMM y CLMM. La liquidez es más delgada en comparación con los otros tres programas y el SDK no expone una API de primera clase para ella; los integradores que enrutan a través de ella generalmente lo hacen a través del enrutador.
* **Disponibilidad de código fuente.** De los programas en cadena anteriores, solo `raydium-amm` (AMM v4), `raydium-cp-swap` (CPMM) y `raydium-clmm` (CLMM) se envían con repositorios de código fuente públicos bajo [`github.com/raydium-io`](https://github.com/raydium-io). Stable AMM, LaunchLab, AMM Routing, Burn & Earn / LP Lock y los programas de Farm no están disponibles públicamente — verifica contra la API en directo, el bytecode en cadena y los IDLs publicados en [`raydium-io/raydium-idl`](https://github.com/raydium-io/raydium-idl) en su lugar.

### Autoridad de administrador compartida

Todos los programas basados en Anchor (CLMM, CPMM, LaunchLab, Lock) comparten una única `Pubkey` de administrador codificada para el control de acceso a nivel de instrucción en rutas de administrador (como `CreateAmmConfig` o `UpdatePoolStatus`):

| Clúster      | Administrador                                  |
| ------------ | ---------------------------------------------- |
| mainnet-beta | `GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ` |
| devnet       | `DRayqG9RXYi8WHgWEmRQGrUWRWbhjYWYkCRJDd6JBBak` |

Las autoridades operacionales a nivel de cuenta (p. ej. `protocol_owner`, `fund_owner` en `AmmConfig` de CPMM/CLMM, o las billeteras de migración en `GlobalConfig` de LaunchLab) se almacenan en cadena y pueden diferir del administrador del programa. Léelas directamente desde la cuenta de configuración relevante antes de enviar transacciones de alto riesgo.

### Configuración compartida / convenciones de PDA

Varios programas de Raydium exponen **cuentas de configuración** cuyas claves públicas son estables y se enumeran en la API pública. Prefiere búsquedas de API sobre codificación:

```
# Configuraciones de tarifas CPMM (devuelve un array de {id, index, tradeFeeRate, ...})
GET https://api-v3.raydium.io/main/cpmm-config

# Configuraciones de tarifas CLMM
GET https://api-v3.raydium.io/main/clmm-config
```

Parámetros de tarifa de `AmmConfig` predeterminada de CPMM con índice `0` (grupo estándar de 0,25%), para referencia:

| Campo               | Valor    | Significado                                                            |
| ------------------- | -------- | ---------------------------------------------------------------------- |
| `trade_fee_rate`    | `2500`   | 0,25% del volumen de transacciones                                     |
| `protocol_fee_rate` | `120000` | 12% **de la tarifa de transacción** (no volumen) enrutada al protocolo |
| `fund_fee_rate`     | `40000`  | 4% **de la tarifa de transacción** enrutada a la multisig de fondos    |
| `creator_fee_rate`  | `500`    | 0,05% del volumen de transacciones al creador del grupo (opcional)     |

Ver [`products/cpmm/fees`](/es/products/cpmm/fees) para cómo se componen los dividendos, y [`reference/fee-comparison`](/es/reference/fee-comparison) para la matriz entre productos.

### Semillas PDA

Las semillas a continuación son **canónicas** y son utilizadas tanto por el SDK como por CPIs en cadena. Siempre calcula PDAs; no codifiques direcciones derivadas.

```ts theme={null}
// CPMM — todas las semillas son cadenas ASCII estáticas a menos que se indique lo contrario.
const [ammConfig]   = PublicKey.findProgramAddressSync(
  [Buffer.from("amm_config"), u16ToBytes(index)],
  CPMM_PROGRAM_ID,
);
const [authority]   = PublicKey.findProgramAddressSync(
  [Buffer.from("vault_and_lp_mint_auth_seed")],
  CPMM_PROGRAM_ID,
);
const [poolState]   = PublicKey.findProgramAddressSync(
  [Buffer.from("pool"), ammConfig.toBuffer(), token0Mint.toBuffer(), token1Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [lpMint]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_lp_mint"), poolState.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [vault0]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), token0Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [vault1]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), token1Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [observation] = PublicKey.findProgramAddressSync(
  [Buffer.from("observation"), poolState.toBuffer()],
  CPMM_PROGRAM_ID,
);
```

`token0Mint` / `token1Mint` están **ordenadas por orden de bytes de clave pública** (token0 \< token1) antes de hacer hash. Hacerlo incorrectamente produce un PDA válido para un grupo que no existe.

Las semillas CLMM equivalentes siguen el mismo estilo; ver [`products/clmm/accounts`](/es/products/clmm/accounts).

## Devnet

| Programa                  | ID del programa                                                                                                                                 |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **AMM v4**                | `DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav`                                                                                                  |
| **CPMM**                  | `DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb`                                                                                                  |
| **CLMM**                  | `DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH`                                                                                                  |
| **Stable AMM**            | `DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m`                                                                                                  |
| **LaunchLab**             | `DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6`                                                                                                  |
| **AMM Routing**           | `DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd`                                                                                                  |
| **Burn & Earn / LP Lock** | `DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC`                                                                                                  |
| **Farm v3 / v5 / v6**     | No se publica de manera fiable en devnet — confirma a través de la API en directo (`https://api-v3-devnet.raydium.io/main/info`) antes de usar. |

API REST de Devnet base: `https://api-v3-devnet.raydium.io/` (misma forma de ruta que mainnet).

## Cómo verificar una dirección en cadena

1. **Explorador de Solana.** Pega la dirección en [explorer.solana.com](https://explorer.solana.com) y confirma que está marcada como `Program` con una autoridad de actualización actual. Mainnet-beta debe mostrar implementaciones firmadas por la autoridad de actualización de Raydium.
2. **CLI.** Usa `solana program show <PROGRAM_ID> -u mainnet-beta` para inspeccionar el slot de implementación, cargador BPF, autoridad de actualización y longitud de datos. Registra esto en tu runbook.
3. **Adjunto de IDL.** Consulta el IDL en cadena con `anchor idl fetch <PROGRAM_ID> --provider.cluster mainnet`. El campo `address` del IDL debe coincidir. Los mismos IDLs se replican en [github.com/raydium-io/raydium-idl](https://github.com/raydium-io/raydium-idl) — compara el IDL en cadena con el repositorio antes de confiar en él.
4. **Autoridades de configuración/administrador.** Para cuentas de configuración CPMM/CLMM, lee el campo `owner`/`protocol_owner` y confirma que coincide con la multisig actual de Raydium publicada en [`security/admin-and-multisig`](/es/security/admin-and-multisig).

Si cualquiera de las cuatro comprobaciones anteriores no está de acuerdo con esta página, trata esta página como incorrecta y abre un problema antes de escribir código nuevo contra las direcciones.

## Actualizar esta página

* Los cambios en IDs de programas son críticos para la seguridad. **No** envíes un cambio de ID de programa sin (a) enlazar al anuncio de Raydium, (b) añadir una entrada en [`reference/changelog`](/es/reference/changelog), y (c) ejecutar una verificación de enlaces sobre la documentación para confirmar que ninguna página aún hace referencia al valor anterior.
* Las deprecaciones permanecen en la tabla con una nota de estado en lugar de ser eliminadas — los grupos existentes aún se resuelven a través del programa anterior.

Fuentes:

* API en directo: `https://api-v3.raydium.io/main/info`
* [github.com/raydium-io/raydium-idl](https://github.com/raydium-io/raydium-idl)
* [github.com/raydium-io/raydium-cp-swap](https://github.com/raydium-io/raydium-cp-swap)
