Сначала стало известно о проблемах с Infura, серверами под управлением компании ConsenSys, которые обеспечивают синхронизацию большинства приложений децентрализованных финансов (DeFi) в сети эфириума.
Из-за Infura перебои наблюдались в таких популярных эфириум-приложениях, как Metamask, MakerDAO, Uniswap, Compound и MyCrypto. Вскоре после этого биржа Binance приостановила операции в сети эфириума, заметив конфликтующие транзакции в своей ноде. Другие биржи также приостановили операции, после чего стала очевидной реальная проблема: ошибка в клиенте Geth, код которого лежит в основе 80% эфириум-приложений, разделила блокчейн эфириума на две части.
Две конфликтующие истории транзакций означали, что пользователи эфириума временно взаимодействовали с разными версиями блокчейна. Это не только вызвало задержки, но и поставило под угрозу средства пользователей.
Infura, как и другие провайдеры, устранила проблему, обновив свои ноды. Провайдеры использовали старую версию Geth с ошибкой, которую разработчики эфириума молча исправили в недавнем обновлении. Это обновление, среди прочих, проигнорировали Infura и Blockchair.
Разработчики сообщили CoinDesk, что помимо этих двух провайдеров пострадали и другие пользователи эфириума и разработчики кошельков, которые не провели обновление.
Разработчик эфириума Петер Силадьи в своем посте об инциденте написал, что форк «был (намеренно) запущен в сети эфириума».
Когда произошел форк, он создал две версии реестра транзакций эфириума: одну с транзакциями от обновленных клиентов Geth, а другую ― с транзакциями от старых клиентов Geth (например, Infura).
«Исправление было развернуто несколько месяцев назад, и только сегодня произошла транзакция, которая вызвала этот раскол», ― сказал в комментарии для Coindesk Никита Жаворонков, ведущий разработчик блокчейн-обозревателя Blockchair.
Подумав, что обновление было «незначительным изменением кода», в Blockchair не стали проводить обновление.
«Команда Geth действительно изменила реализацию консенсуса в релизе v1.9.17, однако команда не создавала никаких новых правил, о которых сообщество эфириума не знало или с которыми не соглашалось», ― пишет Силадьи в своем посте, говоря, что эти правила были заложены три года назад в предложении по улучшению эфириума.
«Если вы не считаете случайное введение ошибки “обновлением консенсуса”, вам также не следует рассматривать исправление указанной ошибки через несколько месяцев в “обновлением консенсуса”», ― утверждает он.
Разработчик Geth и эксперт по безопасности эфириума Мартин Свенде сказал, что этот инцидент стал напоминанием о необходимости регулярно обновлять свои ноды. По его словам, разработчики не объявляли о большом изменении, чтобы не привлекать внимание к ошибке.
Тем не менее, провайдеры эфириум-сервисов задаются вопросом, почему об ошибке не сообщили в частном порядке командам, которые разрабатывают на Geth.
«Каждый крупный проект, с которым команда разработчиков тесно сотрудничает, должен иметь контакт по вопросам безопасности, который может координировать плавное обновление. Мы должны работать вместе», ― сказал в комментарии для основатель Thesis Мэтт Луонго.
Жаворонков сказал, что ошибка не была злонамеренной, но «если [разработчики Geth] знали, что такое может случиться, то они должны были подготовить руководство для операторов нод». Луонго сказал, что команда Geth ― «хорошие разработчики», но им не хватает «опыта работы с инфраструктурой» и финансирования.
«Это своего рода серая зона и она требует отдельного обсуждения», ― заключает Силадьи в своем посте. «Мы все согласны с тем, что прозрачность ― это главное и что мы должны стремиться к ней, но в этом вопросе также важно внимательно изучить все детали».
«В случае с эфириумом требуется много времени (недели, месяцы), чтобы заставить операторов нод обновиться даже до запланированного хардфорка», ― добавил он.
По словам Силадьи, даже несмотря на то, что обновление «приняло неожиданный оборот», команда Geth по-прежнему считает, что держать эту проблему в секрете «было правильным решением».
«Я считаю, что самым важным здесь является то, что люди прозрачны в своих рассуждениях и признают любые ошибки», ― сказал Луонго. «Monero хорошо справлялась с ошибками в прошлом, так же как и биткоин и Zcash. Можно привести множество примеров, и, хотя всегда сложно координировать деятельность в индустрии, отказ от какой-либо координации чрезвычайно опасен. Я надеюсь, что этот форк приведет к более тесным отношениям и переосмыслению того, как проекты на эфириуме взаимодействуют с разработчиками клиентов».