- Вернуться к меню
- Вернуться к менюЦены
- Вернуться к менюИсследовать
- Вернуться к менюМероприятия
- Вернуться к менюПартнерский материал
- Вернуться к меню
- Вернуться к меню
- Вернуться к менюВебинары и Мероприятия
«Неанонсированный хард-форк» Ethereum пытался предотвратить тот самый сбой, который он вызвал
Хард-форк, разделивший цепочку Ethereum на две части, был активирован намеренно, что поставило под сомнение координацию клиентов Ethereum.

Вывод:
- Основная часть экосистемы DeFi Ethereum сегодня прекратила работу после того, как скрытая ошибка в коде Ethereum разделила историю транзакций сети на две части.
- Раскол произошел из-за изменения кода, которое было тайно вставлено в предыдущее обновление Geth; некоторые операторы узлов Ethereum проигнорировали обновление, которое, по иронии судьбы, было призвано предотвратить тот самый раскол, который произошел.
- Узлы, которые не обновились, считали, что обновление незначительное, и не знали, что оно включает изменение в архитектуре консенсуса Ethereum.
- Вскрытие опубликованный сегодня Geth, указывает на то, что ошибка была вызвана намеренно. Этот случай, возможно, является самой большой проблемой Ethereum с момента форка DAO в 2016 году и поднимает вопросы о часто рекламируемой децентрализации Ethereum и эффективности координации разработчиков в Ethereum 2.0.
Сначала, это была очевидная проблема с Infura, серверы под управлением ConsenSys, которые KEEP большинство приложений децентрализованных Финансы (DeFi) с сетью Ethereum .
Инфурапошел вниз вокруг8:00 UTC среда, а вместе с ним и некоторые из самых популярных приложений Ethereum, такие как Metamask, MakerDAO, Uniswap, Compound и MyCrypto, среди прочих. Вскоре после этого Binance остановили торговлю Ethereum после того, как заметил конфликтующие транзакции на своем узле Ethereum . Поскольку другие биржи также приостановили торговлю, реальная проблема стала ясна: ошибка в клиенте Go Ethereum (Geth), код которого лежит в основе 80% приложений Ethereumразделил блокчейн Ethereum на две части.
Читать дальше: Разработчики Ethereum откладывают хардфорк Berlin, чтобы развеять опасения по поводу централизации клиентов
Две конфликтующие истории транзакций означали, что пользователи Ethereum временно взаимодействовали с разными версиями блокчейна Ethereum . Это не только вызывало задержки, но и подвергало риску средства пользователей, выбивая большинство приложений DeFi Ethereum на несколько часов.
Infura исправила проблему, как и другие поставщики услуг, пострадавшие от сбоя, обновив свои узлы. Эти заинтересованные стороны использовали старую версию Geth, содержащую ошибку, которую разработчики Ethereum молча исправили в недавнем обновлении — обновлении, которое Infura и Blockchair, среди прочих, проигнорировали.
Разработчики сообщили CoinDesk , что помимо этих двух поставщиков услуг пострадали и другие пользователи Ethereum и поставщики кошельков, поскольку они T обновили свой код.
Фиаскокритики бросают вызов Ощущаемая децентрализация Ethereum, в то время как заинтересованные стороны задаются вопросом, почему изменение было реализовано Secret, без координации между Geth и другими командами разработчиков.
Для некоторых этот раскол является самой серьезной проблемой для Ethereum со времен печально известного взлома DAO в 2016 году.
In my opinion, today’s consensus failure in #Ethereum🦄 shouldn’t be underestimated and should be considered as the most serious issue Ethereum has faced since the DAO debacle 4 years ago. An investigation is in order.
— Nikita Zhavoronkov (@nikzh) November 11, 2020
Разделение цепи Ethereum: как это произошло
В только что опубликованномпосмертноПетер Силадьи, руководитель команды Ethereum, написал, что форк «был (намеренно) запущен в сети Ethereum ».
Представитель изOptimism, проект масштабирования Ethereum , недавно опубликованочто проект намеренно вызвал ошибку, исправленную обновлением Geth, что привело к разветвлению.
Когда произошел форк, были созданы две версии реестра транзакций Ethereum : ONE с транзакциями от обновленных клиентов Geth и ONE с транзакциями от старых клиентов Geth (например, Infura).
«Исправление было внедрено несколько месяцев назад, и только сегодня поступила транзакция, которая привела к этому расколу», — рассказал Никитя Жаворонков, ведущий разработчик Blockchair, обозревателя блоков Ethereum , пострадавшего от форка, в прямом сообщении CoinDesk .
Читать дальше: Извлек ли Ethereum какие-либо Словарь из атаки на DAO стоимостью 55 млн долларов?
Посчитав, что обновление было «незначительным изменением кода», Blockchair T стал утруждать себя обновлением, потому что это T стоило бывремя простоя их сервисов. Но более чем незначительное, разработчики, по-видимому, внесли тихое изменение в механизм консенсуса Geth в обновлении.
«Команда Geth действительно изменила консенсусвыполнение «Однако в выпуске v1.9.17 команда не создала никаких новых правил, о которых сообщество Ethereum T знало или с которыми не соглашалось», — пишет Силади в посте, отмечая, что эти правила были изложены в Предложение по улучшению Ethereumтри года назад.
«Если вы T считаете случайное внесение ошибки «консенсусным обновлением», то вы также не должны считать «консенсусным обновлением» исправление этой ошибки несколько месяцев спустя», — утверждал он.
Еще одно вскрытиеВ отчете, опубликованном Ethereum Foundation 12 ноября, говорится, что эксплойт произошел «в блоке 11234873, транзакция 0x57f7f9», а также добавляется, что длина цепочки меньшинства для несинхронизированных узлов составляет примерно 30 блоков.
Призыв к прозрачности
По иронии судьбы, форк был вызван той самой ошибкой консенсуса, которую обновление Geth стремилось исправить.
Программа вознаграждений Ethereumнедавно признанныйДжон Янг, новичку в сообществе разработчиков открытого исходного кода Ethereum, за обнаружение этой и другой уязвимости. Разработчик Geth и эксперт по безопасности Ethereum Мартин Свенде твитнул Изменения в обновлении устраняют выявленные проблемы, намекая, что эта катастрофа — «напоминание о необходимости KEEP ваш узел(ы) в актуальном состоянии!»
Свенде продолжаетсказать в ветке твитовчто разработчики не анонсировали крупное изменение, чтобы не привлекать внимание к недостатку. В своем собственном объяснении Силади сказал, что «тихое» исправление ошибки привело к меньшему «разрушению».
According to this not only did ETH have one of its worst bugs ever but the devs botched the disclosure of it and didn’t even mention it to likely the largest operator of ETH full nodes. https://t.co/Ksasw6haHT
— Matt Corallo (@TheBlueMatt) November 11, 2020
Тем не менее, другие заинтересованные стороны Ethereum задаются вопросом, почему об ошибке нельзя было сообщить конфиденциально командам, работающим над Geth.
«Каждый крупный проект, с которым команда разработчиков тесно сотрудничает, должен иметь контактное лицо по безопасности, которое может помочь управлять и координировать плавное обновление, и мы должны работать вместе», — сказал Мэтт Луонго, основатель Thesis, в интервью CoinDesk.
«Когда форки становятся сюрпризом, любой, кто построил что-то на основе Ethereum , как это сделали мы, может потерять деньги», — продолжил он.
Тезис строитKeep Network, которая выпускает tBTC, форма токенизированногоBitcoin для блокчейна Ethereum . Луонго сказал, что форк подверг средства пользователей tBTC риску, но не из-за разделения цепи, которое было устранено после того, как Infura и другие обновили свои клиенты Geth.
Это потому, что простой означал, что пользователи, делающие ставки Ethereum в Keep Network, T могли координировать свои действия с основной цепочкой Ethereum ; в результате они рисковали, что часть их ставок «урежется» из-за несоответствия их фидуциарным требованиям. Thesis сообщил CoinDesk , что ни один Bitcoin , который служит обеспечением токенов tBTC, никогда не подвергался риску.
Более того, случай с Thesis — лишь ONE из примеров того, какие помехи создал форк для любого, кто пытался использовать «меньшинственную цепочку» во время раскола.
Несмотря на проблемы, вызванные разделением, цены на эфир, собственную Криптовалюта блокчейна Ethereum , выросли на 4,6% в среду после появления новостей, что говорит о том, что трейдеры не видят системной или долгосрочной угрозы в этом сбое.
Собираем осколки
Жаворонков сказал, что путаница не была злонамеренной, но что «если бы [Geth] знали, что такое может произойти, они должны были подготовить руководство для операторов узлов». Луонго поделился схожим разочарованием, заявив, что команда Geth — «хорошие разработчики», но им не хватает «опыта управления инфраструктурой» и что они «недостаточно финансируются».
Комментарии отражают разочарование, которое испытывают некоторые заинтересованные стороны Ethereum по поводу того, почему Geth держал изменение консенсуса в Secret. Идя дальше, почему Infura, основа децентрализованной Финансы экосистемы Ethereum, среди прочих, не знала об ошибке, нарушающей консенсус, в коде Ethereum до это было спровоцировано?
We’ve had to discretely fix bugs in Monero (on several occasions) for fear of them being exploited if the fix is made public, and this is exactly how we’ve gone about it, eg. in this instance in 2017.https://t.co/lnxhtZDZEz
— Riccardo Spagni (@fluffypony) November 11, 2020
«Это BIT серая зона и требует обсуждения каждого случая отдельно», — объясняет Силади в своем посте. «Мы все согласны с тем, что прозрачность — это король, и что мы должны стремиться к ней как можно больше, но также важно рассмотреть все детали, прежде чем головы полетят.
Читать дальше: Обратный отсчет Ethereum 2.0 начинается с выпуска депозитного контракта
«В случае Ethereum требуется много времени (недели, месяцы), чтобы заставить операторов узлов обновиться даже до запланированного хардфорка. Подчеркивание того, что релиз содержит важные исправления консенсуса или DoS, всегда несет в себе риск того, что кто-то попытается обойти обновлятелей и вывести сеть из строя. Безопасность через неизвестность — это определенно не то, к чему стоит стремиться, но отсрочка потенциальной атаки на достаточное время, чтобы сделать большинство операторов узлов неуязвимыми, может стоить временного «удара» по прозрачности», — продолжил он.
В конечном итоге команда Гета посчитала, что раскрытие информации об уязвимости слишком рискованно, поэтому они решили, что тайная рассылка обновления будет наименее рискованной.
«Мы бы утверждали, что это действительно сработало», — говорит Силади. Несмотря на то, что обновление «приняло неожиданный оборот из-за вчерашнего разделения сети», команда Гета по-прежнему считает, что сохранение проблемы в тайне «было правильным решением»
Поскольку Ethereum приближается к своему самому масштабному обновлению в истории ETH 2.0, этот случай может стать критически важным исследованием в области клиентской координации для экосистемы Ethereum .
«Самое важное здесь, на мой взгляд, то, что люди, которые сделали этот призыв, открыто говорят о своих доводах, признают все ошибки и развиваются», — сказал Луонго. «Monero хорошо справлялся с [ошибками консенсуса] в прошлом, как и Bitcoin и Zcash. Существует множество примеров, и хотя всегда сложно координировать действия в рамках отрасли, избегать любой координации крайне опасно.
«Я надеюсь, что этот форк приведет к более тесным отношениям и переосмыслению того, как проекты на Ethereum взаимодействуют с разработкой клиентов».
Обновлять 00:36 UTC 12 ноября– Эта статья была обновлена, чтобы лучше передать, что «хард-форк» не был преднамеренным изменением кода, а разделением цепочки, вызванным ошибкой консенсуса, которую разработчики Ethereum тихо исправили в выпуске Geth v1.9.17.
Обновлять 21:02 UTC 12 ноября- Статья была обновлена и теперь включает в себя информацию, полученную в ходе расследования раскола Ethereum Foundation.
Colin Harper, Blockspace Media
Colin writes about Bitcoin. Formerly, he worked at CoinDesk as a tech reporter and Luxor Technology Corp. as head of research. Now, he is the Editor-in-Chief of Blockspace Media, and he also freelances for CoinDesk, Forbes and Bitcoin Magazine. He holds bitcoin.
