Обновление Pectra на тестовой сети Sepolia встретило неожиданные проблемы, включая производство пустых блоков.
Проблемы при обновлении Pectra
Обновление Pectra на тестовой сети Ethereum Sepolia столкнулось с неожиданными трудностями. Разработчики обнаружили баги в своих geth-узлах и пустые добытые блоки сразу после развертывания. Проблема возникла из-за некорректного взаимодействия с депозитным контрактом, что привело к неожиданным лог-событиям. Это вызвало недействительные блоки, которые мешали правильной обработке транзакций. Разработчики оперативно идентифицировали причину и предложили исправление, чтобы игнорировать недействительные логи. Однако актуальной задачей было внедрение обновления без разделения цепи.
Новая уязвимость нулевых токенов
Хотя разработчики считали, что проблема была решена, пустые блоки начали появляться вновь. Вскоре выяснилось, что внешняя сторона использовала малознакомый аспект ERC-20 стандарта — нулевые токен-трансферы. Этот метод позволял любому инициировать события передачи, обойдя изначальное исправление. В ответ на эту угрозу разработчики быстро внедрили частный патч, блокирующий транзакции, связанные с депозитным контрактом, на ограниченном числе узлов DevOps.
Планы разработчиков Ethereum
В 14:00 UTC узлы Sepolia синхронизировались с официальным патчем. Это восстановило нормальное производство блоков. Разработчики установили, что проблема была вызвана депозитным контрактом Sepolia, отличающимся от варианта основной сети. Атака выявила проблему в стандарте ERC-20 — нулевые токен-трансферы все еще генерируют события. В свете подобных рисков планируется более глубокий анализ взаимодействий смарт-контрактов перед развертыванием Pectra на основной сети Ethereum.
В результате инцидента разработчики приняли решение провести более глубокие тестирования перед внедрением обновлений на основной сети Ethereum.