Skip to main content
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 →
Stable AMM es su propio programa; su estructura de cuentas del lado del pool se asemeja a AMM v4 (AmmInfo, bóvedas, autoridad), y además tiene una cuenta ModelDataInfo que almacena la tabla de búsqueda. Esta página cubre ambas.

Inventario

AMM puro. Stable AMM mantiene toda la liquidez en sus propias bóvedas y no depende de OpenBook. Llevó una ruta de creación de mercado de OpenBook al principio de su vida, pero esa ruta ha estado inactiva durante años, y la actualización del 2026-06-22 eliminó el código residual. Las cuentas de mercado serum_* y amm_open_orders a continuación son por lo tanto heredadas: pueden seguir apareciendo en transacciones de diseño antiguo para compatibilidad hacia atrás, pero el programa no las valida ni las lee, e las instrucciones de nuevo diseño las omiten completamente.
El inventario activo es ahora completamente del lado del pool:

AmmInfo

Cuenta de estado raíz. El diseño es casi idéntico a AMM v4 — parámetros del pool, decimales, comisiones, referencias de bóvedas/mints — con una adición: un campo model_data_key que apunta a la tabla de búsqueda.
Campos clave orientados al integrador:
  • model_data_key — la dirección de la tabla de búsqueda. Debe pasarse a cada instrucción.
  • feesestructura idéntica a AMM v4, valores diferentes: swap_fee = 2 / 10_000 (0,02%), pnl = 12 / 100, trade_fee = 0. Ver products/stable/fees.
  • coin_vault, pc_vault — las bóvedas del pool.
  • status — máscara de bits que controla swap/deposit/withdraw/crank.
  • out_put.need_take_pnl_* — barridas por WithdrawPnl.

ModelDataInfo

La tabla de búsqueda. Un gran arreglo disperso de puntos de precio/cantidad.
Ciclo de vida: Las instrucciones de configuración que construyeron estas tablas — InitModelData (creó la cuenta) y UpdateModelData (poblaron elementos, estableciendo valid_data_count) — fueron eliminadas en la actualización del 2026-06-22. Las tablas en pools existentes ahora son fijas. En tiempo de ejecución, las instrucciones invocables restantes aún las consumen:
  • Swap / deposit / withdraw llaman a funciones de búsqueda que buscan binariamente e interpolan dentro de elements[0..valid_data_count].

DataElement

La entrada atómica en la tabla. Debe estar ordenada (x ascendente, y descendente, precio ascendente) para que la búsqueda binaria funcione.
Al poblar la tabla, el administrador especifica estos pre-escalados. El programa no valida el orden de clasificación en cadena (por velocidad), por lo que un ordenamiento incorrecto causa cotizaciones incorrectas.

Autoridad y bóvedas

Igual que AMM v4:
  • amm_authority es un PDA único a nivel de programa derivado con semilla ["amm authority"]. Posee todas las bóvedas del pool y firma sus movimientos.
  • Bóvedas son cuentas de SPL Token cuyo propietario es amm_authority, no ATAs.
Token-2022 no es compatible.

Máscara de bits de estado

Idéntica a AMM v4. Controla si swap/deposit/withdraw/crank están habilitados.

Seguimiento de comisiones y PnL

La estructura out_put rastrea:
  • need_take_pnl_coin, need_take_pnl_pc — comisiones de protocolo acumuladas pero aún no barridas. WithdrawPnl las saca.
  • swap_coin_in_amount, swap_pc_in_amount, etc. — contadores de análisis.
Cálculo de activos del pool (post-desacoplamiento). Porque ya no hay fondos en depósito como órdenes abiertas de OpenBook, los activos totales del pool ahora se calculan completamente desde las bóvedas:
Los indexadores y el código de cotización que reconstruyeron el valor del pool a partir de saldos de OpenOrders deben descartar ese término.

Tamaño de cuenta

El ModelDataInfo es grande (~1,2 MB, ya que 50.000 elementos × 24 bytes por elemento). Por eso crear un pool de Stable requiere asignación explícita de renta y pre-asignación de cuenta. El SDK de Raydium y las herramientas manejan esto de manera transparente; los integradores rara vez necesitan asignar manualmente.

Derivación de cuentas desde cero

Como AMM v4, Stable AMM usa claves con semilla (no PDAs puras). La identidad canónica del pool se deriva mediante:
De manera similar para bóvedas, mint de LP, órdenes objetivo, etc. En la práctica, usa el SDK o API para obtener direcciones pre-calculadas.

Qué leer dónde

Fuentes: