Wie werden Merkle Trees in der Blockchain-Technologie verwendet und warum?
Im Bitcoin-Netzwerk fasst ein Merkle Tree alle Transaktionen innerhalb eines Blocks zusammen, indem er einen digitalen Fingerabdruck des gesamten Transaktionssatzes erstellt. Auf diese Weise kann ein Benutzer überprüfen, ob eine Transaktion in einem Block enthalten ist oder nicht.
Alle Nodes in der baumartigen Struktur des Merkle Trees sind Teil-Repräsentationen der darunter liegenden gehashten Daten.
Nun fragst du dich vielleicht, warum ein Hash-Baum erforderlich ist, um dies zu beweisen? Wäre es nicht möglich, alle Nachrichten (die ursprünglichen Daten) zu hashen, die gehashten Werte in eine einzige Zeichenkette zu packen und auf diese Weise den Wert des Wurzel-Hashes zu erhalten? Warum machen Merkle Trees uns das Leben leichter?
Eine Frage des Vertrauens
Stell dir ein Leben ohne Merkle Trees vor. Anstelle der Merkle-Wurzel würden wir einen Hash aller Transaktionen aus der Blockchain im Block-Header speichern. Das bedeutet: Um nur eine einzige Transaktion zu verifizieren, müssten wir die Daten sämtlicher Transaktionen herunterladen.
Merkle Trees verringern die Menge der für die Überprüfung benötigten Daten. Nehmen wir an, Marie möchte Lukas beweisen, dass die Transaktion "m6" nicht manipuliert wurde. Lukas könnte den Root-Hash von einer vertrauenswürdigen Quelle erhalten und verifizieren, dass dies tatsächlich so ist.
Würden Marie und Lukas keinen Merkle Tree hinzuziehen, müsste Marie Lukas sämtliche gehashte Transaktionen vorlegen, um zu beweisen, dass "m6" nicht manipuliert wurde. Ein Merkle Tree ist hier eine viel bessere Möglichkeit, um das zu überprüfen. Auch hier erhält Lukas die Wurzel von einer Quelle, der er vertraut. Wenn Marie nun beweisen will, dass "m6" nicht manipuliert wurde, muss sie nur wie in der folgenden Grafik dargestellt die Nachricht und vier gehashte Werte (in der Grafik in lila) an Lukas senden: