Все про хард-форки та софт-форки
Головна сторінка
Статті
Все про хард-форки та софт-форки

Все про хард-форки та софт-форки

Середній рівень
Опубліковано Nov 29, 2018Оновлено Feb 9, 2023
8m

Вступ

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

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


Хто приймає рішення у блокчейн-мережі?

Щоб зрозуміти, як працюють форки, важливо спочатку зрозуміти учасників, що беруть участь у процесі прийняття рішень (або управлінні) в мережі.
У Bitcoin ви можете розрізнити три підгрупи учасників – розробники, майнери та користувачі повної ноди. Це сторони, які справді роблять свій внесок у мережу. Легкі ноди (тобто гаманці на ваших телефонах, ноутбуках тощо) широко використовуються, але насправді вони не є "учасниками" мережі.


Розробники

Розробники несуть відповідальність за створення та оновлення коду. Будь-хто може зробити свій внесок у цей процес для типової монети. Через те, що код публічний, користувачі можуть надсилати зміни на розгляд іншим розробникам. 


Майнери

Майнери це ті, хто захищає мережу. Вони запускають криптовалютний код і виділяють ресурси для додавання нових блоків до блокчейну. Наприклад, у Bitcoin мережі вони роблять це за допомогою Proof of Work. Вони винагороджуються за свої зусилля у вигляді винагороди за блок.


Користувачі повних нод

Повні ноди є основою криптовалютної мережі. Вони перевіряють, відправляють та отримують блоки і транзакції, а також підтримують копію блокчейну.


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

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

Розробники не вдираються у ваш будинок і не змушують вас завантажувати бінарні файли Bitcoin Core під дулом пістолета. Якщо майнери дотримуються позиції "по-моєму або ніяк", щоб нав'язати користувачам небажані зміни, що ж, користувачі просто оберуть "ніяк". 

Ці сторони не є всемогутніми повелителями – вони постачальники послуг. Якщо люди вирішать не використовувати мережу, то монета знеціниться. Втрата вартості напряму впливає на майнерів (їхня винагорода коштує менше, коли переказана в долари). Що стосується розробників, їх користувачі можуть просто проігнорувати.
Тепер ви бачите, програмне забезпечення не є власністю. Ви можете вносити будь-які зміни в програмне забезпечення. І якщо інші користувачі приймуть їх, то ви здійсните форк програмного забезпечення і створите нову мережу.


Що таке форк?

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

Проєкти побудовані на загальній основі та мають спільну історію. Але тепер їхні шляхи та цілі розходяться.

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



Хард-форки проти софт-форків

Незважаючи на схожі назви і мету, хард-форки та софт-форки суттєво відрізняться. Давайте їх розглянемо.


Що таке хард-форк?

Хард-форк – це оновлення програмного забезпечення, несумісне з попередніми версіями. Зазвичай це відбувається, коли ноди додають нові правила таким чином, що це суперечить правилам старих нод. Нові ноди можуть взаємодіяти лише з іншими нодами, які використовують нову версію. В результаті блокчейн розділяється, створюючи дві окремі мережі: одну зі старими правилами та одну з новими правилами.

Під час оновлення ноди стають синіми. Старі жовті ноди відкидають їх, а сині з'єднуються одна з одною.


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


Оскільки ви маєте спільну історію, ви отримаєте монети в обох мережах, якщо ви тримали їх до форку. Припустимо, що у вас було 5 BTC, коли відбувся форк на блоці 600 000. Ви могли б витратити ці 5 BTC на старому ланцюзі у блоці 600 001, але вони не були б витрачені в блоці 600 001 нового блокчейну. Припускаючи, що криптографія не змінилася, ваші приватні ключі, як і раніше, містять п'ять монет у новій мережі. 
Прикладом хард-форку був форк 2017 року, в результаті якого Bitcoin був розділений на два окремі ланцюги – початковий Bitcoin (BTC), і новий Bitcoin Cash (BCH). Форк стався після довгих суперечок про найкращий підхід до масштабування. Прихильники Bitcoin Cash хотіли збільшити розмір блоку, тоді як прихильники Bitcoin виступили проти цієї зміни.

Збільшення розміру блоку потребує зміни правил. Це було до софт-форку SegWit (детальніше про це трохи пізніше), тому ноди приймали лише блоки розміром менше 1 МБ. Якщо ви створили блок розміром 2 МБ, який у всіх відносинах був дійсним, то інші ноди все одно відхилили б його.

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


Що таке софт-форк

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

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

Хорошим прикладом софт-форку з реального життя був вищезгаданий форк Segregated Witness (SegWit), який стався невдовзі після поділу на Bitcoin та Bitcoin Cash. SegWit був оновленням, яке змінило формат блоків та транзакцій, але воно було продумане до дрібниць. Старі ноди все ще могли перевіряти блоки та транзакції (форматування не порушувало правил), але просто не розуміли їх. Деякі поля доступні для читання лише тоді, коли ноди перемикаються на новіше програмне забезпечення, яке дозволяє їм аналізувати додаткові дані.


Навіть за два роки після активації SegWit не всі ноди оновилися. У цьому є свої переваги, але особливої терміновості немає, оскільки немає змін, які руйнували б мережу.


Хард-форки проти софт-форків – що краще?

По суті, обидва перераховані вище типи форків служать різним цілям. Спірні хард-форки можуть розділити спільноту, але заплановані дозволяють вільно модифікувати програмне забезпечення за згодою.

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


Заключні думки

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

Форки дозволяють блокчейнам і криптовалютам інтегрувати нові функції в міру їхньої розробки. Без цих механізмів нам знадобилася б централізована система з контролем "зверху вниз". Інакше ми застрягли б з одними й тими самими правилами протягом усього терміну роботи протоколу.