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

Рассмотрим механизм устойчивого разветвления на специальном примере.

На высоте блока 4 возникает одноблоковое разветвление. Это тот тип самопроизвольного разветвления, который мы наблюдали ранее в статье «Разветвления структуры данных блокчейна». После майнинга блока 5 сеть выполняет преобразование с переходом к единой цепочке, и проблема разветвления разрешается.

Но позже, на высоте блока 6, возникает устойчивое разветвление (hard fork). Предположим, что вышла новая реализация клиента с изменениями правил консенсуса. Начиная с высоты блока 7 майнеры, начавшие работу с новой реализацией, принимают новый тип цифровой подписи — для примера назовем эту подпись «Smores», — основой которой уже не является алгоритм ECDSA. Сразу после этого узлы, запустившие новую реализацию, создают транзакцию, содержащую подпись Smores, а майнеры с обновленным программным обеспечением начинают майнинг блока 7Ь, содержащего эту транзакцию.

Любой узел или майнер, не обновивший программное обеспечение для проверки корректности новой цифровой подписи Smores, теперь не имеет возможности работать с блоком 7b. С их точки зрения, и транзакция с подписью Smores, и блок 7Ь, содержащий эту транзакцию, некорректны, так как в данном случае проверка основана на старых правилах консенсуса. Такие узлы отбрасывают блок 7Ь и транзакцию в нем, то есть не будут их распространять по сети. Майнеры, пользующиеся старыми правилами, не принимают блок 7Ь и продолжают майнинг блока-кандидата, родителем которого является блок 6.

В действительности майнеры, работающие по старым правилам, могут даже не получить блок 7Ь, если все узлы, с которыми они соединены, также продолжают использование старых правил, следовательно, не распространяют этот блок. В результате у таких узлов появляется возможность выполнить майнинг блока 7а, являющегося корректным по старым правилам и не содержащего транзакций с подписями Smores.

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