Хардфорк и софтфорк

Любое программное обеспечение требует регулярных обновлений. С централизованными системами всё довольно просто – сначала обновляется сервер, а все остальные уже тянут от него обновления. А как быть с децентрализованными? Например, криптовалютами? Точно также. Только в процессе возникают явления, называемые форками (вилками, но это не переводится).

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

И вот когда большая часть узлов принимает решение о внесении изменений в такой протокол, возникает ситуация разделения – форк. Которые бывают двух видов – хардфорки и софтфорки.

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

Софтфорк

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

В качестве примера, можно взять следующую ситуацию. Новый протокол уменьшает максимальный размер блока с 3 мб до 2 мб. Если не обновившийся узел выдаёт в результате майнинга блок в 2 мб – он без проблем встраивается в основную цепочку. Если же 2,5 мб – то обновившиеся узлы уже не принимают его в качестве достоверного. Такой блок может прикрепляться к общему массиву, но достраивать цепочку от него дальше смогут только устаревшие узлы. Так что эта цепочка довольно быстро прекратиться. Поэтому для сохранения возможности получать вознаграждение за работу над актуальной цепочкой, узлы будут постепенно обновляться.

Хардфорк

Это такое изменение протокола, при котором устаревшие узлы вообще не могут больше взаимодействовать с основной цепочкой. Как правило, такое изменение протокола существенно меняют базовые условия, либо – создают новый независимый блокчейн.

Представим ситуацию, в которой рекомендованный минимальный размер блока увеличивается с 2 мб до 4 мб. Узлы, использующие старый протокол, вообще не воспринимают валидными новые блоки, поэтому – продолжают выстраивать цепочку, основываясь на старом протоколе.

Кроме того, хардфорки бывают двух видов – запланированные и противоречивые. Первый вариант – ситуация, когда большая часть участников сети соглашается перейти на новые правила. Новая цепочка становится более достоверной, согласно принципу PoW, а те узлы, которые так и не обновились, продолжают работать в «новой системе» со значительно сниженными вычислительными мощностями, поэтому и награду получают существенно меньшую.

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

Если упрощать, то если у человека на момент разделения было 100 монет А, то после разделения и изменения протокола, у него оказывается те же 100 монет, но уже криптовалюты Б.

В качестве показательного примера из реальной жизни можно привести ситуацию с валютой Ethereum. После того, как в результате успешной хакерской атаки многие пользователи потеряли существенную часть своих сбережений, произошло разделение блокчейна на две части. Одна часть не только не вернула пользователям потерянные средства, но и минимально изменила исходный протокол. Теперь она называется Ethereum Classic. Вторая – существенно переработала его, в целях повышения безопасности, ещё и откатила цепочку до момента, предшествующего хакерскому вмешательству. Обе цепочки продолжают использоваться до сих пор.

Заключение

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