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 →
El invariante
El pool mantienecoin_reserve × pc_reserve = k, donde (después de la eliminación de OpenBook en 2026-07):
- Las reservas ahora son solo de bóveda. El término histórico de orden abierta (tokens que el pool tenía en depósito como órdenes limitadas de OpenBook) ha sido eliminado — en la práctica era cero mucho antes de la eliminación. Puedes calcular
kdirectamente desde los saldos de bóveda en cadena. - La acumulación de PnL (
need_take_pnl_*) se resta para que la curva se conserve cuando el administrador retira comisiones. El mismo principio que la exclusión deprotocol_fees_*en CPMM.
calc_total_without_take_pnl_no_orderbook (la variante anterior consciente del libro de órdenes ha desaparecido).
Cada operación Swap* garantiza que k' ≥ k después de agregar la parte de comisión del LP nuevamente en las reservas.
Convención de comisiones
AMM v4 usa comisiones de razón (pares numerador/denominador) en lugar de la convención1/1_000_000 de CPMM / CLMM. La estructura Fees en cadena (ver Fees::initialize en el código fuente del programa) tiene valores predeterminados de:
- Comisión de swap total:
swap_fee = amount_in × 25 / 10_000 = 0.25%de la entrada bruta. - Parte del protocolo:
pnl_numerator / pnl_denominator = 12 / 100 = 12%de la comisión de swap, lo que resulta en0.25% × 12% = 0.03%del volumen. Esta parte se acumula en los contadores de PnL y es retirada porWithdrawPnl. - Parte del LP: el
88%restante de la comisión de swap, lo que resulta en0.25% × 88% = 0.22%del volumen. Se queda en el pool e inflak. - Sin parte de fondo. AMM v4 no tiene la división de comisión de fondo de CPMM/CLMM.
pnl_numerator / pnl_denominator es una fracción de la comisión, no del volumen de operaciones — una lectura errónea común de estos nombres de campo.
trade_fee_numerator / trade_fee_denominator (también 25 / 10_000) fue usado históricamente por la integración de OpenBook al calcular precios inclusivos de comisión para la cuadrícula de órdenes limitadas del AMM. Con el código de OpenBook eliminado, este campo es vestigial; la comisión de swap activa es swap_fee_*.
Las desviaciones de estos valores predeterminados son raras pero existen en algunos pools heredados; siempre lee las comisiones de AmmInfo.fees antes de cotizar.
Matemáticas de swap directo (ruta AMM)
El caso más simple: el usuario realiza un swap contra las bóvedas del pool sin interactuar con OpenBook. Las reservas internas del pool (incluidas las asignaciones en libro) son el denominador. SwapBaseIn (entrada exacta):MonitorStep / liquidación implícita que solía actualizar el lado de OpenBook ha sido eliminada.
SwapBaseOut (salida exacta):
Interacción con libro de órdenes (histórica)
Eliminada. La construcción de cuadrícula descrita en esta sección refleja cómo AMM v4 originalmente reflejaba la curva en un mercado de OpenBook. La integración de OpenBook — incluyendo el crank
MonitorStep y la lógica de cuadrícula build_orders — ha sido eliminada del programa (actualización 2026-07). Las matemáticas a continuación se preservan puramente como contexto histórico para lo que las cuentas target_orders / amm_open_orders en cadena fueron una vez dimensionadas.AmmInfo:
depth— número de niveles de precio por lado.amount_wave— unidad base de tamaño por nivel.min_size,coin_lot_size,pc_lot_size— restricciones del mercado de OpenBook.state_data.swap_acc_coin_fee,swap_acc_pc_fee— contadores de comisión acumulada desde el últimoTakePnl.
target_orders calculados en build_orders y comparados con amm_open_orders en cada MonitorStep. Cualquier divergencia resulta en cancelaciones + nuevos posts. Las órdenes recién completadas en OpenBook se liquidan en las bóvedas del pool en la siguiente operación que actualiza el lado de OpenBook.
Los integradores rara vez necesitan calcular la cuadrícula — el mantenedor de Raydium la mantiene — pero es útil saber que:
- Un pool con liquidez significativa en libro tiene esa liquidez contribuyendo a
k, no inactiva. - Un mercado de OpenBook obsoleto (cola de eventos llena, cranks bloqueados) previene actualizaciones de cuadrícula; el AMM puede entonces cotizar precios que divergen del libro de órdenes visible hasta el siguiente crank.
Paso de liquidación (PnL)
La parte del protocolo del 0.03% se acumula enstate_data.need_take_pnl_coin y state_data.need_take_pnl_pc. TakePnl mueve estas cantidades fuera de las bóvedas al destino especificado por el administrador, luego pone a cero los contadores.
Propiedad crucial: las reservas en el invariante siempre se calculan menos PnL acumulado, por lo que TakePnl no mueve la curva. Esto coincide con la convención de CPMM.
Ejemplo trabajado
Estado del pool:coin_reserve = 1_000_000_000_000(1,000,000 lado coin; 6 decimales)pc_reserve = 2_000_000_000_000(2,000,000 lado pc; 6 decimales)- Comisiones:
swap = 25/10_000predeterminado,pnl = 3/10_000.
SwapBaseIn entrada exacta 1_000_000_000 coin (1,000 coin).
2_200_000) no se desglosa en ningún lugar — es simplemente el residual que eleva k'.
Reglas de precisión
- Las multiplicaciones de reservas usan
u128; las divisiones finales redondean hacia cero. swap_feeredondea hacia arriba (para que el pool no cobre de menos).amount_inparaSwapBaseOutredondea hacia arriba (para que el usuario no pague de menos).- Los pools con ratios de reserva extremos pueden alcanzar
ZeroTradingTokensen entradas muy pequeñas; la misma convención que CPMM.
Limitaciones vs CPMM
- Las reservas de AMM v4 ahora son solo de bóveda, por lo que puedes cotizar directamente desde los saldos de bóveda (menos
need_take_pnl_*) — el requisito anterior de agregar los montosopen_orders.free/open_orders.lockedya no se aplica. La cotización del SDK / API sigue siendo la opción más simple. - AMM v4 no expone un TWAP estructurado en cadena. Los consumidores externos que quieran un precio respaldado por AMM-v4 deben calcularlo ellos mismos a partir de registros de operaciones.
- Token-2022 no es compatible.
Dónde ir a continuación
products/amm-v4/instructions— dondeSwapBaseIn,Deposit, etc. se conectan.products/amm-v4/fees— mecánica completa de comisiones, detalles deTakePnl.algorithms/constant-product— la derivación compartida.
- Código fuente del programa Raydium AMM —
raydium-io/raydium-amm - Módulo
Liquiditydel SDK v2 de Raydium

