Как «неанонсированный хард форк» Ethereum вызвал раскол, который он должен был предотвратить

Делитесь и голосуйте:

В сети криптовалюты Ethereum произошел масштабный сбой в среду. Изначально предполагалось, что он был вызван Infura – поддерживаемыми Ethereum-студией ConsenSys серверами для обеспечения функционирования большинства приложений в сфере децентрализованных финансов (DeFi) и прочих сервисов.

Infura перестал работать около 11:00 МСК, вместе с чем была нарушена функциональность таких популярных приложений, как Metamask, MakerDAO, Uniswap, Compound и MyCrypto. Вскоре после этого биржа BINANCE обнаружила конфликтующие транзакции и остановила вывод средств.

Постепенно стало проясняться, что истинная причина кроется в баге клиента Go Ethereum (Geth), используемого 80% приложений, который вызвал раскол сети на две отдельные цепи. Наличие различающихся историй транзакций говорит о том, что пользователи некоторое время взаимодействовали с разными версиями блокчейна Ethereum.

Позднее Infura и остальные обновили свои клиенты, что позволило восстановить работоспособность большинства сервисов, однако на выяснение причин и перевод инфраструктуры на актуальное ПО потребовалось несколько часов. Все они использовали старые версии Geth и оказались отделены от пользователей нового клиента в результате «неанонсированного хард форка».

На фоне происшествия пользователи стали задаваться вопросами о децентрализации Ethereum и о том, почему разработчики Geth не скооперировались с другими командами для гладкого прохождения обновления. Разработчик обозревателя блокчейна Blockchair Никита Жаворонков считает «провал консенсуса» в среду самым серьезным инцидентом в Ethereum с момента форка The DAO в 2016 году.

Как это было

Ведущий разработчик Ethereum Петер Силадьи опубликовал отчет по поводу происшествия, подтвердив, что хард форк «был запущен преднамеренно». Представитель проекта Optimism, специализирующегося на масштабировании Ethereum, объявил, что именно его команда стоит за запуском хард форка.

«Мы посмотрели на Etherscan и увидели, что почти все ноды обновились до версии с поддержкой фикса. Тогда мы решили протестировать баг. Теперь понятно, что это было глупо. Мы не осознавали влияние небольшого числа нод, которые не были обновлены», – заявили в Optimism.

Хард форк представляет собой обновление, несовместимое с более ранней версией блокчейна. Таким образом, активация последнего обновления в сети Ethereum закономерно привела к возникновению двух цепей. В одной находились пользователи и сервисы, установившие обновленную версию Geth, в другой – не сделавшие этого.

«Фикс был внедрен несколько месяцев назад, и только сегодня была осуществлена транзакция, вызвавшая раскол», – заявил Жаворонков в разговоре с CoinDesk.

Blockchair считали, что новая версия ПО Geth содержит «небольшое изменение кода» и не стали ее устанавливать, так как это потребовало бы остановки сервиса.

«Команда Geth действительно изменила имплементацию консенсуса в релизе v1.9.17, однако команда не создавала никаких новых правил, о которых сообщество Ethereum не знало бы или с которыми не соглашалось бы», – написал Силадьи, добавив, что правила были установлены в предложении по улучшению Ethereum (EIP) три года назад.

Непредвиденные последствия

Примечательно, что хард форк изначально задумывался ради решения проблемы в консенсусе, которую он и вызвал. Разработчик Джон Янг, недавно присоединившийся к экосистеме Ethereum, получил вознаграждение за обнаружение этой и еще одной уязвимости. Разработчик Geth Мартин Холст Свенде объявил, что они не стали предупреждать сообщество об изменениях, так как не хотели привлекать внимание к уязвимости.

«Каждый крупный проект должен иметь контакты для уведомлений по поводу безопасности, что помогает проводить обновления слаженно и гладко. Когда хард форки происходят без предупреждения, все, кто создает на Ethereum, включая нас, могут потерять деньги», – заявил основатель Thesis Мэтт Луонго.

Thesis стоит за разработкой токенизированного биткоина tBTC. Луонго сообщил, что форк подверг риску активы пользователей tBTC, но не из-за раскола цепи, а из-за неработоспособности сервиса, в результате которого держатели токена невольно могли нарушить свои финансовые обязательства.

Несмотря на вызванные форком проблемы, цена эфира после появления новостей выросла на 4,6%, свидетельствуя о том, что трейдеры не видят в произошедшем угроз для долгосрочного благополучия Ethereum.

Разбор полетов

Жаворонков заявляет, что разработчики Geth сами не ожидали такого развития ситуации и, если бы могли предвидеть масштабный раскол, то наверняка объявили бы о хард форке. Луонго разделяет это мнение, называя команду Geth «хорошими разработчиками, которым не хватает опыта обслуживания инфраструктуры и финансирования».

Жаворонков также отметил, что разработчики не имели враждебных намерений. «Если бы Geth знали, что так может произойти, они подготовили бы руководство для операторов нод», – добавил он.

Участники сообщества продолжают недоумевать, почему о баге перед активацией форка для его устранения не знали даже в Infura, являющейся ключевым элементом экосистемы Ethereum.

«Это, в некотором роде, серая зона. Требуется индивидуальное обсуждение в каждом конкретном случае, – написал Силадьи. – Мы согласны с тем, что прозрачность необходима и к ней следует максимально стремиться, но также важно разобраться во всех деталях, прежде чем покатятся головы. В случае Ethereum требуется много времени (недели, месяцы), чтобы операторы нод обновились даже к запланированному хард форку. Подчеркивая, что релиз содержит важные фиксы консенсуса или DoS-атак, мы рискуем привлечь злоумышленников, которые попытаются вывести сеть из строя».

В конечном счете, команда Geth решила, что раскрытие уязвимости повлечет слишком большой риск, и оставила ее в тайне. «Мы утверждаем, что это сработало, хотя обновление и приняло неожиданный поворот во время вчерашнего раскола сети», - добавил Силадьи.

Теперь разработчикам предстоит извлечь урок из произошедшего касаемо координации клиентов на фоне приближения релиза Ethereum 2.0.

«Самое главное, что ребята прозрачны, признают ошибки и растут, – заявил Луонго. – Monero в прошлом хорошо справлялся с консенсусными багами, как делали это биткоин и Zcash. Существует множество примеров. Координировать всю отрасль всегда непросто, но избегать координации чрезвычайно опасно. Надеюсь, этот форк приведет к укреплению отношений и переосмыслению того, как проекты на базе Ethereum взаимодействуют с разработчиками клиентов».

Государство и общество

Ждем новостей

Нет новых страниц

Следующая новость