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

Биткойн от нулата

Майнинг с доказателство за работа

Майнинг биткойн стъпка по стъпка: майнърът хешира заглавието на блока, докато хешът падне под целта, после обявява блока и взима наградата.

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

Майнингът, или копаенето, на биткойн е доказателство за работа (proof of work). Майнърите добавят нови блокове към веригата, като хешират заглавието на блока отново и отново и сменят по едно число при всеки опит, докато хешът падне достатъчно ниско. Майнърът първо пълни блока с чакащите трансакции. Първият, който стигне до решението, обявява блока. Всеки нод проверява работата и добавя блока, а веригата расте с един блок. Победителят взима и наградата за блока.

Тази страница следва процеса стъпка по стъпка. Думите за хората и термините са на отделни страници: майнър, майнинг пул и хешрейт. Тук разглеждаме самата работа.

Майнърът пробва един nonce след друг, хешира заглавието на блока всеки път, докато хешът падне под целта. Заглавие на блока, 80 байта nonce 4 байта цел 000000000004864c… под целта над целта опит 1 5bd0d617… опит 2 6879c316… опит 3 34d69cb4… опит 274,148,111 000000000003ba27… валиден блок
Заглавието на блок 100,000 с действителната му цел. Всеки опит сменя само nonce.

Какво прави майнърът, стъпка по стъпка?

  1. Майнърът взима трансакции от мемпула и ги слага в блока кандидат.
  2. Записва coinbase трансакцията като първа, за да получи наградата за блок.
  3. Построява заглавието на блока, 80-байтово обобщение на блока.
  4. Хешира заглавието с HASH256 и сравнява резултата с целта.
  5. Ако хешът е твърде голям, сменя nonce и опитва пак.
  6. Ако хешът е достатъчно малък, обявява блока. Всеки нод проверява работата, добавя блока към своята верига и започва следващия.

Какво има в заглавието на блока?

Заглавието е единствената част от блока, която се хешира в цикъла. Винаги е 80 байта и се състои от шест полета. Промяна на което и да е от тях променя хеша.

Заглавието на блока е 80 байта в шест полета, а майнърът сменя само nonce. Версия служи за сигнал за софтфорк 4 байта Хеш на предишния блок блокът, върху който строи този 32 байта Меркъл корен (merkle root) отпечатък на всички трансакции 32 байта Време Unix време, задава го майнърът 4 байта Bits целта в компактна форма 4 байта Nonce числото, което майнърът сменя 4 байта Общо: 80 байта хешира се два пъти
Хешът на предишния блок и Меркъл коренът (merkle root) свързват заглавието с веригата и с трансакциите.

Хешът на предишния блок посочва върху кой блок строи този. Меркъл коренът е един хеш, който обвързва всяка трансакция в блока, така че никоя не може да се промени, без да се промени и заглавието. Времето се задава от майнъра, а полето bits пази целта в компактна форма. Nonce е числото, което майнърът сменя непрекъснато.

Как работи цикълът на хеширане?

Майнингът ползва HASH256, което е SHA-256, приложен два пъти: SHA-256(SHA-256(заглавие)). Изходът е 256-битово число. Хешът не може да се предвиди, затова всяка нова стойност на nonce дава съвсем различен резултат. Майнърът няма пряк път и трябва да пробва стойности, докато някоя не покрие целта.

Nonce е 4 байта, така че едно заглавие предлага 2^32 (около 4.3 милиарда) опита. Когато майнърът ги изчерпи, сменя друга част от блока, например допълнителния nonce (extra nonce) в coinbase трансакцията. Това сменя Меркъл корена и оттам заглавието.

Ето блок 100,000 като пример. Заглавието му с nonce 0 се хешира до стойност далеч над целта. Заглавието с nonce 274,148,111 се хешира до стойност под нея:

Nonce 0:            5bd0d617b30a972407ad69a845cd74fb201d940cd45acc15fcd4761493bc3ae2
Nonce 274,148,111:  000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506
Target:             000000000004864c000000000000000000000000000000000000000000000000

Две подробности имат значение. Nonce се пази в little-endian байтов ред, така че 274,148,111 се появява в заглавието като 0f2b5710. Суровият HASH256 изглежда обърнат назад, защото експлорърите показват хешовете на блоковете с обърнат байтов ред. Стойността по-горе е във формата на експлорър, затова нулите са отпред. Проверете самия блок в нашия експлорър: блок 100,000.

При тази трудност само около един хеш от 62 трилиона е под целта. Цикълът по-долу е целият алгоритъм за майнинг на едно заглавие:

import hashlib, struct

def hash256(data: bytes) -> bytes:
    return hashlib.sha256(hashlib.sha256(data).digest()).digest()

def mine(header76: bytes, target: int) -> int:
    """Връща първия nonce, чийто хеш на блока е под целта или равен на нея."""
    nonce = 0
    while True:
        header = header76 + struct.pack("<I", nonce)   # nonce е 4 байта, little-endian
        block_hash = hash256(header)[::-1]             # показван ред, както го виждат експлорърите
        if int.from_bytes(block_hash, "big") <= target:
            return nonce
        nonce += 1

Ако пуснете mine за блок 100,000, той намира nonce 274,148,111, но в Python това отнема минути, защото пробва 274 милиона стойности на nonce по пътя. Истинските майнъри ползват оптимизирано хардуерно оборудване, което пробва милиарди стойности в секунда.

Защо се нарича доказателство за работа?

Процесът се нарича proof of work, защото хешът показва, че е вложена работа. Намирането на нисък хеш струва огромно изчисление, но всеки може да провери резултата с една операция HASH256. Хешът е доказателството, а работата зад него не може да бъде подправена. Бялата книга на биткойн описва тази идея: блокът е труден за създаване, но лесен за проверка.

Кой може да майнва и кой има предимство?

Всеки нод може да се опита да намери блок. Всеки хеш е билет в лотария, а шансът на майнъра да спечели блок расте с хешрейта, който добавя. Така всеки може да майнва, но предимството е на онзи, който хешира най-бързо. Специализираният хардуер и евтиният ток дават голямо предимство. Затова мнозина майнъри се присъединяват към майнинг пул, който дели наградата между участниците.

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

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

Майнингът решава и спорове между трансакции. Ако две трансакции харчат едни и същи монети, потвърдена е само тази, чийто блок печели надпреварата. Другата отпада. Участник, който контролира по-голямата част от изчислителната мощ, би могъл да пренапише скорошните блокове. Това е атаката от 51%.

Колко често се намира блок?

Целта се коригира на всеки 2016 блока, което е около две седмици. Целта е блоковете да идват средно по един на всеки 10 минути. Ако блоковете са дошли по-бързо, целта пада и майнингът става по-труден. Ако са дошли по-бавно, целта расте. Всеки нод изчислява едно и също, затова всички стигат до една и съща цел. Подробностите са на страницата за целта.

Как се плащат майнърите?

Майнърът взима наградата за блока. Тя има две части: новите монети от субсидията и таксите от трансакциите в блока. Майнърът записва и двете в своята coinbase трансакция. Субсидията се разполовява приблизително на всеки четири години, при халвинга, така че с времето таксите стават по-голяма част от наградата.

Как да следите майнинга в Explore21?

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

Bitcoin Core предоставя интерфейса за майнинг чрез два RPC метода. getblocktemplate връща трансакциите и полетата на заглавието за нов блок кандидат, според BIP 22. submitblock изпраща решен блок към мрежата.

В какъв ред да прочетете този раздел?

Прочетете страниците в този ред. Всяка се опира на предишните.

  1. Мемпулът: където чакат трансакциите и лимитите, които всеки нод им задава.
  2. Блокът кандидат: наборът от трансакции, които майнърът се опитва да добави следващ.
  3. Coinbase трансакцията: първата трансакция във всеки блок и как тя взима наградата.
  4. Наградата за блок: графикът на субсидията, таксите и халвингите.
  5. Целта: прагът, под който трябва да падне хешът, и как се коригира.

В този раздел

  1. 1Мемпулът, който пази всеки нодМемпул биткойн: как нодът пази чакащите трансакции, с 300 MB по подразбиране, 14-дневен срок и минимална такса за препращане.
  2. 2Блокът кандидатCandidate block в биткойн е следващият блок, който майнърът се опитва да намери. Вижте как се строи и какви правила спазва.
  3. 3Coinbase трансакцияCoinbase трансакция в биткойн е първата трансакция във всеки блок. Тя взима наградата, записва височината и обвързва SegWit данните.
  4. 4Наградата за блокНаградата за блок в биткойн е субсидията плюс таксите, които майнърът взима. Субсидията е 3.125 BTC от блок 840,000 и се разполовява на всеки 210,000 блока.
  5. 5Целта на блокаЦелевата стойност в биткойн е числото, под което трябва да падне хешът на блока. Пази се като bits, сверява се на 2016 блока и се мени най-много четирикратно.

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