Публикация открытого письма, опубликованного в списке рассылки SegWit2X, поведала об устранении хард форка SegWit2X. В список рассылки вошли СЕО BitGo Майк Бельше, СЕО ShapeShift Эрик Вурхес, СЕО Xapo Wences Casares, СЕО Blockchain Питер Смит, основатель Bitmain Jihan Wu и ведущий разработчик SegWit2X Джефф Гарзик.

Майнеры продолжают майнить

До завершения SegWit2X ведущими разработчиками проекта и основными приверженцами, некоторые майнеры по-прежнему работали с этим программным обеспечением. По этому поводу разработчик Bitcoin Core Питер Тодд писал: «Нет гарантии, что с SegWit2X ничего не произойдет, - Бэлше не может остановить майнеров от запуска этого программного обеспечения, - но это гораздо менее вероятно».

Как и предсказал Тодд, несколько майнеров по-прежнему использовали программное обеспечение после того, как ведущий разработчик проекта уже оставил проект.

На блоке 494 782 два блока перед обновлением должны были выполняться как хард форк, но возникла критическая ошибка, из-за чего клиент SegWit2X вышел из строя. Он отказал майнерам или операторам нод в запуске измененного клиента.

По мнению высокопоставленного разработчика биткойнов и главного архитектора проекта Paxos Джимми Сонга, в коде были обнаружены сразу две критические ошибки. Одна из них была выявлена сразу же, а другая была не такой заметной, и была обнаружена лишь в результате тщательного тестирования.

Он пояснил, что: «В коде btc1 было ограниченное количество различий по сравнению с Bitcoin Core. В общей сложности было около 500 строк изменений, большинство из которых не были критичными. И все же, в 100 или около того изменившихся строках было по крайней мере две ошибки, чтобы повлечь за собой жесткую вилку в блоке 494 784».

Одна из двух критических ошибок включала в себя функцию, называемую VersionBitsState, которая необходима для обработки другой функции в коде SegWit2X с использованием SegWit и увеличения размера блока биткойнов. Способ, которым была вызвана функция VersionBitsState в коде SegWit2x, был ошибочным, и, как следствие, это привело к завершению работы обновления клиента.

С опытными разработчиками биткойнов, такими как команда разработчиков Bitcoin Core, дефект был бы найден во время тщательного тестирования. Джимми Сонг отметил, что ошибка не была обнаружена на этапе тестирования SegWit2x, потому что за изменениями в коде SegWit2x наблюдал только один администратор.

Вторая ошибка была обнаружена в коде BlockAssembler, который отвечает за запуск кода для создания новых блоков. Поэтому любые недостатки или ошибки в коде BlockAssembler могут привести к серии ошибок, которые могут привести к отключению клиента или сети.

Проблемы с сетью и уязвимости

Если бы хард форк SegWit2x продолжился, токен или B2X имели бы серьезные проблемы с сетью, что привело бы к нестабильности сети и уязвимости. Команда разработчиков, возглавляемая Гарзиком, тогда должна была бы выполнить несколько хард форков для обновления и исправления ошибок.

Основная проблема с кодом и ее командой разработчиков заключалась в том, что на весь проект был один кодер в лице Джеффа Гарзика и один аналитик в лице opetruzel. Тогда как команды разработчиков bitcoin, ethereum и других блокчейн сетей состоят из сотен разработчиков и аналитиков в сообществе разработчиков с открытым исходным кодом.

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

Естественно, нет никаких сомнений в отношении таланта команды разработчиков, но, похоже, им не хватало необходимого сообщества для принятия мер. Если отбросить остальные предположения, возможно, новые обновления придется ждать какое-то время.