# Sui Mainnet Halts Resolved After Major Upgrade Source: https://blog.sui.io/sui-mainnet-halts-resolved-after-major-upgrade ## Summary Sui Mainnet halted three times on May 28 and 29, 2026, after bugs tied to gas charging and the 1.72 release, which introduced address balances, and each outage was resolved by validators adopting fixes from the Sui Core Team. The first two outages came from a crash in gas smashing when a hybrid gas payment hit InsufficientFundsForWithdraw, with the second caused by that error being masked by another cancellation reason. The third outage happened at an epoch change because a latent bug stopped validators from remembering that randomness setup (DKG) had failed, and the network resumed after a coordinated force-close of the affected epoch. The text states that no user funds were at risk and no committed transactions were reverted. ## Article Summary On Thursday, May 28 and Friday, May 29, 2026, Sui Mainnet experienced three outage incidents. The first two stemmed from crash bugs involving the interaction of gas charging logic and the recent 1.72 release (which introduced address balances). The fix for the Thursday issue was an interim measure designed to restore functionality to the network while the Sui Core Team worked on a long-term solution. The interim fix had a known issue with a low probability of causing a halt. The team accepted the risk accompanying this proposal in order to bring the halted network back as quickly as possible while a robust fix was developed. On Friday morning, the network hit a variant of the known issue and halted. The third outage occurred Friday afternoon at the next scheduled epoch change, when a separate latent bug — in how validators preserve randomness state across restarts — was exposed as validators restarted to adopt the Friday morning fix. The first outage began at ~7am PT and ended at ~1:30pm PT on Thursday, the second began at ~5am PT and ended at ~8:30am PT on Friday, and the third began at ~1:30pm PT and ended at ~7:20pm PT on Friday. During the outages, no user funds were at risk, and the network did not revert any committed transactions when it resumed. As of now, validators have fully addressed the known issues caused by both the original gas-charging bug and the randomness-state bug, and network activity has resumed. What happened part 1: gas smashing on transaction failing with InsufficientFundsForWithdraw leads to underflow Sui release 1.72 introduced address balances, which give Sui users a new way to store funds and pay for gas without using coin objects. Sui transactions can pay for gas using: An address balance, expressed as an empty list of input coins to the transaction Coin objects, expressed as a list of input coins to the transaction A mix of both (which we’ll call hybrid gas), expressed as a list of input coins and synthetic coin reservation objects that spend from an address balance. In the second two cases, the runtime performs so-called gas smashing before charging the transaction for gas: combine all input coins into a single coin that is debited for gas. Importantly, gas smashing happens both for transactions that execute successfully, and transactions that are cancelled. The root cause of the outage issues involved an edge case in gas smashing during hybrid gas payments. If a reservation attempts to overdraft an address balance while determining if the transaction has enough gas to meet its budget, the attempt is blocked and the transaction is marked as cancelled with InsufficientFundsForWithdraw. However, during subsequent gas smashing, the same reservation object attempts an overdraft again. Essentially, the transaction is cancelled because the address balance didn’t have enough funds, but then gas smashing spends those same funds. The above is an oversimplification in two ways: The crash does not actually happen during gas smashing. To support concurrent withdraws from/deposits to the same address, using an address balance in a transaction emits balance deltas that are reconciled by a system settlement transaction that sums the deltas and determines the new values of each address balance. This is where the crash occurred, due to a negative delta from the gas smashing applied to a zero balance. Encountering an InsufficientFundsForWithdraw is not as easy as trying to spend X from an address balance that holds