Перебои в работе Infura, ведущего поставщика инфраструктурных решений для сети Ethereum, связаны с ошибками консенсуса в более старых версиях клиента Geth. Из-за того, что часть сети не обновилась до последней версии, на блоке 11234873 состоялось разделение Ethereum на две цепи.
«В определенный момент разработчики Ethereum внедрили в код изменения, которые привели к сегодняшнему разделению на блоке 11234873 (07:08 UTC). Те, кто не обновился (Blockchair, Infura, некоторые майнеры и многие другие), застряли на два часа в меньшей цепи (~30 блоков), — написал разработчик Blockchair Никита Жаворонков.
По его словам, «технически это было неанонсированным хардфорком».
Никита Жаворонков считает, что нечто подобное произошло в сети биткоина семь лет назад, когда состоялось обновление базы данных.
«Решение: обновите Geth и запустите debug.setHead(11234872)», — добавил он.
Несмотря на имеющееся решение, Жаворонков подчеркивает, что случившееся нельзя недооценивать и следует рассматривать как одну из наиболее серьезных проблем, с которыми Ethereum сталкивался с момента инцидента с The DAO четыре года назад.
Разработчик Ethereum Петер Силадьи согласился с версией Жаворонкова и объяснил, почему было решено не сообщать о проблемах Geth:
«Технически ты прав, это было «неанонсированным хардфорком» (из плохой цепи в хорошую). Но нужно понимать, что скрытое исправление бага, который «спал» более двух лет, снижает вероятность возникновения перебоев, нежели при повышении осведомленности о нем. Мы стремимся минимизировать потенциальный ущерб», — написал Силадьи.
Обоснованность таких действий подтвердил бывший сопроводитель Monero Рикардо Спаньи.
«Мы несколько раз секретно фиксили баги в Monero, опасаясь, что их смогут эксплуатировать в случае огласки. Например, именно так мы поступили в 2017 году», — прокомментировал Спаньи, напомнив об успешном исправлении бага, который в потенциале позволял создавать неограниченное число монет XMR.
Разработчик Geth Мартин Холст Свенде объяснил, что старые версии клиента содержали ошибки в консенсусе.
«Внедренное изменение фактически было направлено на исправление этих проблем. Это напоминание о том, что ПО нод необходимо поддерживать в актуальном состоянии», – написал он.
Аналитик The Block Ларри Чермак, однако, не понимает, как такая ситуация стала возможной.
«Если это так, то все гораздо плачевнее, чем я думал. Как может быть, что крупнейший поставщик инфраструктуры не знал об изменении в коде, которое могло привести к разделению цепи? В это почти невозможно поверить».
Напомним, ранее в среду, 11 ноября, стало известно, что Infura и некоторые другие сервисы испытывают перебои в обслуживании. Это вызвало задержку в потоках котировок ETH и токенов ERC-20, некоторые биржи остановили вывод средств.
На момент публикации разработчики прододжают работы по восстановления функциональности сервиса.