Случайные форки (разветвления)
Когда два майнера находят валидные блоки почти одновременно, разные части сети на короткое время видят разные кончики цепи (chain tip). Биткоин разрешает это консенсусом Накамото: узлы следуют цепи с наибольшей суммарной проделанной работой Proof of Work («самой длинной» / «тяжёлой»). Проигравший блок становится устаревшим (orphaned); его транзакции возвращаются в мемпул, если не конфликтуют с победившей историей.
Такой форк — нормальное сетевое явление, а не смена правил протокола.
Основа: Изобретаем Биткоин. Глава 5: безопасность реестра, разветвления.
Софтфорки и хардфорки (смена правил)
Софтфорк: новые правила строже (или расширяют множество валидных блоков совместимо со старыми клиентами). Старые узлы по-прежнему принимают блоки, созданные по новым правилам. Пример из источников: лимит 1 МБ на размер блока (сентябрь 2010) — старые узлы продолжали считать меньшие блоки валидными.
Хардфорк: правила меняются несовместимо — ранее недействительное становится действительным (или наоборот так, что клиенты расходятся). Не обновившиеся узлы отвергают новые блоки; при сохранении обеих сторон получаются две цепи и фактически два актива.
В источниках Bitcoin Cash (август 2017) приводится как хардфорк из-за спора о размере блока и комиссиях; большинство полных узлов и экономической активности осталось на цепи с действовавшим тогда ограничением размера/веса блока — её вики называет Биткоином.
Основа: Изобретаем Биткоин. Глава 8: кто задаёт правила.
Исторический пример: форк 11 марта 2013 года
11 марта 2013 года сеть пережила не просто кратковременное “естественное” разветвление, а разделение цепочки из‑за несовместимого поведения разных версий ПО: узлы 0.7 и 0.8 расходились во мнении о валидности части блоков. Ключевая деталь из анализа инцидента: на тот момент переход на 0.8 содержал изменение (Berkeley DB → LevelDB), которое в сочетании с настройками базы данных приводило к расхождению поведения в сети. Поэтому попытка “просто обновить всех” могла закрепить длительный раскол.
Решение, к которому быстро пришли разработчики и участники экосистемы, было контринтуитивным: вместо ускорения обновления на 0.8 — побудить майнеров откатиться на ветку, совместимую с 0.7, чтобы быстрее восстановить единый консенсус.
В процессе заметную роль сыграли:
- скорость “человеческого” консенсуса вокруг плана действий (обсуждения на
#bitcoin-dev); - возможность быстро донести рекомендацию до участников;
- координационный эффект крупных майнеров/пулов, которые могли резко сместить хешрейт в сторону предпочтительной ветки.
В материалах также отмечается, что во время инцидента проявлялись риски для сервисов (включая риски двойной траты) при продолжительном разделении цепи (chainsplit).
Основа: Анализ форка Биткоина 2013 года.
Консенсус-форки в истории Биткоина (вкратце)
В отдельном историческом обзоре перечисляется 19 значимых событий, связанных с изменениями/инцидентами вокруг правил консенсуса (с оговоркой, что один “случайный” хардфорк фактически “провалился”). Отмечается, что как минимум три инцидента приводили к заметному разделению цепочки примерно на 51, 24 и 6 блоков (2010, 2013 и 2015 годы соответственно).
Основа: Полная история консенсус-форков Биткоина.
Управление на практике
Форки показывают: «Биткоин» — это то программное обеспечение и те правила, которые запускают и принимают пользователи, продавцы и покупатели, и операторы узлов, а не декларация одного автора или компании. Хардфорк без широкого консенсуса даёт альткоин с общей историей до разветвления; он не меняет лимит 21 млн в основной сети, которая этот лимит соблюдает.
Бомбы сложности: принуждение к обновлениям в Ethereum
В качестве контраста в материалах про Ethereum описывается “бомба сложности” — механизм, который экспоненциально ухудшает работу цепочки на Proof-of-Work (вплоть до “замораживания”), тем самым подталкивая участников принимать обновления/хардфорки, если они хотят сохранить работоспособность сети. В этой оптике возможность “остаться на старых правилах” без принудительного ухудшения работы сети рассматривается как важная часть пользовательских гарантий Биткоина.
Основа: Бомбы сложности Ethereum как принудительный механизм.
Источники
- Изобретаем Биткоин. Глава 5: безопасность реестра, разветвления
- Изобретаем Биткоин — глава 8: кто задаёт правила, софт/хардфорки
- Война за размер блока
- Анализ форка Биткоина 2013 года
- Полная история консенсус-форков Биткоина
- Бомбы сложности Ethereum как принудительный механизм