Вчера на блоке 12 244 000 в сети Эфириума был развернут запланированный хардфорк Berlin. Обновление включало четыре предложения по улучшению действующей сети Эфириума и сокращению комиссий. Через 294 блока после активации хардфорка произошла ошибка консенсуса с одним из программных клиентов - Open Ethereum, и использующие клиент узлы перестали синхронизироваться с блокчейном.
Все, кто запускал этот клиент – около 12% всех узлов Эфириума – не могли использовать блокчейн, пока ошибка не была исправлена. Проблема привела к отключению проводника по блокам Etherscan. Ошибка была связана с транзакцией, относящейся к смарт-контракту, который еще не существует, но запланирован для включения в будущее обновление. Генеральный директор Gnosis Мартин Кеппельманн (Martin Köppelmann) написал в Твиттере:
Другими словами, Open Ethereum оценил одну транзакцию иначе, чем другие программные клиенты. Это имело побочные эффекты, из-за которых клиент Open Ethereum (но не другие) отклонил целый блок, полный транзакций, и в этот синхронизация с блокчейном была нарушена. В результате биржи, например, BitStamp и Coinbase, временно приостановили вывод ETH и токенов ERC-20.«Таким образом, @OpenEthereumOrg обработал цены на газ для этой транзакции несколько некорректно, что вызвало все последующие проблемы (блок был отклонен как недействительный)».
We are pleased to release v3.2.3 which includes a fix for the Berlin Upgrade consensus error. https://t.co/h5B1bzrGA5
— OpenEthereum (@OpenEthereumOrg) April 15, 2021
По словам разработчика Go Ethereum Мариуса Ван Дер Вейдена (Marius Van Der Wijden), который помог решить проблему, ошибка не была очевидной, поэтому не была замечена на стадии тестирования обновления. Команда Open Ethereum исправила ошибку через несколько часов после ее появления. Кеппельманн написал:
«После установки обновлений узлы Open Ethereum должны иметь возможность повторно синхронизироваться без каких-либо проблем - повторная синхронизация с блока генезиса или ручное удаление блока не требуется».