Спустя два дня после хардфорка «Ложный Дракон», сеть Эфириума испытывает новые проблемы. На этот раз, причиной стали не внешние атаки, а баг в Go Ethereum (geth) – одном из двух основных клиентов Эфириума. 24 ноября, на блоке номер 2 686 351 произошло нарушение консенсуса между клиентами geth и Parity.
По этому поводу Виталик Бутерин заявил в Reddit:
Журнал geth не смог отменить удаление аккаунта, когда в транзакции, которая удаляла пустые аккаунты, кончился газ. Ошибку вызвала эта транзакция. Мы идентифицировали ошибку, и сейчас тестируем исправленный код.
Рекомендуем биржам приостановить ввод/вывод средств до выхода исправленного клиента, а майнинговым пулам переключиться на Parity или остановить майнинг.
Как только выйдет новый клиент, пользователям нужно будет просто переключиться на новый geth, и он начнет синхронизацию с блока 2 686 351.
Проще говоря, произошло следующее:
При выполнении операции удалении пустого аккаунта (следствие сентябрьских атак на сеть, согласно предложению хардфорка EIP161), в транзакции кончился эфир, необходимый для оплаты комиссии за эту операцию. Согласно протоколу, клиент должен был отменить операцию удаления и вернуть сеть в предшествующее состояние, однако из-за ошибки в коде, geth этого не сделал и удалил аккаунт, в то время как Parity работал в соответствии с протоколом и отменил операцию. С этого момента началось рассогласование между клиентами или неожиданный форк, причем блоки Parity оказались в легитимной части цепи.
Происшедшее, как обычно, вызвало мгновенные панические продажи ETH: за 45 минут с появления первых недоуменных записей в Twitter до заявления Фонда Эфириума цена упала на 8 – 9%, после чего несколько стабилизировалась в районе 9.0 – 9.15 долларов.
Полные экономические последствия неожиданного форка станут известны только через 1–2 дня. Скорее всего, биржи не понесут убытков, поскольку все geth транзакции с большой вероятностью отрабатываются на ветви Parity. Пострадавшими окажутся майнеры – пользователи geth, которые продолжали майнить на неверной цепи.
Еще одно следствие: в очередной раз не лучшим образом выступили разработчики Фонда Эфириума, и напротив – команда Parity под руководством Гэвина Вуда ошибок не допустила.
Около двух часов назад опубликована версия клиента Geth 1.5.3, содержащая исправление этого бага, ее можно скачать на Github разработчиков. Биржевой курс эфира после выхода исправления также начал восстанавливаться.