Kurz erklärt: Der Block-Header ist der kompakte Kopfbereich eines Blocks in einer Blockchain. Er fasst die wichtigsten Metadaten eines Blocks zusammen – bei Bitcoin in nur 80 Byte – und ist der Datensatz, auf den beim Mining die Hash-Funktion angewendet wird.
Funktion und Einordnung
Ein Block besteht aus zwei Teilen: dem Header mit den Metadaten und dem Block-Körper mit der Liste der Transaktionen. Der Block-Header verknüpft die Blöcke zu einer Kette, denn er enthält den Hash des jeweils vorhergehenden Headers. Wird der Inhalt eines früheren Blocks nachträglich verändert, ändert sich dessen Hash, wodurch alle folgenden Header ungültig werden. Diese Verkettung bildet die Grundlage der Manipulationssicherheit einer Blockchain.
Beim Proof-of-Work-Mining berechnen Miner wiederholt den Hash des Block-Headers und variieren dabei die Nonce, bis das Ergebnis das geforderte Difficulty-Ziel unterschreitet. Da nur der Header gehasht wird und nicht der gesamte Block, bleibt das Mining recheneffizient.
Aufbau des Bitcoin-Block-Headers
Der Bitcoin-Header ist exakt 80 Byte groß und besteht aus sechs Feldern:
| Feld | Grösse | Bedeutung |
|---|---|---|
| Version | 4 Byte | Protokollversion und Signalisierung von Upgrades |
| Vorgänger-Hash | 32 Byte | Hash des vorherigen Block-Headers |
| Merkle-Root | 32 Byte | Prüfsumme über alle Transaktionen des Blocks |
| Zeitstempel | 4 Byte | ungefährer Erstellungszeitpunkt (Unix-Zeit) |
| Bits (Target) | 4 Byte | kodiertes Schwierigkeitsziel |
| Nonce | 4 Byte | variabler Wert zur Erfüllung des Ziels |
Der Hash über diese 80 Byte (bei Bitcoin doppeltes SHA-256) dient zugleich als eindeutige Kennung des Blocks.
Merkle-Root und Datenintegrität
Die Merkle-Root ist die Wurzel eines Merkle-Baums, der aus den Hashes aller Transaktionen des Blocks aufgebaut wird. Sie fasst beliebig viele Transaktionen zu einem einzigen 32-Byte-Wert zusammen. Ändert sich auch nur eine Transaktion, ändert sich die Merkle-Root und damit der gesamte Header-Hash. Dadurch kann ein leichtgewichtiger Client (Simplified Payment Verification) prüfen, ob eine Transaktion in einem Block enthalten ist, ohne den vollständigen Block herunterladen zu müssen.
Unterschiede zwischen Netzwerken
Andere Blockchains erweitern den Header um zusätzliche Felder. Der Header von Ethereum ist deutlich umfangreicher und enthält unter anderem Verweise auf den Zustands-Baum (State Root), den Transaktions-Baum und den Empfangs-Baum sowie – vor der Umstellung auf Proof of Stake – ein Feld für die Referenz auf Uncle-Blöcke. Bitcoin-nahe Coins wie Litecoin übernehmen dagegen die 80-Byte-Struktur weitgehend unverändert und ändern lediglich die verwendete Hash-Funktion (bei Litecoin Scrypt statt SHA-256).
Häufige Fragen
Wie groß ist ein Block-Header?
Bei Bitcoin ist der Block-Header exakt 80 Byte groß. Andere Netzwerke wie Ethereum verwenden umfangreichere Header mit zusätzlichen Feldern.
Was wird beim Mining gehasht – der ganze Block?
Nein, nur der 80 Byte große Block-Header. Da er über die Merkle-Root alle Transaktionen absichert, genügt es, den Header zu hashen.
Wozu dient der Vorgänger-Hash im Header?
Er verweist auf den vorherigen Block und verkettet so alle Blöcke. Eine nachträgliche Änderung eines alten Blocks würde alle folgenden Hashes ungültig machen.
Was ist die Merkle-Root?
Sie ist eine kompakte Prüfsumme über alle Transaktionen des Blocks. Ändert sich eine einzige Transaktion, ändert sich die Merkle-Root und damit der Header-Hash.
Warum steht die Difficulty im Header?
Das Feld Bits kodiert das aktuelle Schwierigkeitsziel. Jeder Knoten kann so unabhängig prüfen, ob der Header-Hash das geforderte Ziel unterschreitet.
Zusammenfassung
Der Block-Header ist der Metadaten-Kopf eines Blocks und verkettet über den Vorgänger-Hash alle Blöcke zu einer Blockchain. Er enthält Version, Vorgänger-Hash, Merkle-Root, Zeitstempel, Schwierigkeitsziel und Nonce. Beim Proof-of-Work-Mining wird ausschliesslich dieser 80 Byte große Header gehasht, was die Absicherung effizient macht.
Weiterführende Quellen
- Bitcoin Developer Reference – Block Headers: developer.bitcoin.org
- Wikipedia: Blockchain: de.wikipedia.org