10 июля произошло разветвление тестовой сети Segwit2x - одного из самых популярных предложений по масштабированию Биткоина, поддержанного большинством майнеров. Это привело к тому, что создание новых блоков полностью прекратилось примерно на 20 часов.
Что такое Segwit2x?
Предложенный сообществу Барри Зильбертом проект Серхио Лернера, Segwit2X, представляет собой изменение протокола, включающее в себя активацию Segregated Witness путем выражения поддержки 80% хэшрейта сети с последующим хардфорком, который приведет к увеличению размера блока до 2Мб через три месяца после активации. Этот компромисс был достигнут спустя два года дебатов вокруг различных решений по масштабированию, и получил поддержку крупнейших игроков индустрии.
Несколько недель назад была запущена отдельная тестовая сеть для проверки среды, в которой новое ПО будет разрабатываться, а также будет отслеживаться потенциальное влияние обновления на реальную сеть Биткоина. Тестнет – отдельный блокчейн, с отдельными майнерами, монетами, узлами и что наиболее важно – собственными правилами консенсуса, которые определяют, действителен блок или нет.
Случайный форк
Команда разработчиков столкнулась с серьезным препятствием – в понедельник тестнет непреднамеренно разветвился, что привело к выходу сети из строя почти на целые сутки и создало две несовместимых тестовых сети. Ни один блок не был создан за это время, так как разработчики бросили все силы на поиск причины и решения возникшей проблемы.
btc1 testnet irrevocably forks. https://t.co/GNH84Jblq4
— UASF Cosmic (@bhec39) 10 июля 2017 г.
Причина форка заключалась в том, что когда цепочка дошла до определенного номера блока, размер первого блока, который начал цепочку, разрешающую блоки размером в 2 МБ, должен был превышать 1 МБ. Поскольку это тестовая сеть и отсутствует реальная пользовательская база, mempool (пул неподтвержденных транзакций) был по существу пуст. Не было сделано достаточно транзакций, чтобы получить блок размером более 1 МБ, что привело к форку сети.
Два мнения
Большая часть сообщества, которая выступает против этого предложения, называет произошедшее окончательным доказательством того, что программисты не справляются с задачей по работе над ПО, которое контролирует индустрию почти в 40 миллиардов долларов. Другие утверждают, что, учитывая приближающийся срок даты выпуска обновления, который назначен на 21 июля, разработчики не успеют найти все возможные ошибки в коде.
Команда, возглавляемая Джеффом Гарзиком (Jeff Garzik), сделала заявление, объяснив, что форк – результат того, что майнер тестнета активировал форк без необходимой подготовки других участников тестовой сети. Хотя это и является проблемой, которую нужно решить, разработчики утверждают, что главная цель тестнета – тестирование нового клиента, выполняется успешно. В сообщении рассылки рабочей группы Segwit2x Гарзик написал:
«Кто-то добавил майнинговую мощность к testnet5 и ускорил ее до точки активации HF-on-block-X. Несмотря на внезапность, это в любом случае хорошее полевое испытание».