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

Будь-яке програмне забезпечення потребує регулярних оновлень. З централізованими системами все досить просто - спочатку оновлюється сервер, а всі інші вже тягнуть від нього оновлення. А як бути з децентралізованими? Наприклад, криптовалютами? Так само. Тільки в процесі виникають явища, звані фоками (виделками, але це не перекладається).

У децентралізованих системах всі вузли зобов'язані дотримуватися одного і того ж протоколу - тільки тоді вони можуть взаємодіяти в повному обсязі. Протокол - своєрідні «правила поведінки», що розробляються спільно для більш ефективної взаємодії. У них, наприклад, прописується розмір хеша, який повинен вийти в процесі майнінгу, розмір блоку, нагорода за підтвердження достовірності нового блоку в ланцюгу і багато чого ще.

І ось коли велика частина вузлів приймає рішення про внесення змін до такого протоколу, виникає ситуація поділу - форк. Які бувають двох видів - хардфорк і софтфорк.

Чому форк? Тому що частина вузлів оновилася і починає вираховувати алгоритм за новим принципом - і відповідно йому добудовує блокчейн. А частина - не оновиться і добудовує нові блоки, відповідно до застарілих принципів. Один ланцюжок ділиться на дві частини. Ось тільки ланцюжки, які будуються за старими протоколами, виходять коротше, так що досить швидко відкидаються. І ті вузли, які продовжують працювати за старими принципами, позбавляються можливості отримувати винагороду. Але так відбувається не завжди.

Софтфорк

Це така зміна протоколу, при якій у aвузлів, які мають застарілі дані, зберігається часткова можливість працювати над побудовою основного ланцюга. Але тільки до тих пір, поки вони укладаються в межі, задані новим протоколом.

Як приклад, можна взяти наступну ситуацію. Новий протокол зменшує максимальний розмір блоку з 3 мб до 2 мб. Якщо не оновлений вузол видає в результаті майнінгу блок в 2 мб - він без проблем вбудовується в основний ланцюжок. Якщо ж 2,5 мб - то оновлені вузли вже не приймають його в якості достовірного. Такий блок може прикріплятися до загального масиву, але добудовувати ланцюжок від нього далі зможуть тільки застарілі вузли. Так що цей ланцюжок досить швидко припиниться. Тому для збереження можливості отримувати винагороду за роботу над актуальною ланцюжком, вузли будуть поступово оновлюватися.

Хардфорк

Це така зміна протоколу, при якому застарілі вузли взагалі не можуть більше взаємодіяти з основним ланцюжком. Як правило, така зміна протоколу істотно змінює базові умови, або - створє новий незалежний блокчейн.

Уявімо ситуацію, в якій рекомендований мінімальний розмір блоку збільшується з 2 мб до 4 мб. Вузли, що використовують старий протокол, взагалі не сприймають валідними нові блоки, тому - продовжують вибудовувати ланцюжок, грунтуючись на старому протоколі.

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

Суперечливі хардфорки - це дещо інша ситуація. Як правило, вони відбуваються в тому випадку, коли в учасників мережі є непримиренні розбіжності з приводу того, як вона повинна розвиватися далі. Тому хтось свідомо оновлює протокол, а хтось - не менше свідомо зберігає стару версію. Зазвичай це призводить до створення нового незалежного блокчейна з меншою обчислювальною потужністю. Але оскільки в ньому зберігається інформація про всі транзакції, починаючи з нульового блоку, то кожен учасник системи отримує нову криптовалюту в кількості, еквівалентній тій, яка у нього було на момент поділу.

Якщо спрощувати, то якщо у людини на момент поділу було 100 монет А , то після поділу і зміни протоколу, у неї виявляються ті ж 100 монет, але вже криптовалюти Б.

Як показовий приклад з реального життя можна навести ситуацію з валютою Ethereum. Після того, як в результаті успішної хакерської атаки багато користувачів втратили істотну частину своїх заощаджень, відбувся поділ блокчейна на дві частини. Одна частина не тільки не повернула користувачам втрачені кошти, а й мінімально змінила вихідний протокол. Тепер вона називається Ethereum Classic. Друга - істотно переробила його, з метою підвищення безпеки, ще й відкотила ланцюжок до моменту, що передує хакерскому втручанню. Обидва ланцюжка продовжують використовуватися до сих пір.

Висновок

Оскільки все більше людей втягується в процес використання криптовалюти, росте ймовірність розбіжності з приводу того, якими мають бути протоколи, що визначають процес взаємодії. І різних форків ставатиме все більше і більше.