23 / 736HDR

Block Header

hlavička bloku

Malá část bloku, která propojuje jeho obsah s předchozí historií a slouží k ověření těžební práce.

Block Header neboli hlavička bloku je krátký záznam na začátku bitcoinového bloku. Obsahuje otisk předchozího bloku, souhrnný otisk transakcí a údaje potřebné k ověření Proof of Work. Samotné platby jsou uloženy v jiné části bloku.

Představte si blok jako balík transakcí a hlavičku jako jeho průvodní záznam. Není v ní seznam příjemců ani částek. Místo toho nese kryptografické otisky: krátké hodnoty vypočtené z dat, podle nichž lze odhalit jejich změnu. Jeden odkazuje na předchozí blok, další, nazývaný Merkle root, shrnuje identifikátory transakcí v tomto bloku. Díky tomu hlavička spojuje konkrétní obsah s konkrétním místem v historii. Nejde ale o zmenšenou kopii transakcí; z otisku jejich původní obsah nevyčtete. [1] [4]

Těžař sestaví návrh bloku a hledá jeho vyhovující hash, tedy číselně vyjádřený otisk. Musí být menší nebo roven stanovenému cíli. Hledání se nazývá Proof of Work: těžař opakovaně mění údaje a zkouší nový výpočet, protože vhodný výsledek nelze jednoduše odhadnout. Nejviditelnější proměnnou je nonce, pomocné číslo přímo v hlavičce. Když potřebuje další možnosti, může například změnit data zvláštní Coinbase Transaction, kterou vytváří na začátku bloku. Tím se změní i Merkle root a vznikne jiná hlavička. Ostatní uzly pak mohou nalezený výsledek rychle přepočítat. [1] [3] [4]

Řetězec hlaviček umožňuje sledovat návaznost bloků a ověřovat práci, která jim odpovídá, bez stahování všech transakcí. Představte si však blok s platným Proof of Work, ve kterém se někdo pokouší utratit cizí peníze bez potřebného podpisu. Samotná kontrola hlavičky tento problém neodhalí. Full Node proto ověřuje také transakce, jejich podpisy, dostupné neutracené výstupy a povolenou odměnu. Platná hlavička tedy není zárukou platného celého bloku. [2]

Pole nBits říká, jaký cíl musí hash splnit; jde o kompaktní zápis cíle, ne o údaj „difficulty“ zobrazovaný průzkumníkem bloků. Uzel kontroluje také to, zda tento cíl odpovídá pravidlům pro dané místo v řetězci. Podobně těžař nemůže zvolit libovolný čas. Musí být pozdější než medián předchozích 11 bloků, tedy prostřední hodnota jejich seřazených časů, a nesmí ukazovat příliš daleko do budoucnosti. Tento údaj přesto není přesný čas jednotlivých plateb ani stopky měřící dobu těžby. [2] [3]

Pořadí a velikost polí jsou pevné: version 4 bajty, hash předchozí hlavičky 32, Merkle root 32, time 4, nBits 4 a nonce 4. Dohromady je to 80 bajtů bez ohledu na počet transakcí. Identifikátor bloku vzniká dvojím použitím SHA-256 na tuto přesně zapsanou hlavičku. Číselná pole používají little-endian, tedy nejméně významný bajt jako první; hashe mají interní pořadí bajtů odlišné od běžného zobrazení identifikátoru. Při vlastním výpočtu proto nestačí slepit hodnoty tak, jak je vypíše průzkumník. [1] [4]

Pro nejúplnější obraz čtěte toto heslo společně s Block, Proof of Work, Merkle Tree, Nonce. Opačným směrem na něj odkazují také Block, Hash, SHA-256, Merkle Tree.

DOC · 001Bitcoin Core v29.0: header serializationPrimární zdroj DOC · 002Bitcoin Core v29.0: header validationPrimární zdroj DOC · 003Bitcoin Core v29.0: proof of workPrimární zdroj DOC · 004Bitcoin Developer Reference: Block HeadersPrimární zdroj
Revidováno: Primární zdroje · Nejde o investiční doporučení