Ошибка в клиенте Ethereum привела к сбою Prysm

Ошибка в клиенте Ethereum привела к сбою Prysm

Prysm сообщила, что ошибка, введенная в тестовой сети за месяц до обновления Fusaka Ethereum, стала причиной проблемы с валидацией узлов Ethereum, которая затронула его клиент ранее в этом месяце.

Разработчик Ethereum, Терренс Цао, опубликовал отчет за воскресенье, в котором подробно описал инцидент с основным узлом Fusaka Prysm, повлиявший на сеть 4 декабря.

Узлы Prysm столкнулись с "истощением ресурсов" при обработке аттестаций от узлов с утратой синхронизации. Это вызвало повторное воспроизведение прошлых блоков эпохи и перерасчет дорогостоящих переходов состояний, что значительно повлияло на производительность из-за чрезмерной нагрузки.

В отчете говорится, что ошибка присутствовала в тестовых сетях месяц до инцидента, но не была активирована.

“Ошибка была введена в Prysm PR 15965 и развернута на тестовых сетях за месяц до инцидента без активации.”

Тестовые сети предназначены для выявления ошибок, но они не являются безошибочным методом.

В мае 2023 года — через месяц после хардфорка в Шанхае — разработчики Ethereum оказались в состоянии паники, когда сеть временно потеряла финализацию транзакций на около 25 минут, а затем снова более чем на час на следующий день, прежде чем блокчейн самостоятельно восстановился.

Prysm была исправлена

Вместо использования текущего состояния главного узла, Prysm создавала предыдущие состояния с нуля, создавая значительную вычислительную нагрузку.

Более 42 эпох, на сети наблюдался процент пропущенных слотов 18,5%, при этом участие снизилось до 75%, а валидаторы потеряли около 382 Ether (ETH) в наградах за аттестацию, говорится в сообщении.

Связанные: Виталик Бутерин утверждает, что Ethereum может пережить временную потерю финализации

Операторам узлов было предложено развернуть временное решение, пока разработчики работали над обновлением для клиентов Prysm.

Разнообразие клиентов спасло положение

Инцидент мог бы быть намного хуже, если бы он затронул доминирующий клиент консенсуса Ethereum, Lighthouse, говорят разработчики.

Prysm от Offchain Labs является вторым по величине клиентом Ethereum с долей 17,6%, согласно данным ClientDiversity.

“Разнообразие клиентов предотвратило заметное воздействие на пользователей Ethereum. Клиент, имеющий более 1/3 сети, мог бы вызвать временную потерю финализации и большее количество пропущенных блоков.”

Однако инцидент подчеркнул, что Lighthouse опасно близок к порогу двух третей, когда ошибка одного клиента может утвердить недопустимую цепочку.

В настоящее время у Lighthouse доля клиентов составляет 52,6%, по сравнению с примерно 56% на момент инцидента.

Разработчики Ethereum стремятся к большему разнообразию клиентов. Источник: ClientDiversity