Das fundamentale Bauteil der Blockchain.
Stell dir ein riesiges, magisches Buchhaltungsbuch vor, das Ledger. Da Millionen von Menschen gleichzeitig Überweisungen tätigen wollen, können wir nicht jede Zeile einzeln schreiben.
Stattdessen sammeln wir alle Transaktionen von etwa 10 Minuten auf einem Blatt Papier (Zielabstand 10 Minuten: chainparams.cpp, nPowTargetSpacing). Dieses Blatt ist der Block.
Der Clou: Bevor das Blatt ins Buch geheftet wird, wird es mit einem digitalen Wachssiegel versiegelt (Mining). Dieses Siegel enthält mikroskopische Spuren des vorherigen Blattes. Wenn jemand versucht, auf Seite 50 etwas zu radieren, bricht das Siegel auf Seite 51, 52, 53 und so weiter.
Der aktuelle Block enthält zwingend den Hash des Vorgängers ("Previous Hash", Whitepaper, Abschnitt 4).
So entsteht die untrennbare Kette. Hash gekürzt; echter Wert von Block #800'000 (mempool.space), die Transaktionen sind nur ein Beispiel.
Ein Block ist eine Datenstruktur, die Transaktionen aggregiert. Er besteht aus zwei Hauptkomponenten: dem Block Header (80 Bytes = 4 + 32 + 32 + 4 + 4 + 4, block.h, CBlockHeader) und dem Block Body.
Nur der Header wird für den Proof-of-Work gehasht (block.cpp, CBlockHeader::GetHash). Er enthält:
| Feld | Beschreibung |
|---|---|
| Version | Versionsnummer des Blocks (4 Bytes). |
| Previous Block Hash | Der Fingerabdruck des vorherigen Blocks. Verbindet die Kette. |
| Merkle Root | Ein einziger Hash, der alle Transaktionen im Body zusammenfasst (Whitepaper, Abschnitt 7). |
| Timestamp | Zeitstempel des Blocks in Unix-Sekunden (4 Bytes). |
| Bits (Difficulty) | Der Zielwert, den der Miner unterbieten muss (pow.cpp, CheckProofOfWork). |
| Nonce | Die "Number used once", die beim Minen variiert wird (Whitepaper, Abschnitt 4). |
Im Body liegen die Transaktionen. Hier passiert die Magie der Geldschöpfung. Die allererste Transaktion im Block ist immer einzigartig (Regeln «bad-cb-missing» / «bad-cb-multiple» in validation.cpp):
Die Coinbase hat genau einen Input ohne Vorgänger (Null-Verweis, transaction.h, IsCoinBase). Die Blocksubvention halbiert sich alle 210'000 Blöcke: 3.125 BTC gelten seit Block 840'000; im Beispielblock #800001 oben wären es noch 6.25 BTC gewesen (validation.cpp, GetBlockSubsidy, chainparams.cpp, nSubsidyHalvingInterval).