Мейннет Sui пережил три остановки в течение 28–29 мая, и Фонд Sui опубликовал детальный разбор причин. Все сбои связаны с обновлением v1.72, которое добавило новую функцию Address Balances, но одновременно выявило критическую ошибку в логике списания комиссий.
Первый и второй сбои: «газовый баг»
Новая функция позволяла хранить средства и оплачивать комиссии напрямую с адресного баланса, минуя традиционные «монетные объекты». Однако при одновременных попытках двух транзакций потратить один и тот же баланс, когда средств недостаточно, одна из транзакций отменялась. Ошибка заключалась в том, что система всё равно пыталась списать уже отменённые средства на этапе «газового смэшинга» — это приводило к отрицательному балансу и краху узлов валидаторов. Первая остановка произошла утром 28 мая и продлилась около 6,5 часов. Экстренный патч содержал известный риск повторения при особом стечении обстоятельств, и утром 29 мая этот сценарий реализовался — сеть упала во второй раз примерно на 3,5 часа.
Третий сбой: проблема со случайностью
После установки исправления валидаторы были перезапущены, что привело к временному снижению участия ниже порога, необходимого для работы системы распределённой генерации случайных чисел. По задумке, система должна была отключиться, но её отключённое состояние не сохранилось на диск. В результате после перезапуска валидаторы ожидали доступности случайных чисел, а транзакции, зависимые от них, начали накапливаться в очереди, заблокировав завершение эпохи. Третий простой длился почти 6 часов.
Принятые меры и выводы
Постоянное исправление устранило как проблему списания газа, так и сохранение состояния случайности. Также добавлен механизм принудительного закрытия застрявшей эпохи. В Фонде подчеркнули, что ничьи средства не пострадали, и ни одна подтверждённая транзакция не была откачена. Команда признала, что логика списания комиссий стала слишком сложной, и намерена усилить устойчивость сети к сбоям, качество кода и механизмы изоляции отказов. Отмечено, что ИИ-агенты помогли ускорить диагностику во время инцидента.