Blockchain/Niveau II · Mechanik/2.3 Blöcke und die Blockchain/Lektion 2
Merkle-Bäume
Der 32-Byte-Fingerabdruck, der Tausende von Transaktionen bindet
MaterialienEin Block-Explorer mit Visualisierung von Merkle-BranchesVier kurze alphanumerische Bezeichnungen (A, B, C, D)Ein Tool für doppeltes SHA-256-Hashing
Neugier
- Wie kann ein einziger Hash-Wert die Aufnahme von viertausend verschiedenen Transaktionen bestätigen?
- Warum entschied sich Satoshi dafür, einen allein stehenden letzten Eintrag mit sich selbst zu paaren – und welchen Preis hatte diese Entscheidung?
- Welche konkrete Schwachstelle führte die Regel der Duplikat-Paarung in der frühen Implementierung von Bitcoin ein?
Erkunden
- Ralph Merkle meldete 1979 ein Patent auf den binären Hash-Baum an (erteilt 1982) – eine Datenstruktur, die große Datensätze effizient zusammenfassen soll. In Bitcoin reduziert diese Architektur Tausende von Transaktions-IDs auf einen einzigen 32-Byte-Wert, die sogenannte Merkle-Root. Diese Root wird direkt in den 80 Byte großen Block-Header eingebettet und stellt so ein unveränderliches kryptografisches Commitment auf jede Transaktion in genau diesem Block dar.
- Der Aufbau erfolgt rekursiv von unten nach oben. Transaktions-IDs werden paarweise verkettet und durch doppeltes SHA-256-Hashing verarbeitet, um Elternknoten zu erzeugen. Diese Paarung setzt sich Ebene für Ebene fort, bis nur noch ein einziger Root-Hash übrig bleibt. Enthält eine Ebene eine ungerade Anzahl von Einträgen, wird der letzte Eintrag mit sich selbst gepaart, um die binäre Struktur zu erhalten und sicherzustellen, dass der Baum auf jeder Stufe korrekt ausbalanciert ist.
- Die logarithmische Natur dieser Struktur ermöglicht Simplified Payment Verification (SPV). Ein Light Client lädt keine vollständigen Blöcke herunter, sondern fordert bei einem Full Node einen Merkle-Branch an. Dieser Branch besteht nur aus den Geschwister-Hashes entlang des Pfads von einer bestimmten Transaktion bis zur Root. Für einen Block mit 4.000 Transaktionen erfordert dieser Nachweis etwa zwölf Hash-Werte – ein Bruchteil der gesamten Datenmenge.
- Indem er seinen eigenen Transaktions-Hash mit diesen bereitgestellten Geschwister-Hashes kombiniert, berechnet ein Light Client die Merkle-Root neu und vergleicht sie mit dem Wert im heruntergeladenen Block-Header. Stimmen beide überein, ist die Aufnahme kryptografisch verifiziert – ohne dass die gesamte Kette gespeichert werden muss. Dieser Mechanismus ermöglicht es mobilen Wallets, auf Geräten mit begrenztem Speicher und geringer Rechenleistung sicher zu funktionieren.
- Segregated Witness (SegWit), im August 2017 aktiviert, führte eine zweite Merkle-Tree-Struktur ein. Während sich der ursprüngliche Baum auf die Transaktions-IDs festlegt, legt sich der Witness-Baum auf die Witness-Transaktions-IDs fest. Die Root dieses zweiten Baums wird nicht im Header gespeichert; ihr Commitment steht in einem OP_RETURN-Output der Coinbase-Transaktion, den alte Nodes als gewöhnliche Daten behandeln, wodurch die Kompatibilität erhalten bleibt.
- Die Regel der Selbstpaarung verbarg einen Fehler (CVE-2012-2459). Da ein allein stehender letzter Eintrag mit sich selbst gepaart wird, erzeugt eine Transaktionsliste, die auf einem duplizierten Paar endet, dieselbe Merkle-Root wie die Liste ohne das Duplikat. Ein Angreifer konnte diese fehlerhafte Variante eines gültigen Blocks weiterleiten; Nodes, die sie ablehnten, konnten den Hash des echten Blocks als ungültig markieren und den Gleichschritt mit dem Netzwerk verlieren. Seit der Korrektur von 2012 erkennen Nodes dieses Muster, statt den Block als ungültig zwischenzuspeichern.
Kernfakten
- Die Merkle-Root ist ein einzelner 32-Byte-Hash im Block-Header, der ein Commitment auf alle Transaktionen im Block darstellt.
- Bitcoin verwendet bei der Erstellung des Merkle-Trees auf jeder Ebene das doppelte SHA-256-Hashing.
- Eine ungerade Anzahl von Einträgen auf einer beliebigen Ebene wird behandelt, indem der letzte Eintrag mit sich selbst gepaart wird.
- Ein Merkle-Proof für eine Transaktion in einem großen Block erfordert in der Regel etwa zwölf Geschwister-Hashes.
- SegWit fügte einen zweiten Merkle-Tree über die Witness-Transaktions-IDs hinzu, dessen Commitment in der Coinbase-Transaktion steht.
- CVE-2012-2459 war ein Fehler im Zusammenhang mit der Logik der Duplikat-Paarung in frühen Versionen von Bitcoin Core.
Übung neun, sechs, drei, eins
9SammelnListen Sie 9 reale Systeme oder Protokolle auf, die Hash-Bäume zur Überprüfung der Datenintegrität nutzen.
6GruppierenGruppieren Sie die 9 danach, was sie schützen, in 6 Kategorien: Dateien, Softwarepakete, Zertifikate, Datenbanken, Blockchains oder Sonstiges.
3VerdichtenReduzieren Sie die 6 Gruppen auf 3 zentrale Gründe, warum eine logarithmische Beweisstruktur gegenüber der linearen Durchsuchung bei großen Datensätzen bevorzugt wird.
1KristallisierenErklären Sie in einem Satz, wie die Änderung eines einzigen Bits in einem Blattknoten den gesamten Root-Hash verändert.
Faktcheck
Datumsangaben, Zahlen und Behauptungen wurden mit den unten aufgeführten veröffentlichten Quellen abgeglichen.