Создатели протокола Aptos поделились подробностями ошибки, возникшей в сети на днях. Они опубликовали подробный отчет об инциденте. Специалисты поведали, что в августе текущего года в базу кода ядра Aptos было внесено изменение, ориентированное на производительность из-за чего и произошло дальнейшее недоразумение.
Тогда все валидаторы согласились, что транзакция имеет недостаточный бюджет газа для выполнения перевода. По словам разработчиков: «В итоге они не смогли договориться о количестве газа из-за не «недетерминизма», введенного в августовском изменении кода».
Таким образом, 18 октября 2023 года сеть Aptos задержала транзакции примерно в 16:15 по тихоокеанскому времени. Их загрузка не стала проблемой в этом инциденте. По словам разработчиков, ни один из переводов не был потерян. Также в ходе сбоя не произошло форка. «Недетерминированный» код привел к проблеме, из-за чего пришлось «развернуть исправление». Ошибка была исправлена через 5 часов 15 минут после ее обнаружения.
Обновление, которое определяет размер списания/возврата за транзакцию, до этого успешно проработало около 2-х месяцев. Первоначальное изменение кода привело к «недетерминированности», которая была обнаружена только с помощью функции FeeStatement.
Выявив проблему, команда отменила августовское изменение кода, устранив ее. Операторы валидатора быстро развернули ПО с правильной версией.
Разработчики подчеркнули, что впервые с момента запуска Mainnet в сети Aptos произошла какая-либо значительная задержка в работе блокчейна. Учредители проекта очень серьезно относятся к таким моментам. Они заявили, что «подобный сценарий не был реализован ни в одном из вариантов в тестовой сети».
Разработчики экосистемы решили взять на себя обязательство проводить более тщательное исследование нетипичных сбоев в будущем. Когда любая команда будет предлагать изменения в протоколе, необходимо осуществлять глубинное изучение и стараться выявлять ошибки еще на стадии тестирования.