Изменение правил консенсуса в майнинге

Правила консенсуса определяют корректность и законность (валидность) транзакций и блоков. Эти правила являются основой сотрудничества между всеми биткойн-узлами и отвечают за объединение всех локальных версий и вариантов в единую полностью согласованную структуру данных блокчейна для всей биткойн-сети в целом.

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

Устойчивые разветвления

Выше, в статье «Разветвления структуры данных блокчейна», мы наблюдали за тем, как биткойн-сеть может ненадолго разделяться на две части, создающие две различные ветви цепочки блокчейна на короткое время. Мы видели, что этот процесс возникает естественным образом как составной элемент обычного функционирования сети, и убедились в том, что сеть всегда возвращается к единой общей структуре блокчейна после майнинга одного или нескольких блоков.

Существует и другой сценарий, при котором сеть может разделиться на две части, соответствующие двум цепочкам: изменение правил консенсуса. Этот тип разветвлений называется устойчивым разветвлением (hard fork), так как после такого разветвления сеть не выполняет преобразования в единую цепочку. Вместо этого две цепочки развиваются независимо друг от друга. Устойчивые разветвления возникают, когда часть сети работает под управлением набора правил консенсуса, отличающегося от набора правил консенсуса в остальной части сети. Такая ситуация может возникать из-за программной ошибки или вследствие преднамеренного изменения реализации правил консенсуса.

Устойчивые разветвления можно использовать для изменения правил консенсуса, но при этом потребуется координация действий всех участников системы. Все узлы, которые не выполнили обновления с целью перехода на новые правила консенсуса, лишаются возможности участвовать в работе механизма консенсуса и принудительно перемещаются в отдельную цепочку в момент устойчивого разветвления. Таким образом, изменения, вводимые устойчивым разветвлением, можно считать «несовместимыми снизу вверх» (not forward compatible), то есть с этого момента система без обновления не способна работать с новыми правилами консенсуса.