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 →
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/SwapBaseOutaún esperan 17 (+1 opcional) cuentas; los diseños deDeposityWithdrawno 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/SwapBaseOutV2no llevan cuentas de mercado niamm_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. WithdrawPnles 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 eraamm_open_orders) y falla la validación. Las herramientas de administrador deben actualizarse.SetParamses un cambio que rompe compatibilidad (solo administrador). Las cuentas se reducen a[amm, admin], y el enumparames renumerado (Fees9 → 2,SetOpenTime11 → 3);AmmOwner,LastOrderDistance,UpdateOpenOrdery los parámetros de cuadrícula se eliminan.- Varias instrucciones ya no se pueden llamar.
Initialize,PreInitialize,MonitorStep,MigrateToOpenBook,WithdrawSrm,SimulateInfoyAdminCancelOrdersahora revierten. UsaInitialize2para crear pools. - Los diseños de cuenta en cadena son estables en bytes, y los códigos de error no cambian.
AmmInfo/StateDatamantienen su diseño (los campos antiguos de OpenBook se retienen pero están deprecados/congelados); la numeración deAmmErrorse preserva, con solo un nuevoNotAllowedañ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/SetParamsde 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ámetro | Valor antiguo | Valor nuevo |
|---|---|---|
Status | 0 | 0 |
State | 1 | 1 |
Fees | 9 | 2 |
SetOpenTime | 11 | 3 |
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ón | etiqueta | Reemplazo |
|---|---|---|
Initialize | 0 | Initialize2 |
MonitorStep | 2 | ninguno (crank del libro de órdenes, retirado) |
MigrateToOpenBook | 5 | ninguno |
WithdrawSrm | 8 | ninguno (descuento de tarifa SRM, retirado) |
PreInitialize | 10 | Initialize2 |
SimulateInfo | 12 | cotización fuera de cadena / SDK |
AdminCancelOrders | 13 | ninguno |
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_amountyswap_acc_coin_feese retienen para compatibilidad de diseño pero ya no se actualizan. Los consumidores que dependen de los contadores de volumenswap_*deben cambiar a registros de transacciones. - Inicialización de
AmmInfo.coin_lot_size,pc_lot_sizeymin_sizeahora se inicializan a0. - Dependencia eliminada y CPIs. El crate
serum_dexse elimina deCargo.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 deinvokers.rs. Structs de datos eliminados:LastOrderDistance,SimulateParams,RunCrankData,GetPoolData,GetSwapBaseInData,GetSwapBaseOutData.

