Към съдържанието
ДаретеEN

Начинаещи

Трудността

Трудността на биткойн определя колко трудно е да се намери блок. Мрежата я сменя на всеки 2,016 блока, така че блоковете да идват на всеки 10 минути.

От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.

Трудността на биткойн е число, което показва колко трудно е да се намери валиден блок. Мрежата я сменя на всеки 2,016 блока, което е около две седмици. Целта е нов блок на всеки 10 минути, колкото и майнъри да работят в даден момент.

Защо трудността се сменя?

Колкото повече майнъри правят опити всяка секунда, толкова по-бързо идват блоковете. Когато майнърите си тръгнат, блоковете се бавят. Без никаква промяна времето между блоковете би се отклонявало от 10 минути. Корекцията го връща към тази цел.

Как трудността управлява времето между блоковете?

Представете си проста игра. Някой задава целево число, а вие теглите случайно число от 1 до 100 на всяка минута. Печелите, ако вашето число е под целта.

Ако целта е 50, около половината числа печелят. Печелите горе-долу на всеки две минути. Ако целта падне на 20, печели около едно от пет числа. Сега печелите горе-долу на всеки пет минути.

По-ниската цел прави печеленето по-рядко. Биткойн работи по същия начин. Майнърите теглят хешове вместо числа от 1 до 100, и всеки хеш трябва да е под целта.

Как трудността се свързва с целта?

Целта е огромно число, затова биткойн показва трудността вместо нея. Трудността е най-голямата възможна цел, разделена на текущата цел. Най-голямата цел е тази, която е била използвана за първия блок, и тя има трудност 1.

target = max target / difficulty

По-висока трудност означава по-ниска цел, така че се броят по-малко хешове. Удвояването на трудността разполовява целта.

Удвояването на трудността разполовява целта, така че се брои по-малка част от хешовете. По-висока трудност, по-ниска целВсички хешове; оранжевите се броят.Трудност 1всичкиТрудност 2половинатаТрудност 4една четвъртТрудност 14,484: твърде тънка за вижданеtarget = max target / difficultyБлок 100,000 е имал трудност 14,484.16.
Всяка решетка са всички хешове, а оранжевите точки са тези, които се броят. Блок 100,000 не е нарисуван в мащаб.

Блок 100,000 е имал трудност 14,484.16. Целта му е била около 14,484 пъти по-малка от целта при трудност 1. Най-голямата цел е 0x00000000ffff, следвана от 52 нули. Блок 100,000 е имал 0x000000000004864c, следвана от 48 нули. Разделете първото число на второто и ще получите трудността му.

Целите и хешовете се записват в шестнадесетичен вид (hexadecimal), система с основа 16, а трудността е в десетичен вид. И двете са число, просто записано по различен начин. Целта се пази в заглавието на блока в компактна форма, в полето bits.

Как работи корекцията?

На всеки 2,016 блока всеки нод извършва едно и също изчисление и всички стигат до един и същи резултат. Изчислението става на четири стъпки:

  1. Измерете колко време са отнели последните 2,016 блока по времевите марки в заглавията им.
  2. Сравнете го с очакваното време: 2,016 блока по 10 минути, тоест 14 дни.
  3. Разделете очакваното време на действителното. Резултатът е коефициентът.
  4. Умножете текущата трудност по коефициента. Пазете коефициента между 0.25 и 4.
На всеки 2,016 блока всеки нод сравнява действителното време с 14 дни и мащабира трудността. На всеки 2,016 блокаОчаквано: 14 дни (2,016 × 10 мин)Действително, в този пример: 12 днифактор 14 / 12× 1.17нова = стара × 1.17Трудността растеПо-бързи блоковеКоефициентът остава между 0.25 и 4.
Примерът ползва 12 дни. Вашият нод извършва същите стъпки върху реалните времеви марки.

Ето пример. Да кажем, че последните 2,016 блока са отнели 12 дни. Коефициентът е 14 делено на 12, около 1.17. Новата трудност е с около 17% по-висока. Ако блоковете бяха отнели 28 дни, коефициентът щеше да е 0.5 и трудността щеше да се разполови.

Границата от 4 пази трудността да не се сменя твърде рязко за един период. Разработчиците трябва да знаят една подробност. Bitcoin Core измерва от първия блок на прозореца до последния, което са 2,015 интервала, а не 2,016. Кодът е в pow.cpp.

Защо 2,016 блока?

2,016 блока са две седмици по 10 минути. Числото е записано в софтуера, така че всеки нод ползва един и същи прозорец и стига до един и същи резултат.

Къде мога да намеря текущата трудност?

Страницата ни за майнинг показва текущата трудност, докъде е стигнала веригата в текущия период и оценка за следващата промяна. Нод на Bitcoin Core също може да я покаже. Изпълнете bitcoin-cli getdifficulty.

Защо блоковете понякога се бавят?

Трудността се сменя само на всеки две седмици, затова не може веднага да реагира на внезапна промяна. Ако много майнъри се изключат едновременно, блоковете се бавят до следващата корекция. Блоковете могат да са над 10 минути за дни наред. Внезапно нарастване на хешрейта има обратен ефект и блоковете за известно време идват по-бързо.

Ако вашата трансакция чака своя блок, страницата за потвърждения обяснява какво да очаквате.

Какво да прочетете след това?

Следващата страница е трансакциите. Тя обяснява какво правят трансакциите в блока и как монетите минават от един собственик към друг.

В този раздел: Начинаещи

Целият курс „Биткойн от нулата“

Нещо не изглежда наред? Кажете ни