Устойчивые разветвления: ПО, сеть, майнинг и цепочка

Для разработчиков программного обеспечения термин «разветвление» (fork) имеет другой смысл, а термин «устойчивое разветвление» (hard fork) только добавляет путаницу. В сфере разработки программного обеспечения с открытыми исходными кодами разветвление происходит, когда группа разработчиков выбирает другой план развития («дорожную карту») ПО и приступает к альтернативной реализации проекта с открытым исходным кодом. Мы уже рассматривали два условия, которые приводят к устойчивому разветвлению: программная ошибка в правилах консенсуса и преднамеренное изменение правил консенсуса. В случае преднамеренного изменения правил консенсуса разветвление версий программного обеспечения предшествует устойчивому разветвлению. Но для возникновения этого типа устойчивого разветвления обязательно должна быть разработана, принята как основная и запущена в эксплуатацию новая программная реализация правил консенсуса.

ения правил консенсуса являются Bitcoin XT, Bitcoin Classic и самая свежая версия Bitcoin Unlimited. Тем не менее ни одно из этих разветвлений версий ПО не привело к устойчивому разветвлению. Несмотря на то что разветвление версий ПО является необходимым предварительным условием, само по себе оно недостаточно для возникновения устойчивого разветвления. Для создания устойчивого разветвления альтернативная реализация ПО и определяемые ею новые правила должны быть приняты и активированы майнерами, кошельками и промежуточными узлами. Но, с другой стороны, существуют многочисленные альтернативные реализации Bitcoin Core и даже программные «форки», которые не изменяют существующих правил консенсуса, за исключением исправления явных ошибок, и могут совместно работать в сети и взаимодействовать друг с другом без создания устойчивых разветвлений.

Правила консенсуса могут различаться в явной и очевидной форме в процедуре валидации (проверки корректности и легальности) транзакций и блоков. Кроме того, правила консенсуса могут иметь не столь явные и не сразу заметные различия в конкретных реализациях правил, когда они применяются к биткойн-скриптам или к простейшим криптографическим объектам, таким как цифровые подписи. Наконец, правила консенсуса могут различаться совершенно непредвиденным образом из-за неявно подразумеваемых ограничений консенсуса, определяемых системными ограничениями или деталями реализации. Для последнего варианта примером может служить обнаруженное непредусмотренное устойчивое разветвление при обновлении Bitcoin Core с версии 0.7 на версию 0.8, которое было вызвано ограничениями реализации ПО Berkley DB, используемого для хранения блоков.