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

# Cuentas de AMM v4

> El inventario completo de cuentas de un pool AMM v4 — AmmInfo, TargetOrders, OpenOrders, bóvedas, mint de LP, autoridad — más las cuentas de OpenBook a las que está vinculado el pool.

<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/amm-v4/accounts)
</Info>

<Info>
  A partir de la actualización 2026-07, la dependencia de OpenBook / Serum de AMM v4 ha sido **eliminada** — ninguna instrucción lee o escribe el estado de OpenBook. Las cuentas de mercado que se muestran a continuación se conservan solo como marcadores de posición en los diseños de instrucciones v1 heredadas (aceptadas pero ignoradas) y como campos de referencia en `AmmInfo`. Usa los puntos de entrada de intercambio V2, que las omiten completamente. Esta página aún agrupa las cuentas en secciones "propiedad del pool" y "OpenBook (heredado)" para leer transacciones antiguas.
</Info>

## Inventario

Un pool AMM v4 registra un mercado vinculado en `AmmInfo` en la creación. La imagen completa:

| Categoría           | Cuenta                               | Propietario     | Función                                                                                                                            |
| ------------------- | ------------------------------------ | --------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Pool                | `AmmInfo`                            | Programa AMM v4 | Estado del pool: comisiones acumuladas, estado, referencias a bóvedas (y, como campos heredados, el mercado).                      |
| Pool                | `amm_authority`                      | Programa AMM v4 | PDA propiedad del programa que firma movimientos de bóveda. Compartido entre todos los pools AMM v4.                               |
| Pool                | `amm_open_orders`                    | OpenBook        | Referencia heredada de `OpenOrders`. Ya no es leída/escrita por el programa; aún se pasa posicionalmente en diseños v1.            |
| Pool                | `amm_target_orders`                  | Programa AMM v4 | Cuenta de órdenes objetivo heredada. Aún referenciada por `WithdrawPnl` (como cuenta #10) pero no se construye ninguna cuadrícula. |
| Pool                | `pool_coin_token_account`            | Token SPL       | Bóveda del lado de moneda del pool (ATA de `amm_authority`).                                                                       |
| Pool                | `pool_pc_token_account`              | Token SPL       | Bóveda del lado pc del pool.                                                                                                       |
| Pool                | `lp_mint`                            | Token SPL       | Mint de LP fungible.                                                                                                               |
| Pool                | `pool_withdraw_queue`                | Programa AMM v4 | Cola heredada para retiros retrasados; mantenida con longitud cero.                                                                |
| Pool                | `pool_temp_lp`                       | Programa AMM v4 | Cuenta LP auxiliar.                                                                                                                |
| Heredado (OpenBook) | `serum_market`                       | OpenBook        | El mercado vinculado. Se pasa en diseños v1 pero ya no se valida ni se usa.                                                        |
| Heredado            | `serum_bids`, `serum_asks`           | OpenBook        | Colas de oferta/demanda. Ignoradas.                                                                                                |
| Heredado            | `serum_event_queue`                  | OpenBook        | Eventos pendientes. Ignorados.                                                                                                     |
| Heredado            | `serum_coin_vault`, `serum_pc_vault` | Token SPL       | Bóvedas a nivel de mercado. Ignoradas.                                                                                             |
| Heredado            | `serum_vault_signer`                 | OpenBook        | PDA a nivel de mercado. Ignorado.                                                                                                  |

Nota: el prefijo "serum" se mantiene en el IDL y los nombres de campos de AMM v4 por compatibilidad hacia atrás. Estas cuentas ya no son funcionales después de la eliminación de OpenBook.

## `AmmInfo`

La cuenta de estado raíz del pool. Grande (≈ 752 bytes) porque lleva referencias de pool y OpenBook en línea.

```rust theme={null}
// programs/amm/src/state.rs (abreviado; el orden de campos / nombres sigue el IDL)
pub struct AmmInfo {
    pub status: u64,           // máscara de bits: swap/depósito/retiro/crank habilitado
    pub nonce:  u64,           // bump usado para derivar amm_authority
    pub order_num: u64,
    pub depth: u64,
    pub coin_decimals: u64,
    pub pc_decimals:   u64,
    pub state:         u64,    // máquina de estado interna
    pub reset_flag:    u64,
    pub min_size:      u64,
    pub vol_max_cut_ratio: u64,
    pub amount_wave: u64,
    pub coin_lot_size: u64,    // heredado (tamaño de lote de OpenBook); ahora inicializado a 0
    pub pc_lot_size:   u64,    // heredado; ahora inicializado a 0
    pub min_price_multiplier: u64,
    pub max_price_multiplier: u64,
    pub sys_decimal_value: u64,

    pub fees: Fees,            // tasas de comisión de comercio/protocolo/fondo
    pub state_data: StateData,

    // Cuentas propiedad del pool:
    pub coin_vault: Pubkey,
    pub pc_vault:   Pubkey,
    pub coin_vault_mint: Pubkey,
    pub pc_vault_mint:   Pubkey,
    pub lp_mint:  Pubkey,
    pub open_orders: Pubkey,   // OpenOrders del pool en OpenBook
    pub market: Pubkey,        // mercado de OpenBook
    pub market_program: Pubkey, // ID del programa de OpenBook
    pub target_orders: Pubkey,
    pub withdraw_queue: Pubkey,
    pub lp_vault:       Pubkey, // = pool_temp_lp
    pub owner: Pubkey,          // administrador (multisig)
    pub lp_reserve: u64,
    pub padding: [u64; 3],
}

pub struct Fees {
    pub min_separate_numerator:   u64,     // 5
    pub min_separate_denominator: u64,     // 10_000
    pub trade_fee_numerator:      u64,     // 25  → usado por integración de OpenBook
    pub trade_fee_denominator:    u64,     // 10_000
    pub pnl_numerator:            u64,     // 12  → participación del protocolo DE la comisión de swap
    pub pnl_denominator:          u64,     // 100 → entonces 12/100 = 12% de comisión, = 0.03% de volumen
    pub swap_fee_numerator:       u64,     // 25  → comisión de swap bruta de 0.25%
    pub swap_fee_denominator:     u64,     // 10_000
}

pub struct StateData {
    pub need_take_pnl_coin: u64,        // aún actualizado — comisión de protocolo acumulada (lado de moneda)
    pub need_take_pnl_pc:   u64,        // aún actualizado — comisión de protocolo acumulada (lado pc)
    pub total_pnl_pc:   u64,            // DEPRECADO — ya no se actualiza
    pub total_pnl_coin: u64,            // DEPRECADO — ya no se actualiza
    pub pool_open_time: u64,            // aún se usa — marca de tiempo de apertura del pool
    pub padding: [u64; 2],              // reservado
    pub orderbook_to_init_time: u64,    // DEPRECADO — ya no se actualiza
    pub swap_coin_in_amount: u128,      // DEPRECADO — contadores de volumen congelados
    pub swap_pc_out_amount:  u128,      // DEPRECADO
    pub swap_acc_pc_fee:    u64,        // DEPRECADO
    pub swap_pc_in_amount:  u128,       // DEPRECADO
    pub swap_coin_out_amount: u128,     // DEPRECADO
    pub swap_acc_coin_fee:  u64,        // DEPRECADO
}
```

<Note>
  El diseño de la estructura **no ha cambiado** (compatible a nivel de bytes) por lo que los deserializadores existentes siguen funcionando, pero después de la eliminación de OpenBook los campos marcados como `DEPRECADO` arriba **ya no se escriben** — los contadores de volumen `swap_*` se congelan en su último valor. Para análisis de volumen, usa registros de transacciones en lugar de estos campos. Solo `need_take_pnl_*` y `pool_open_time` se mantienen activamente.
</Note>

Campos orientados al integrador:

* **`coin_vault`**, **`pc_vault`** — las bóvedas de Token SPL del pool. `coin` es `token_0` por convención de Serum/OpenBook (base), `pc` es `token_1` (cotización).
* **`coin_decimals`**, **`pc_decimals`** — coincidiendo con los mints.
* **`open_orders`**, **`target_orders`**, **`market`** — campos de referencia heredados. Aún presentes en `AmmInfo` y aún se pasan posicionalmente en los diseños de instrucciones v1 heredadas, pero el programa ya no los lee ni valida. Los puntos de entrada de intercambio V2 los omiten.
* **`fees.swap_fee_numerator / swap_fee_denominator`** — la comisión comercial combinada. Por defecto `25 / 10_000 = 0.25%`.
* **`status`** — máscara de bits que controla operaciones. Configurable por administrador a través de `AdminSetStatus`.
* **`state_data.need_take_pnl_*`** — delta entre comisiones acumuladas brutas y lo que se ha barrido. `TakePnl` pone estos a cero.

## El cableado de OpenBook

<Note>
  **Eliminado.** La dependencia de OpenBook / Serum ha sido eliminada del programa (actualización 2026-07). Las cuentas descritas en esta sección ya no se validan ni se usan. Permanecen como campos de referencia en `AmmInfo` y como marcadores de posición posicionales en los diseños de instrucciones v1 heredadas. Usa los **puntos de entrada de intercambio V2** ([`SwapBaseInV2` / `SwapBaseOutV2`](/es/products/amm-v4/instructions)) que omiten estas cuentas completamente.
</Note>

Cuando llamas a una instrucción heredada **v1** `SwapBaseIn` / `SwapBaseOut`, `Deposit` o `Withdraw`, el **número** de cuentas aún debe coincidir con el diseño antiguo (las cuentas de mercado ocupan sus posiciones históricas), pero su **contenido ya no se verifica** — no se emite ningún CPI contra ellas. El código nuevo debe usar las variantes de intercambio V2, que no toman estas cuentas en absoluto.

```ts theme={null}
const market = ...;  // PublicKey del mercado de OpenBook

// Campos que OpenBook expone en su cuenta de mercado:
const marketDecoded = OpenBookMarket.decode(marketAccountData);
const {
  bids:           serumBids,
  asks:           serumAsks,
  eventQueue:     serumEventQueue,
  requestQueue:   serumRequestQueue,
  baseVault:      serumCoinVault,
  quoteVault:     serumPcVault,
  vaultSignerNonce,
} = marketDecoded;

const serumVaultSigner = PublicKey.createProgramAddressSync(
  [market.toBuffer(), u64ToBytes(vaultSignerNonce)],
  OPENBOOK_PROGRAM_ID,
);
```

El `amm_open_orders` del AMM es una cuenta propiedad de OpenBook que contiene el estado de orden limitada del pool en este mercado: órdenes activas, saldos liquidados, referentes, etc. `amm_target_orders` es del lado del AMM: contiene la cuadrícula *prevista* del AMM (precio/tamaño para cada ranura de orden) para que el programa pueda comparar barato contra lo que está actualmente publicado y colocar / cancelar la diferencia.

## PDAs de autoridad

Hay exactamente un PDA `amm_authority` para todo el programa AMM v4. Su semilla es trivial (`["amm authority"]`) y su bump se almacena en cada `AmmInfo`. Esta autoridad firma todos los movimientos de tokens para todos los pools AMM v4.

```ts theme={null}
const AMM_V4_PROGRAM_ID = new PublicKey(
  "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
);
const [ammAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("amm authority")],
  AMM_V4_PROGRAM_ID,
);
```

Hay una autoridad separada **con alcance de pool** derivada por pool para firmar operaciones de OpenBook (`amm_authority` arriba en realidad cubre ambas en el diseño de este programa; versiones diferentes usaron derivaciones diferentes, así que verifica el `AmmInfo.nonce` del pool específico en el código).

## Bóvedas

Las bóvedas de Token SPL del pool son cuentas de token estándar cuyo `owner` es `amm_authority`. No ATAs — sus direcciones son PDAs específicas derivadas en `Initialize` con semillas `["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id]`. Las direcciones se almacenan en `AmmInfo`; la derivación es una curiosidad única.

Token-2022 **no** es compatible. El programa codifica el ID del programa de Token SPL para todos los movimientos de bóveda. Intentar vincular un pool AMM v4 a un mint de Token-2022 falla en `Initialize`.

## Mint de LP

Un mint clásico de Token SPL cuya autoridad es `amm_authority`. El suministro total rastrea la propiedad de LP del pool; quemar LP devuelve tokens de ambas bóvedas pro-rata. Porque AMM v4 es anterior a CPMM, no hay un espejo `lp_supply` en el estado del pool — lee el suministro en cadena del mint directamente.

## Máscara de estado

`AmmInfo.status` controla operaciones. Bits (la posición puede diferir entre versiones del programa — confirma a través de la fuente):

| Bit | Bandera             | Efecto                                                 |
| --- | ------------------- | ------------------------------------------------------ |
| 0   | `SWAP_DISABLED`     | `Swap*` rechaza.                                       |
| 1   | `DEPOSIT_DISABLED`  | `Deposit` rechaza.                                     |
| 2   | `WITHDRAW_DISABLED` | `Withdraw` rechaza.                                    |
| 3   | `CLMM_LIKE_MIGRATE` | Bandera de control de migración usada por operaciones. |

El multisig de Raydium establece estos a través de `SetParams` (con `param = Status`). (`AdminCancelOrders` ha sido eliminado.)

## Observación / oráculo

**AMM v4 no tiene una cuenta de observación dedicada.** Otros protocolos que necesitan un TWAP en cadena típicamente consumen cruces de libro de OpenBook indirectamente o leen fuera de cadena. Si necesitas un TWAP de Raydium con soporte de programa, usa CPMM o CLMM.

## Derivar las cuentas de un pool desde cero

Porque AMM v4 no fue diseñado para PDAs deterministas por par (es anterior a esa convención de Solana), el `amm_id` canónico es un **keypair con semilla** derivado con:

```
ammId = createWithSeed(
  owner: ammAuthority,
  seed:  marketPubkey.toBase58().slice(0, 32),
  programId: AMM_V4_PROGRAM_ID,
)
```

El mismo patrón de clave con semilla se aplica a `amm_open_orders`, `amm_target_orders`, `amm_withdraw_queue`, `pool_temp_lp`, `pool_coin_token_account`, `pool_pc_token_account` y `lp_mint`. El SDK y la API precomputan estos para ti; ver `raydium-sdk-v2`'s `Liquidity.getAssociatedPoolKeys`.

En la práctica, los integradores leen el conjunto completo de cuentas del pool desde `GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID>` o desde el SDK. La derivación manual rara vez es necesaria.

## Referencia rápida del ciclo de vida

| Evento                                 | Cuentas creadas                                                                                               | Cuentas destruidas |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------ |
| `Initialize2`                          | `amm_info`, `amm_open_orders`, `amm_target_orders`, bóvedas, `lp_mint`, `pool_withdraw_queue`, `pool_temp_lp` | —                  |
| `Deposit`                              | — (puede crear ATA de LP de usuario)                                                                          | —                  |
| `Withdraw`                             | —                                                                                                             | —                  |
| `SwapBaseIn` / `SwapBaseOut` (v1 / V2) | — (puede crear ATA de usuario)                                                                                | —                  |
| `WithdrawPnl`                          | —                                                                                                             | —                  |

Los pools y sus cuentas persisten indefinidamente. Incluso si la liquidez se retira completamente, `AmmInfo` permanece.

## Qué leer dónde

* **Matemáticas y aritmética de comisiones**: [`products/amm-v4/math`](/es/products/amm-v4/math).
* **División de comisiones y cómo se compara con CPMM/CLMM**: [`products/amm-v4/fees`](/es/products/amm-v4/fees).
* **Listas de cuentas de instrucciones**: [`products/amm-v4/instructions`](/es/products/amm-v4/instructions).
* **Derivación de cuentas de OpenBook**: Documentos del programa OpenBook ([`github.com/openbook-dex/program`](https://github.com/openbook-dex/program)).

Fuentes:

* [Programa AMM de Raydium — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* [`reference/program-addresses`](/es/reference/program-addresses) para IDs de programa canónicos
* Protocolo OpenBook / Serum para las cuentas de contraparte
