БИТКОИН

Новый вид денег

«Необъявленный хард-форк» Ethereum пытался предотвратить сам сбой, который он вызвал


  • Большая часть экосистемы Ethereum DeFi исчезла ранее сегодня после того, как скрытая ошибка в коде Ethereum разделила историю транзакций сети на две части.
  • Разделение произошло в результате изменения кода, которое было тайком вставлено в предыдущее обновление Geth; некоторые операторы узла Ethereum проигнорировали обновление, которое, по иронии судьбы, должно было предотвратить возникшее разбиение.
  • Узлы, которые не обновлялись, считали, что обновление было незначительным, и не знали, что оно включает изменение согласованного дизайна Ethereum.
  • Результаты вскрытия, опубликованные сегодня Geth, показывают, что ошибка была вызвана намеренно. Этот случай, пожалуй, является самой большой проблемой Ethereum после форка DAO 2016 года, и он вызывает вопросы о часто рекламируемой децентрализации Ethereum и эффективности координации его разработчиков при переходе на Ethereum 2.0.

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

Infura закрылась около 8:00 UTC в среду, а вместе с ней и некоторые из самых популярных приложений Ethereum, такие как Metamask, MakerDAO, Uniswap, Compound и MyCrypto, среди прочих. Вскоре после этого Binance остановил торговлю Ethereum после обнаружения конфликтующих транзакций на своем узле Ethereum. Поскольку другие биржи также приостановили торговлю, реальная проблема стала очевидной: ошибка в клиенте Go Ethereum (Geth), код которого лежит в основе 80% приложений Ethereum, разделила блокчейн Ethereum на две части.

Подробнее: Разработчики Ethereum откладывают хард-форк в Берлине, чтобы решить проблемы централизации клиентов

Две конфликтующие истории транзакций означали, что пользователи Etheruem временно взаимодействовали с разными версиями блокчейна Ethereum. Это не только вызвало задержки, но и поставило под угрозу средства пользователей, отключив большинство приложений Ethereum DeFi на несколько часов.

Infura устранила проблему, как и другие поставщики услуг, пострадавшие от сбоя, обновив свои узлы. Эти заинтересованные стороны использовали старую версию Geth, которая содержала ошибку, которую разработчики Ethereum молча исправили в недавнем обновлении — обновлении, которое, среди прочего, проигнорировали Infura и Blockchair.

Разработчики сообщили CoinDesk, что помимо этих двух поставщиков услуг пострадали и другие пользователи Ethereum и поставщики кошельков, поскольку они не обновляли свой код.

Фиаско критики бросают вызов Предполагаемая децентрализация Ethereum, в то время как заинтересованные стороны задаются вопросом, почему изменение было внесено в тайне без координации между Geth и другими командами разработчиков.

Для некоторых разделение — самая серьезная проблема для Ethereum со времен печально известного взлома DAO в 2016 году.

Разделение сети Ethereum: как это произошло

В только что опубликованном вскрытии Питер Силаджи, руководитель группы Ethereum, написал, что форк «был (намеренно) запущен в сети Ethereum».

Представитель Optimism, масштабного проекта Ethereum, недавно опубликовал что проект целенаправленно вызвал ошибку, исправленную обновлением Geth, вызвав форк.

Когда произошел форк, он создал две версии реестра транзакций Ethereum: одну с транзакциями от обновленных клиентов Geth, а другую — с транзакциями от старых клиентов Geth (например, Infura).

«Исправление было развернуто несколько месяцев назад, и только сегодня произошла транзакция, которая вызвала этот раскол», — сказал CoinDesk в прямом сообщении Никития Жаворонков, ведущий разработчик Blockchair, исследователь блоков Ethereum, пострадавший от форка.

Подробнее: Научился ли Ethereum чему-нибудь из атаки DAO стоимостью 55 миллионов долларов?

Решив, что обновление было «незначительным изменением кода», Blockchair не стал беспокоиться об обновлении, потому что это не стоило бы время простоя их услуг. Но, что более чем незначительно, разработчики, по-видимому, внесли незаметные изменения в механизм консенсуса Geth в обновлении.

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

«Если вы не считаете случайное введение ошибки« согласованным обновлением », вам также не следует рассматривать исправление указанной ошибки через несколько месяцев в« согласованном обновлении »», — утверждал он.

Призыв к прозрачности

По иронии судьбы, форк был вызван той самой консенсусной ошибкой, которую пытается исправить обновление Geth.

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

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

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

Подробнее: Через 2 года после исправления обнаружена «высокая» ошибка в программном обеспечении Биткойн

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

«Когда форки становятся неожиданностью, любой, кто построил на Ethereum, как мы, может потерять деньги», — продолжил он.

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

Это связано с тем, что время простоя означало, что пользователи, размещающие Ethereum в Keep Network, не могли координировать свои действия с основной цепью Ethereum; в результате они рисковали «урезать» часть своих долей за невыполнение своих фидуциарных требований.

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

Собирать кусочки

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

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

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

Подробнее: Обратный отсчет Ethereum 2.0 начинается с выпуска депозитного контракта

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

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

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

Поскольку Ethereum приближается к своему крупнейшему обновлению в Eth 2.0, этот случай может стать важным исследованием в координации клиентской поддержки экосистемы Ethereum.

«Самым важным здесь, ИМО, является то, что люди, которые сделали этот звонок, прозрачны в своих рассуждениях, признают любые ошибки и растут», — сказал Луонго. «Monero имеет дело с [consensus bugs] хорошо в прошлом, как и Биткойн и Zcash. Можно привести множество примеров, и, хотя всегда сложно координировать деятельность в отрасли, отказ от какой-либо координации чрезвычайно опасен.

«Я надеюсь, что этот форк приведет к более тесным отношениям и переосмыслению того, как проекты на Ethereum взаимодействуют с разработкой клиентов».

Обновить 00:36 UTC Эта статья была обновлена, чтобы лучше передать, что «хард-форк» был не преднамеренным изменением кода, а разделением цепочки, которое было вызвано консенсусной ошибкой, которую разработчики Ethereum незаметно исправили в выпуске Geth v1.9.17.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *