Hard Fork змінює правила чинності блоків чи транзакцій без зворотної сумісності зі старими вузлами. Щоб стежити за новим несумісним ланцюгом, вузол має прийняти нові правила. Саме оголошення зміни чи більша потужність майнінгу не можуть його примусити.
Анна й Павло запускають Full Node — комп’ютер, який самостійно перевіряє правила Bitcoin. Анна встановлює програму, що дозволяє більші блоки, а Павло залишає початковий ліміт. Надходить блок, який відповідає новим умовам, але перевищує старе обмеження. Анна його приймає, Павло відхиляє. Зв’язок не зламався: їхні програми не погоджуються, що може бути частиною спільної історії. У цьому практичний зміст Hard Fork. Назва «оновлення» не змусить комп’ютер Павла ігнорувати власне правило. Дві гілки можуть існувати, якщо хтось створює блоки для кожної й люди ними користуються. Якщо учасники перейдуть на одну систему правил, дві активні мережі можуть і не залишитися. [1]
Старий вузол відхилить несумісний блок і гілку, побудовану на ньому. Але це не означає, що він зупиниться назавжди. Якщо майнери продовжать іншу гілку за початковими правилами, вузол зможе приймати її блоки. Без такого продовження він залишиться на останньому чинному для нього блоці. Визначальними є правила програми, а не кількість прихильників зміни. Щоб перейти на несумісну гілку, оператор має свідомо змінити ці правила. [1]
Bitcoin Cash відокремився від Bitcoin на висоті блоку 478559 1 серпня 2017 року. Його правила дозволили більші блоки, ніж тоді приймали вузли Bitcoin, і створили власний подальший ланцюг. Вузли Bitcoin відхиляли блоки, допустимі лише для BCH, а вузли BCH стежили за своєю дійсною історією. Це приклад Hard Fork, який утворив окрему мережу, а не замінив Bitcoin оновленням у тій самій мережі. [3] [4]
Уявіть запис у ланцюгу про отримані й ще не витрачені кошти: Bitcoin називає такий невитрачений вихід транзакції UTXO. Гілки зі спільним минулим успадковують цей запис, а далі ведуть його окремо. Якщо ви контролюєте потрібні ключі й обидві мережі далі визнають вихід, зазвичай можна витрачати відповідні монети в обох. Це не подвоює їхню вартість: це різні активи з власним попитом. Для коштів на біржі зарахування монет іншої мережі також залежить від політики біржі. [4] [6]
Маючи монети в обох гілках, можна хотіти заплатити лише в одній. Без захисту хтось може скопіювати підписану транзакцію й передати її також в іншу мережу, де вона теж може бути чинною. Це ризик replay. Перевіряйте захист конкретної мережі й підтримку гаманця. Наприклад, зміна sighash — правил щодо даних, охоплених підписом, — може прив’язати транзакцію до певного ланцюга. Інший вигляд адрес допомагає розрізняти мережі, але сам по собі не дає криптографічного захисту від replay. [3]
Активація — визначений момент початку застосування нових правил. Висота блоку позначає його місце в ланцюгу. Фіксована дата, висота блоку чи сигнал майнерів можуть координувати тих, хто прийняв оновлення, але не змінюють ПЗ вузлів, які його не прийняли. Якщо кожна з двох систем правил зберігає економічно значущих учасників, можуть продовжуватися обидва ланцюги. План активації Hard Fork тому є планом міграції з ризиком розділення. [1]
Урядування тут означає, як учасники ухвалюють рішення про зміни. Тикер — торговельне позначення активу, наприклад BTC або BCH. Розробники можуть випускати код, майнери — перенаправляти hashrate, компанії — обирати торгові позначення й правила депозитів, а користувачі — програмне забезпечення. Жодна з цих дій сама по собі не змінює правил, за якими інші вузли перевіряють блоки. Розділення може тривати, якщо достатньо незалежних учасників добровільно підтримують і цінують обидві системи правил; не кожна несумісна зміна мусить створити дві постійно діючі мережі. Назва однієї гілки «оновленням» є суспільною домовленістю, а не правилом консенсусу. [1]
Мережа може розділитися, навіть якщо ніхто не планує створювати нову валюту. У березні 2013 року деякі старі вузли не змогли обробити блок із незвично великою кількістю входів транзакцій. Вони досягли ліміту блокувань бази даних, які не дають одночасним операціям змінювати ті самі дані. Новіша версія 0.8 використовувала іншу базу й прийняла блок. Майнінгові пули BTC Guild і Slush повернулися до версії 0.7 та почали добувати блоки в гілці, яку приймали й старі вузли. Коли ця гілка накопичила більше роботи, новіші вузли теж перейшли на неї. Так усунули ненавмисну розбіжність у роботі програм, а не створили окрему мережу для тривалої підтримки, як у випадку Bitcoin Cash. [2]
Soft Fork посилює наявні правила. Тому блок, який відповідає новим обмеженням, відповідає й старим правилам. Старий вузол може прийняти його, навіть не перевіряючи додаткових обмежень. Hard Fork такої сумісності не має: блок, прийнятий новою програмою, може порушувати старі правила. Щоб прийняти його, оператор старого вузла має змінити правила своєї програми. Soft Fork теж не гарантує, що мережа залишиться єдиною: якщо майнери створять блок із порушенням нового обмеження, старі й нові вузли можуть оцінити його по-різному. [1]
Позначмо через V(old) усі блоки, які приймають початкові правила. Зміна є Hard Fork, якщо нове ПЗ приймає хоча б один блок поза цією множиною. Часто йдеться про розширення множини допустимих блоків, але вирішальною є сумісність: якщо блок може бути дійсним для нового вузла й недійсним для старого, старий валідатор не може стежити за новим ланцюгом, зберігаючи свої правила. [1]
Chainwork — це сукупна робота, підтверджена майнінгом блоків усієї гілки. Натомість Hashrate означає швидкість майнінгових обчислень. Вузол обирає гілку з найбільшою накопиченою роботою лише серед ланцюгів, які відповідають його правилам. Якщо блок порушує ці правила, більша робота не зробить його прийнятним. Тому Павло з початкового прикладу не прийме завеликий блок лише через те, що більшість майнерів добуває наступні блоки на його основі. Proof of Work може визначити вибір між допустимими гілками, але не обрати правила замість оператора вузла. [1]
Спочатку перевірте мережу, підтримуваний гаманець і захист від replay. Знайомої назви монети чи схожої адреси недостатньо. Не вводьте Seed Phrase, слова відновлення гаманця, у невідомий сервіс, що обіцяє отримати монети форку. На власному вузлі можна додатково перевірити версію програми, підключені вузли, останній прийнятий блок і відбиток блоку в місці розділення. Цей відбиток називається хешем. Порівняйте дані з документацією мережі; вебоглядач блоків не замінює власної перевірки правил. [5] [6]
Для повної картини прочитайте також Soft Fork, Правила консенсусу, Full Node, Reorg, Війна за розмір блока, UTXO. На цю статтю також посилаються Soft Fork, BIP (Bitcoin Improvement Proposal), Reorg, Війна за розмір блока.