50 / 691NONCE

Nonce

Nonce v bitcoinovém miningu je 32bitové pole v 80bajtové hlavičce bloku, které těžaři mění při hledání double-SHA-256 hashe menšího nebo rovného proof-of-work targetu.

Nonce v block headeru je veřejná uint32 souřadnice vyhledávacího prostoru, nikoli tajemství nebo kryptografický podpisový nonce. Pro jednu pevnou hlavičku existuje jen 2^32 hodnot, takže moderní ASIC tento prostor vyčerpá velmi rychle. Mining software proto mění také extranonce v coinbase transakci, Merkle root, nTime a někdy povolené version bits.

Bitcoin block header má 80 bajtů: version, hash předchozího bloku, Merkle root, time, nBits a čtyřbajtový nonce. Nonce je unsigned 32bit integer. Jeho změna mění serializovanou hlavičku a tím i double-SHA-256, aniž by sama měnila seznam transakcí.

SHA-256 nedává při malé změně vstupu žádný užitečný směr. Nonce zvýšený o jedna vytvoří prakticky nesouvisející 256bitový hash, takže každý pokus je další pravděpodobnostní trial. K výherní hodnotě nelze postupovat gradientem.

Čtyřbajtový nonce nabízí pro jednu pevnou hlavičku přesně 4 294 967 296 možností. Současné ASICy tento rozsah projdou mnohokrát za sekundu, takže samotný header nonce pro moderní mining nestačí.

Pooly a mining software používají extranonce uvnitř coinbase transakce. Přes název nejde o další pole block headeru. Změna extranonce změní coinbase txid, následně Merkle root a tím vznikne úplně nová hlavička s novým prostorem 2^32 nonce hodnot.

Coinbase transakce je list Merkle tree. Jakmile se změní její txid, změna se propaguje přes strom až do Merkle root v hlavičce. Těžař tak dostane nový header i se stejným previous-block hashem a téměř stejným obsahem bloku.

Další prostor lze získat změnou nTime v povolených mezích a rollingem povolených version bits. BIP320 popisuje general-purpose použití vybraných nVersion bitů. Nic z toho nemění konsenzus: výsledný header hash musí stále splnit target.

V poolovém miningu pool nebo job negotiator přiděluje workerům unikátní coinbase/extranonce a další parametry, aby zařízení nehashovala totéž. BIP23 pracuje i s nonce range; Stratum protokoly rozdělují search space mezi velké množství ASICů efektivněji.

Samotná číselná hodnota nonce není dobrá ani špatná. Full node zahashuje celý konkrétní header a výsledek porovná s targetem odvozeným z nBits. Nízký nonce nic nedokazuje; důkaz práce je pouze dostatečně nízký hash celé hlavičky.

Slovo nonce se používá i u podpisů, kde může jít o tajný jednorázový skalár a jeho opakování může kompromitovat private key. Mining nonce je naopak veřejný údaj v block headeru a žádné utajení nepotřebuje. Tyto dva významy se nesmějí zaměňovat.

Bitcoin Core přes getblockheader vrací pro blok mimo jiné nonce, bits a time. Pro nezávislé ověření lze přesně serializovat 80bajtovou hlavičku, provést double-SHA-256 a ověřit, že výsledná číselná hodnota splňuje target.

Pro nejúplnější obraz čtěte toto heslo společně s Hlavička bloku, Těžba, Proof of Work, Mining Target, Coinbase transakce, Bitcoin. Opačným směrem na něj odkazují také Hlavička bloku, Coinbase transakce, Mining Target, Extranonce.

DOC · 001Bitcoin Developer Reference — Block headersDokumentaceDOC · 002Bitcoin Developer Guide — MiningDokumentaceDOC · 003Bitcoin Developer Reference — TransactionsDokumentaceDOC · 004BIP 23 — getblocktemplate pooled miningSpecifikaceDOC · 005BIP 320 — nVersion bits for general purpose useSpecifikaceDOC · 006Bitcoin Core RPC — getblockheaderDokumentaceDOC · 007Bitcoin Core RPC — getblocktemplateDokumentaceDOC · 008Bitcoin Core source — mining interfacesDokumentace
Ověřeno 1. srpna 2026Primární zdroje · Nejde o investiční doporučení