MSTR Cat

Блокчейн/Уровень III · Сеть/3.3 Консенсус и управление/Урок 3

Софт-форки и хард-форки

Асимметрия допустимости: почему ужесточение правил безопасно, а их ослабление раскалывает цепь

МатериалыЭксплорер блоков с историческими данными цепочкиРепозиторий BIP на GitHub для просмотра статусов предложений

Любопытство

  1. Почему сеть может ввести более строгие правила, не заставляя все ноды обновляться одновременно?
  2. Какое конкретное структурное изменение в августе 2017 года привело к отделению Bitcoin Cash от Bitcoin?
  3. Как ошибка в программном обеспечении в марте 2013 года породила две конкурирующие цепи, которых никто не планировал?

Исследование

  1. Софт-форк ужесточает правила консенсуса. Блоки и транзакции, допустимые по новым, более строгим правилам, остаются допустимыми и по старым, более мягким. Благодаря этой обратной совместимости необновлённые ноды продолжают принимать цепь, а обновлённые ноды применяют новые ограничения. Пока большая часть хешрейта соблюдает новые правила, сеть остаётся единой цепью; если нет, даже софт-форк может её расколоть, как это произошло в июле 2015 года.
  2. Хард-форк ослабляет или изменяет правила так, что ранее недопустимые структуры становятся допустимыми. Например, увеличение лимита размера блока делает допустимыми более крупные блоки. Если не все ноды обновятся, чтобы принимать эти новые структуры, сеть разделяется на две конкурирующие цепи с несовместимой историей. Такое разделение произошло 1 августа 2017 года, когда Bitcoin Cash принял больший размер блока, чем Bitcoin.
  3. Софт-форки требуют аккуратной активации, поскольку майнеры, применяющие новые правила, должны составлять большинство хешрейта. Если майнеры игнорируют сигнал или применяют устаревшие правила, цепь всё равно рискует расколоться. BIP9 (2015–2016) стандартизировал активацию через сигнализацию майнеров: софт-форк фиксировался (lock-in), как только 95% блоков за период из 2 016 блоков сигнализировали о готовности, после чего, спустя ещё один период, обновлённые ноды начинали его применять.
  4. Случайный форк марта 2013 года возник, когда крупный блок был принят версией 0.8, но отклонён версией 0.7 из-за ограничения базы данных. Сеть раскололась, и проблему решила не победа более длинной цепи, а то, что майнеры сознательно вернулись на 0.7, и совместимая с 0.7 ветвь обогнала другую. Это показало, что непреднамеренные различия между версиями могут расколоть сеть и что в чрезвычайной ситуации решением может стать скоординированное решение людей, идущее вразрез с тем, у какой ветви в тот момент было больше работы.
  5. Исторические примеры иллюстрируют эти механизмы. P2SH (Pay-to-Script-Hash) был введен в 2012 году в рамках «мягкого форка», что позволило использовать сложные скрипты при сохранении совместимости с более старыми узлами. SegWit (Segregated Witness) был введен 24 августа 2017 года на блоке 481,824; он позволил вынести данные подписи из той части транзакции, которая используется для расчета ее идентификатора, что устранило проблему изменчивости транзакций и повысило ее объем. Taproot был введен в ноябре 2021 года на блоке 709,632.
  6. Проверьте разделение Bitcoin Cash на двух сервисах для анализа блоков. Блок 478,558 — это последний общий для обеих цепей блок. Посмотрите на блок 478,559 в сервисе для анализа блоков Bitcoin и в сервисе для анализа блоков Bitcoin Cash: это разные блоки, причем блок Bitcoin Cash имеет размер больше 1 МБ, что по старым правилам Bitcoin было запрещено. Начиная с этого момента каждая цепь считает блоки другой недействительными.

Ключевые факты

  • Софт-форки ужесточают правила; новые допустимые структуры остаются допустимыми и по старым правилам, что обеспечивает обратную совместимость.
  • Хард-форки ослабляют правила; новые допустимые структуры по старым правилам были недопустимы, что создаёт риск раскола сети, если изменение не принято повсеместно.
  • Bitcoin Cash отделился от Bitcoin 1 августа 2017 года из-за разногласий по поводу лимитов размера блоков.
  • Форк марта 2013 года был случайным расколом между версиями Bitcoin-Qt/bitcoind 0.7 и 0.8, вызванным недокументированным ограничением базы данных в версии 0.7.
  • SegWit был активирован в рамках мягкого форка 24 августа 2017 года на блоке 481,824.
  • BIP9 (2015–2016) позволял майнерам сигнализировать о готовности к софт-форку; для фиксации (lock-in) требовалось 95% блоков за период из 2 016 блоков.

Упражнение девять, шесть, три, один

9СобратьПеречислите 9 крупных изменений консенсуса в истории Bitcoin с 2009 по 2023 год. Для каждого укажите год и то, был ли это софт-форк или хард-форк.
6СгруппироватьСгруппируйте эти 9 изменений в 6 категорий по их влиянию: увеличение пропускной способности, улучшение безопасности, добавление функций, исправление ошибок, случайные форки и неудавшиеся предложения.
3Выделить главноеСократите эти группы до 3 основных причин, по которым изменение внедряют как софт-форк, а не как хард-форк.
1КристаллизоватьНапишите одно предложение, объясняющее фундаментальное различие в наборах допустимых данных между софт-форком и хард-форком.

Проверка фактов

Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.

Открыть в интерактивной академии →

EN PT ES ZH JA KO DE FR MS