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 parece 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. Llevaba 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 ahora es 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/acuñaciones — 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.
  • fees — estructura idéntica a AMM v4. Por defecto, comisión de intercambio del 0,25%, división LP / protocolo del 0,22% / 0,03%.
  • coin_vault, pc_vault — las bóvedas del pool.
  • status — máscara de bits que controla swap/depósito/retiro/crank.
  • out_put.need_take_pnl_* — barridas por WithdrawPnl.

ModelDataInfo

La tabla de búsqueda. Una matriz dispersa grande 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 / depósito / retiro 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 de programa único 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/depósito/retiro/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). Debido a que ya no hay fondos en depósito como órdenes abiertas de OpenBook, los activos totales del pool ahora se calculan completamente a partir de 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, acuñación de LP, órdenes objetivo, etc. En la práctica, usa el SDK o API para obtener direcciones pre-calculadas.

Qué leer dónde

Fuentes: