У технології блокчейн хардфорки та м’які форки є двома різними способами оновлення та оновлення мережевих протоколів. Вони суттєво відрізняються тим, як вони реалізовані, і ці відмінності можуть безпосередньо впливати на структуру та роботу мережі блокчейн.
Хард форк
Хардфорк — це зміна правила, за якої нова версія мережі більше не сумісна зі старою версією. В результаті блокчейн розпадається на дві окремі гілки, які працюють паралельно і не впливають одна на одну.
М'яка вилка
Мягка розгалуження — це зміна правила, за якої вузли, які приймають нові правила, все ще можуть взаємодіяти з вузлами, які не оновилися. У цьому випадку нова версія мережі залишається сумісною зі старою версією.
Порівняння
Hard Fork
Приклад: 2016 DAO
Стара версія не сумісна з новою мережею
Працює за різними протоколами
Soft Fork
Приклад: 2017 SegWit
Нова мережа залишається сумісною зі старою версією
Працює в рамках того самого загального протоколу
Аналіз ситуації
Хард форк
Наприклад, припустімо, що половина вузлів мережі хоче збільшити розмір блоку з 2 МБ до 3 МБ. Якщо блок розміром 3 МБ надсилається на вузли старої версії, ці вузли відхилять його, оскільки їхні правила все ще визначають 2 МБ як максимальний розмір блоку. У цьому випадку мережа розділяється на два окремих протоколи, і кожна гілка може використовувати окрему валюту. Усі баланси рахунків копіюються з початкового ланцюжка до нового ланцюжка. Наприклад, якщо користувач мав 20 BTC до розгалуження, цей користувач матиме 20 BTC у початковому ланцюжку та 20 нових BTC у новому ланцюжку.
М'яка вилка
Наприклад, якщо вихідний розмір блоку становить 2 МБ, а половина мережевих вузлів запроваджує суворіше правило, що обмежує розмір блоку до 1 МБ, блоки, розмір яких перевищує 1 МБ, оновленими вузлами вважатимуться недійсними. Однак вузли старої версії все ще можуть отримувати та транслювати блоки. У цій ситуації нова мережа все ще може охоплювати всі вузли, не обмежуючись різними версіями правил. Segregated Witness (SegWit) біткойна є типовим прикладом м’якого форку. Це оновлення запровадило новий формат блоків і транзакцій у розумний спосіб. Вузли, які не були оновлені, все ще можуть отримувати інформацію про блоки, але вони не беруть участі в перевірці нового формату транзакцій.
