Saltar al contenido principal
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 →
AMM v4 dejó de compartir liquidez con OpenBook (anteriormente Serum) hace mucho tiempo; la ruta híbrida de creación de mercado con libro de órdenes ha estado inactiva durante años. Esta actualización es la limpieza: elimina la dependencia de Serum, todos los CPIs del libro de órdenes y las instrucciones de creación de mercado muertas del programa, dejando AMM v4 como un AMM de producto constante puro (x·y=k). No cambia ningún comportamiento de trading en vivo — no había órdenes de OpenBook restantes para dejar de colocar.

Resumen ejecutivo para integradores

  • Swap / Deposit / Withdraw siguen funcionando sin cambios. Las transacciones construidas con los diseños de cuenta antiguos aún se ejecutan — las cuentas de Serum/mercado eliminadas simplemente se ignoran (sin validación, sin CPI). SwapBaseIn / SwapBaseOut aún esperan 17 (+1 opcional) cuentas; los diseños de Deposit y Withdraw no cambian. No tienes que enviar una actualización de cliente para mantener los flujos existentes activos.
  • Migra a los puntos de entrada de swap V2. SwapBaseInV2 / SwapBaseOutV2 no llevan cuentas de mercado ni amm_open_orders (8 cuentas en total), por lo que las transacciones son más pequeñas y baratas. Los routers/agregadores deben enrutar a través de V2.
  • WithdrawPnl es un cambio que rompe compatibilidad (solo administrador). Va de 17 (+1 opcional) → 10 cuentas sin análisis de compatibilidad; el diseño antiguo se desalinea (el antiguo #5 era amm_open_orders) y falla la validación. Las herramientas de administrador deben actualizarse.
  • SetParams es un cambio que rompe compatibilidad (solo administrador). Las cuentas se reducen a [amm, admin], y el enum param es renumerado (Fees 9 → 2, SetOpenTime 11 → 3); AmmOwner, LastOrderDistance, UpdateOpenOrder y los parámetros de cuadrícula se eliminan.
  • Varias instrucciones ya no se pueden llamar. Initialize, PreInitialize, MonitorStep, MigrateToOpenBook, WithdrawSrm, SimulateInfo y AdminCancelOrders ahora revierten. Usa Initialize2 para crear pools.
  • Los diseños de cuenta en cadena son estables en bytes, y los códigos de error no cambian. AmmInfo / StateData mantienen su diseño (los campos antiguos de OpenBook se retienen pero están deprecados/congelados); la numeración de AmmError se preserva, con solo un nuevo NotAllowed añadido.

Por qué esto importa (para traders, LPs e integradores)

  • Los traders no ven cambios en el comportamiento del swap o la fijación de precios — la curva de producto constante no cambia. Los swaps con diseño V2 son más baratos de ejecutar porque llevan ~8 cuentas menos.
  • Los LPs mantienen la misma economía de depósito/retiro. La liquidez ha estado completamente en los vaults del pool durante mucho tiempo, por lo que el valor del pool está completamente en el pool; esta actualización solo elimina la tubería de mercado obsoleta.
  • Los integradores obtienen transacciones más pequeñas y simples y un modelo de cotización que lee directamente de los vaults. Las integraciones existentes no se rompen (excepto el WithdrawPnl / SetParams de administrador), pero el shim de compatibilidad de swap v1 es temporal — migra a V2 cuando te convenga.

Cambios a nivel de instrucción

Aún se pueden llamar, diseño sin cambios (compatible hacia atrás)

Initialize2, Deposit, Withdraw, SwapBaseIn, SwapBaseOut, CreateConfigAccount y UpdateConfigAccount mantienen sus listas de cuentas existentes. En SwapBaseIn / SwapBaseOut, Deposit y Withdraw, las cuentas de OpenBook/mercado aún se aceptan posicionalmente pero ya no se validan ni se usan — no se emite CPI y las reservas del pool se calculan solo desde los vaults. El número de cuentas aún debe coincidir, por lo que las transacciones existentes continúan ejecutándose sin cambios.

SwapBaseInV2 / SwapBaseOutV2 — ruta recomendada

Omite completamente las cuentas de mercado y amm_open_orders (8 cuentas; etiquetas 16 / 17). La matemática de cotización es idéntica a v1. Las nuevas integraciones y routers deben usar V2.

WithdrawPnl — 17 (+1 opcional) → 10 cuentas (⚠️ rompe compatibilidad, sin ruta de compatibilidad)

amm_open_orders y las seis cuentas de mercado se eliminan. El nuevo diseño fijo de 10 cuentas, solo para administrador, no tiene análisis de compatibilidad; el diseño antiguo se desalinea y falla con errores como InvalidCoinVault.

SetParams — reducido a [amm, admin] (⚠️ rompe compatibilidad) + parámetros renumerados

La autoridad, órdenes abiertas, órdenes objetivo, vault y todas las cuentas de mercado se eliminan. El enum param se renumera y se recorta:
ParámetroValor antiguoValor nuevo
Status00
State11
Fees92
SetOpenTime113
Todos los parámetros de cuadrícula del libro de órdenes (OrderNum, Depth, AmountWave, MinPriceMultiplier, MaxPriceMultiplier, MinSize, VolMaxCutRatio, InitOrderDepth, SetSwitchTime, ClearOpenTime, Seperate) más AmmOwner, LastOrderDistance y UpdateOpenOrder se eliminan. El struct SetParamsInstruction elimina new_pubkey y last_order_distance.

Ya no se pueden llamar (revierten en tiempo de ejecución; constructores eliminados)

InstrucciónetiquetaReemplazo
Initialize0Initialize2
MonitorStep2ninguno (crank del libro de órdenes, retirado)
MigrateToOpenBook5ninguno
WithdrawSrm8ninguno (descuento de tarifa SRM, retirado)
PreInitialize10Initialize2
SimulateInfo12cotización fuera de cadena / SDK
AdminCancelOrders13ninguno

Cambios de reserva / estado

  • Fórmula de activos del pool. Los activos totales del pool ahora son saldos de vault − PnL pendiente (need_take_pnl); el término de orden abierta de OpenBook — ya cero en la práctica — se elimina. El código de cotización puede leer directamente de los saldos de vault.
  • Campos de estado deprecados. StateData.total_pnl_pc, total_pnl_coin, orderbook_to_init_time, swap_coin_in_amount, swap_pc_out_amount, swap_acc_pc_fee, swap_pc_in_amount, swap_coin_out_amount y swap_acc_coin_fee se retienen para compatibilidad de diseño pero ya no se actualizan. Los consumidores que dependen de los contadores de volumen swap_* deben cambiar a registros de transacciones.
  • Inicialización de AmmInfo. coin_lot_size, pc_lot_size y min_size ahora se inicializan a 0.
  • Dependencia eliminada y CPIs. El crate serum_dex se elimina de Cargo.toml; todos los CPIs de Serum DEX (invoke_dex_new_order_v3, invoke_dex_cancel_order_v2, invoke_dex_settle_funds, invoke_dex_init_open_orders, …) se eliminan de invokers.rs. Structs de datos eliminados: LastOrderDistance, SimulateParams, RunCrankData, GetPoolData, GetSwapBaseInData, GetSwapBaseOutData.