Хардфорк
Хардфорк биткойн е промяна, която старите нодове отхвърлят, така че веригата се разделя на две. Вижте как работи и как през 2017 г. е възникнал Bitcoin Cash.
От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.
Хардфоркът, или хардфорк (hard fork), е промяна в правилата, която старият софтуер не приема. Блоковете, направени по новите правила, са невалидни за старите нодове, така че веригата се разделя на две вериги с различни правила. Ако всеки нод не се обнови, и двете вериги могат да продължат.
Как хардфоркът се различава от софтфорка?
Софтфоркът затяга правилата, така че старите нодове все още приемат новите блокове. Хардфоркът прави обратното. Той прави валидни някои блокове, които старите правила отхвърлят, например по-големи блокове или нова структура на блока. Старите нодове не могат да следват новата верига и остават на старата.
Как хардфоркът разделя веригата?
Да кажем, че нова версия на софтуера приема блокове, по-големи от сегашния лимит от 4,000,000 weight units. Майнърите, които се обновят, започват да строят блокове с новия размер. Разделянето става, когато се изкопае първият голям блок. Старите нодове го отхвърлят, а новите отхвърлят по-малките блокове, които старите майнъри продължават да строят.
Оттогава има две вериги и всяка расте, докато майнърите строят върху нея. Ако старата страна има повече хешрейт, новата може да изчезне. Ако новата продължава да расте, остават две вериги.
Какви промени водят до разделяне?
Промяна във всяко консенсусно правило, което всеки нод прилага, може да доведе до разделяне. Три вида промени правят това:
- Структура на блока: например по-голям лимит за размера на блока.
- Структура на трансакцията: нова схема за подписи, която старите трансакции не биха удовлетворили.
- Други консенсусни правила: например вдигане на максималното предлагане или ръчна промяна на целевата стойност, за да се копаят блокове по-лесно.
Не всеки ъпгрейд има нужда от такъв. Промените в основните правила, на които почива системата, могат да минат само по този начин.
Кога хардфоркът е единственият вариант?
Ако промяната не може да се изрази като софтфорк, хардфоркът е единственият вариант. Дори когато софтфоркът е възможен, хардфоркът може да е по-простият път, защото новият код не трябва да се побира в старите правила.
Защо хардфорковете са рискови?
Хардфоркът има два основни проблема.
- Всеки трябва да се обнови. Нод на стария софтуер спира да получава новите блокове и изостава. Собственикът му запазва монетите, но не вижда и не може да изпраща нови плащания във новата верига. Принудителното обновяване на всеки нод е груб начин за промяна на мрежа, която няма собственик.
- Разногласието разделя мрежата. Ако някои майнъри се обновят, а други не, веригата се разделя на две истории. Хешрейтът също се разделя, така че всяка верига е по-лесна за 51% атака. Потребителите трябва да решат на коя верига да се доверят. Търговците са изправени пред същия въпрос, а объркването може да навреди на доверието във валутата.
Старите майнъри могат и да отменят хардфорка, като построят най-дългата верига от стари блокове. Ъпгрейдът се задържа само ако новата верига може да изпревари тази.
Какво би оправдало хардфорк?
Малките поправки не струват риска. Например опкодът OP_CHECKMULTISIG взима един елемент повече от стека, а правилото не може да се поправи без форк. Полето nonce в заглавието на блока също е твърде малко, така че майнърите трябва да сменят coinbase трансакцията, за да продължат търсенето. А хешът на блока се показва в обратен ред на байтовете в explorer-ите, но се пази в естествен ред в суровите данни. Всеки от тези проблеми е истински недостатък, но поправянето му би означавало всеки нод да се обнови.
Хардфорковете са запазени за спешни проблеми. Два примера са сериозна слабост в хеш функцията SHA-256 и загуба на толкова хешрейт, че блоковете се забавят почти до спиране. Във втория случай целевата стойност би трябвало да се вдигне ръчно, защото обичайната корекция я сменя само на всеки 2,016 блока.
Какви хардфоркове са се случили?
Разработчиците на Bitcoin Core не са предлагали умишлен хардфорк на веригата на биткойн. Събитията по-долу са се случили по случайност или в копие на веригата.
Промяната на базата данни през 2013 г.
Версиите на биткойн преди 0.8 са използвали Berkeley DB. Тя е имала лимит на заключванията, а голям блок с много входове е изисквал повече заключвания, отколкото лимитът позволява. Този лимит се е превърнал в неписано правило. Версия 0.8 е преминала към LevelDB, който няма такъв лимит, и е приела същия блок. Нодовете на версия 0.7 са го отхвърлили, така че веригата се е разделила.
Повечето майнинг мощност е била на веригата на 0.8. Майнърите, които работят с 0.8, са се върнали към 0.7, за да възстановят една верига, а нодовете на 0.8 са се пренаредили обратно. След това разработчиците са пуснали версия 0.8.1 с нови правила, а на 16 август 2013 г. блок 252,451 е направил промяната постоянна. Нодовете без корекция са били отделени от мрежата. BIP 50 е анализът след инцидента.
Разделянето на Bitcoin Cash през 2017 г.
През 2017 г. някои хора в общността на биткойн са искали по-големи блокове и са се противопоставили на SegWit ъпгрейда, който се е обсъждал. Предложен е хардфорк, който вдига лимита на размера на блока до 8 MB. Това предложение е станало Bitcoin Cash.
Форкът е влязъл в сила на 1 август 2017 г. Двете вериги са били еднакви до блок 478,558. Първият блок по новите правила е блок 478,559, и той е положил началото на веригата Bitcoin Cash. Монетите, притежавани преди разделянето, са съществували и в двете вериги, така че притежателите са могли да контролират монети във всяка от тях.
Веригата на Bitcoin Cash се е разделила отново през ноември 2018 г., когато една група е създала Bitcoin SV. Разделила се е и втори път през ноември 2020 г., когато друга група е създала веригата, която днес се нарича eCash. Това са отделни хардфоркове и тук ги разглеждаме само като история.
Грешка, която срива нодове, през 2018 г.
Версии от 0.14.0 до 0.16.2 са имали грешка, CVE-2018-17144, която майнър е могъл да предизвика. Блок, който съдържа трансакция с дублиран вход, е можел да срине някои нодове. Това е бил проблем с отказ на услуга, а не разделяне на веригата. Поправката е в версия 0.16.3, и не е имало хардфорк.
Обобщение
Хардфоркът е промяна, която старите нодове отхвърлят, така че веригата се разделя на две. Всеки трябва да се обнови, за да остане мрежата на една верига, а разделянето дели и монетите, и хешрейта. Bitcoin Cash е започнал по този начин през 2017 г., при блок 478,559. Самият биткойн не е имал умишлен хардфорк, а промените, които е направил, са дошли като софтфоркове.
В този раздел: Блокчейн
Целият курс „Биткойн от нулата“
Нещо не изглежда наред? Кажете ни