Пренареждане на веригата
Reorg биткойн, или пренареждане на веригата, е когато нодът превключи към верига с повече работа. Вижте какво става с трансакциите.
От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.
Пренареждането на веригата, известно още като реорганизация, или reorg, е когато нодът отхвърля блоковете в горната част на веригата си и превключва към друга верига с повече работа. Отхвърлените блокове стават остарели. Трансакциите им вече не са потвърдени, но повечето от тях се появяват отново в конкурентната верига, а останалите се връщат в мемпула.
Кога става пренареждане?
Повечето пренареждания следват един и същ модел. Два блока са намерени почти на една и съща височина. И двата са валидни, но мрежата още не е решила кой е дошъл първи. После следващият блок е намерен върху един от двата.
Два блока са намерени едновременно
Двама майнъри намират блокове на една и съща височина в рамките на няколко секунди един от друг. Блоковете отнемат време, за да стигнат до мрежата, така че някои нодове получават единия първи, други другия. Всеки нод държи първия блок, който е видял, на върха на веригата си. Вторият блок също го пази, в случай че по-късно има значение.
Следващият блок избира победител
Следващият блок се строи върху един от двата. Тази страна вече има повече работа, така че нодовете от другата страна превключват към нея. Те извършват пренареждането, а блоковете от губещата страна се деактивират.
Какво е остарял блок?
Блок, деактивиран по този начин, е остарял блок (stale). Често го наричат осиротял блок (orphan), но двете думи означават различни неща. Остарелият блок някога е бил част от веригата, затова има родител. Осиротелият блок пък пристига, преди да е пристигнал родителят му. Нодът го държи в чакалня, докато родителят се появи.
Какво се случва с трансакциите?
Трансакцията в остарял блок вече не е част от валидната верига. Всяка трансакция, която харчи един от изходите ѝ, е невалидна в новата верига. Тези монети не могат да се харчат, докато оригиналната трансакция не бъде изкопана отново.
На практика обикновено се губи малко. Двата конкурентни блока често съдържат едни и същи трансакции, защото и двамата майнъри са строили от подобни мемпули. Трансакция, която се появява само в остарелия блок, се връща в мемпула на вашия нод и може да бъде включена в по-късен блок.
Нищо не е гарантирано обаче. Трансакцията може да се забави, или конфликтна трансакция да бъде включена първа и да унищожи оригиналната. Затова мнозина изчакват още блокове отгоре на плащането си, преди да го считат за уредено.
Защо шест потвърждения?
Потвържденията на една трансакция се броят така: блокът, в който се намира тя, и всеки блок над него. Трансакция в най-горния блок има едно потвърждение. Трансакция с шест потвърждения се намира в шестия блок от върха.
За да обърне тази трансакция, нападателят трябва да замени всичките шест блока. Бялата книга на биткойн, в раздел 11, дава математиката за шанса нападател с даден дял от хешрейта да настигне, когато е назад с няколко блока. Заместването на шестте горни блока дава следните шансове:
| Дял на нападателя от хешрейта | Шанс да замени горните 6 блока |
|---|---|
| 10% | 0.0065% |
| 20% | 0.74% |
| 30% | 9.9% |
| 40% | 46.2% |
| 50% или повече | 100% |
Правилото за шест потвърждения е конвенция, а не закон. При нападател с 10% от хешрейта шансът е около 1 към 15,000. При 30% той е близо до 1 към 10. Всеки допълнителен блок намалява шанса рязко, затова големите плащания често изчакват повече потвърждения. Страницата за 51% атака разглежда по-големите атаки подробно.
Може ли пренареждането да е много дълбоко?
По правилата пренареждането може да замени произволно много блокове, стига новата верига да има повече работа. Консенсусът не поставя граница за дълбочина. Пренареждания, които се случват по случайност, почти никога не са по-дълбоки от един блок, защото идват от два блока, намерени едновременно. Най-дългата верига показва как нодът избира между две вериги. Дълбоко пренареждане изисква някой с мнозинството от майнинг мощността, както описва 51% атака.
Как виждате пренарежданията в нода си?
bitcoin-cli getchaintips показва върха на всяка верига, която нодът ви познава. Всеки ред има height, hash, branchlen (колко блока има разклонението) и status:
| Статус | Значение |
|---|---|
active |
Веригата, която нодът следва в момента. |
valid-fork |
Разклонение, което нодът е следвал известно време, а после е отхвърлил след пренареждане. |
valid-headers |
Конкурентно разклонение с валидни заглавия, но с по-малко работа от активната верига, затова нодът не го е валидирал напълно. |
headers-only |
Нодът знае заглавията на конкурентно разклонение, но не и пълните му блокове. |
invalid |
Разклонение с блокове, които нарушават правилата на консенсуса. |
Нодът записва пренареждания само ако са станали, докато е работил. Нод, който току-що е изтеглил веригата, не е виждал разклонения, така че списъкът показва само active. Страницата за височината на блока показва как се чете височината на блок.
Обобщение
Пренареждането на веригата е нормална част от работата на нода. Когато нодът види верига с повече работа, той превключва, а блоковете, които отхвърля, стават остарели. Трансакциите им обикновено се появяват отново в новата верига. Повечето пренареждания засягат само най-горния блок. Затова две потвърждения са обичайното правило, а шест са познатата цифра за по-големите плащания.
В този раздел: Блокчейн
Целият курс „Биткойн от нулата“
Нещо не изглежда наред? Кажете ни