La mainnet de Sui sufrió tres interrupciones separadas entre el 28 y el 29 de mayo después de que la versión 1.72 de la red expusiera casos límite en la lógica de cálculo de gas y en el reinicio de validadores, según un análisis post-mortem de la Sui Foundation. La fundación afirmó que los problemas ya se han resuelto, que la actividad de la red se ha reanudado y que "no hubo riesgo para los fondos de los usuarios".
Los incidentes comenzaron el jueves 28 de mayo, cuando la mainnet de Sui se detuvo alrededor de las 7:00 a.m. (hora del Pacífico) y permaneció inactiva hasta aproximadamente la 1:30 p.m. (hora del Pacífico). Un segundo corte siguió la mañana del viernes, comenzando alrededor de las 5:00 a.m. (hora del Pacífico) y terminando hacia las 8:30 a.m. (hora del Pacífico). La tercera interrupción comenzó el viernes por la tarde, aproximadamente a la 1:30 p.m. (hora del Pacífico), y se resolvió hacia las 7:20 p.m. (hora del Pacífico).
Según la fundación, los dos primeros cortes se debieron a errores de colisión (crash bugs) relacionados con la interacción entre la lógica de cálculo de gas y la actualización 1.72 de Sui, que introdujo los saldos por dirección. La tercera interrupción fue independiente, desencadenada durante un cambio de época programado después de que los reinicios de los validadores expusieran un error latente en cómo se preservaba el estado de aleatoriedad.
"Durante las interrupciones, no hubo riesgo para los fondos de los usuarios, y la red no revirtió ninguna transacción confirmada cuando se reanudó", declaró la Sui Foundation. "A día de hoy, los validadores han abordado completamente los problemas conocidos causados tanto por el error original de cálculo de gas como por el error del estado de aleatoriedad, y la actividad de la red se ha reanudado".
El error de cálculo de gas de Sui desencadenó las primeras interrupciones
El primer problema se centró en la nueva función de saldo por dirección de Sui, que permite a los usuarios almacenar fondos y pagar gas sin depender únicamente de objetos tipo 'coin'. Las transacciones en Sui pueden pagar el gas mediante saldos por dirección, objetos 'coin' o una estructura híbrida que combina ambos.
El caso límite surgió en esa ruta híbrida de gas. Cuando una transacción intentaba gastar desde un saldo por dirección que no podía cubrir transacciones concurrentes, el programador (scheduler) la cancelaba correctamente con un error InsufficientFundsForWithdraw. Pero más tarde, durante el proceso de "gas smashing" —la combinación de 'coins' de entrada en una sola 'coin' para pagar el gas— la misma reserva podía intentar debitar fondos nuevamente.
En la explicación de la fundación, el fallo (crash) no ocurrió directamente durante el 'gas smashing', sino durante la liquidación (settlement), cuando los deltas de saldo eran reconciliados por una transacción del sistema. Un delta negativo aplicado a un saldo cero provocó un desbordamiento por la parte baja (underflow).
La solución inmediata fue conceptualmente sencilla: evitar el 'gas smashing' cuando una transacción se cancela con InsufficientFundsForWithdraw. Los validadores adoptaron esa solución el jueves, poniendo la red de nuevo en línea. Pero la fundación reconoció que el parche era una medida provisional, elegida para restaurar la red mientras los ingenieros desarrollaban una solución más completa.
"Cambiar la lógica del gas es una operación delicada", escribió la fundación. "Como se explicó anteriormente, hay interacciones complicadas entre los saldos por dirección y los 'coins'. Aparte de corregir errores, los cambios en la lógica del gas deben preservar todo el comportamiento anterior o utilizar compuertas de versión (version gating) apropiadas".
Ese parche provisional contenía una debilidad conocida. Si una transacción tenía múltiples motivos de cancelación, otro error podía enmascarar la condición InsufficientFundsForWithdraw. Cuando eso ocurrió el viernes por la mañana, aún se podía llegar a la ruta original del 'underflow', causando una segunda parada.
El cambio de época expuso un error en el estado de aleatoriedad
La tercera interrupción ocurrió después de que la red reanudara su funcionamiento normal el viernes por la mañana. En el siguiente cambio de época programado, los validadores no pudieron completar la transición debido a un error relacionado con el protocolo de generación de claves distribuidas (DKG) de Sui, que inicializa la aleatoriedad para transacciones que dependen de aleatoriedad en cadena (on-chain randomness).
Durante el ciclo de reinicio anterior, la participación no fue lo suficientemente alta para el proceso DKG de la siguiente época, por lo que la aleatoriedad se desactivó según lo diseñado. El problema fue que el veredicto de fallo no se escribió en el disco. Cuando los validadores se reiniciaron nuevamente, volvieron a funcionar sin recordar que el DKG había fallado.
"Sin que los validadores recordaran que el DKG había fallado, no podía suceder, la cola en pausa creció, y la lógica de fin de época —que debe vaciar esa cola antes de cerrar— se quedó esperando un DKG que nunca llegaría", dijo la fundación.
La solución tuvo dos partes: persistir el estado del DKG entre reinicios y añadir un mecanismo que permitiera a los validadores cerrar la época bloqueada en un punto coordinado. Ese mecanismo se utilizó una vez para cerrar la época afectada, después de lo cual la red pasó a la siguiente época y se restauró la aleatoriedad.
El análisis post-mortem enmarcó las interrupciones como una lección de ingeniería más amplia para Sui. La fundación señaló que la resiliencia al final de la época necesita más inversión, particularmente en torno a la degradación elegante y a los mecanismos de cierre forzoso operativo. También indicó que el cálculo del gas merece el mismo nivel de rigor que la Move VM o el consenso Mysticeti, dada su interacción con la liquidación, las comprobaciones de conservación y la programación.
Al cierre de esta edición, SUI cotizaba a $0.8798.







