Merkle-Baum
Verstehen von Merkle Trees: Verbesserung der Effizienz und Sicherheit von Blockchain
Was ist ein Merkle Tree?
Ein Merkle Tree ist eine Datenverschlüsselungsstruktur, die in Datenverwaltungsanwendungen verwendet wird. Dabei werden Daten auf verschiedene Weise durch einen Hashing-Algorithmus geleitet, um einen Hash zu erzeugen, der alle Daten einer Datei repräsentiert. Merkle Trees kodieren Transaktionsdaten in Blockchains wie Bitcoin sicher und verbessern die Effizienz und Geschwindigkeit der Validierung. Merkle Trees erzeugen die Merkle Root, die zur Erstellung des Block-Hash, der eindeutigen Kennung eines Blocks, verwendet wird. Merkle Trees werden manchmal auch als "binäre Hash-Bäume" bezeichnet.
Wichtige Erkenntnisse
- Merkle Trees ermöglichen eine effiziente Überprüfung von Transaktionen in Blockchains, was die Datenvalidierung schneller und sicherer macht.
- Ein Merkle Tree erzeugt eine Merkle Root, indem Transaktionen wiederholt gehasht werden, was zu einem einzigen Hash führt, der alle Daten in einem Block repräsentiert.
- Bitcoin verwendet Merkle Trees, um alle Transaktionen innerhalb eines Blocks effizient zu hashen, wobei der Root-Hash zur Erstellung eindeutiger Blockkennungen verwendet wird.
- Die Struktur von Merkle Trees minimiert die Notwendigkeit, ganze Blockchains herunterzuladen, indem sie eine spezifische Transaktionsverifizierung mit weniger Daten ermöglicht.
- Merkle Trees gewährleisten die Integrität der Blockchain, da jede Datenänderung zu einem anderen Hash führt, wodurch falsche Blöcke abgelehnt werden.
Die Rolle von Merkle Trees in der Blockchain
Merkle Trees sind nach Ralph Merkle benannt, der sie in einem 1987 veröffentlichten Paper mit dem Titel "A Digital Signature Based on a Conventional Encryption Function" vorschlug.1 In dieser "unendlichen Baum"-Struktur werden Informationen durch eine kryptografische Funktion geleitet, die sie in eine Folge von Zahlen und Buchstaben mit einer bestimmten Anzahl von Zeichen umwandelt. Die Anzahl der Zeichen in der Ausgabe hängt davon ab, wie die Funktion programmiert ist.
Diese alphanumerische Sequenz (Hash genannt) ist so aufgebaut, dass dieselbe Eingabe immer dieselbe Ausgabe erzeugt. Die Ausgabe kann nicht zurück durch eine Funktion geschickt werden, um die ursprünglichen Informationen zu erzeugen. Dies schafft eine Möglichkeit, eine Datei mit einer anderen zu vergleichen und zu überprüfen, ob sie identisch ist, ohne den Inhalt der Datei manuell zu verifizieren. Diese Buchstaben- und Zahlenfolge wird im Allgemeinen als Hash bezeichnet, aber realistisch gesehen ist es ein hexadezimaler Wert einer bestimmten Länge, der von einem mathematischen Algorithmus erstellt wird.
Hashes werden kombiniert und erneut gehasht, dann mit anderen Hashes gepaart und wieder gehasht. Dieses kontinuierliche Hashen kodiert alle in einer Datei aufgezeichneten Transaktionen in einen einzigen Hash. Um die Transaktionen oder Informationen in dieser Struktur zu validieren oder zu verifizieren, werden die Daten von einem anderen Benutzer durch dieselbe Funktion und denselben Prozess geleitet. Der resultierende Hash sollte identisch sein, was eine Möglichkeit bietet, die in einer Datei enthaltenen Informationen zu verifizieren.
Anwendung von Merkle Trees in Blockchain-Netzwerken
Blockchains benötigen keine Merkle Trees, aber viele verwenden sie, und zwar mit verschiedenen Techniken innerhalb der Bäume. Bitcoin ist das bekannteste Beispiel, daher wird es hier als Beispiel verwendet.
Die Bitcoin-Software hasht jede Transaktion einzeln statt alle auf einmal. Jede Transaktion wird gehasht, gepaart und erneut gehasht, bis ein einziger Hash für den Block vorhanden ist. Wenn es eine ungerade Anzahl von Transaktionen gibt, wird eine Transaktion verdoppelt und ihr Hash mit sich selbst verkettet.
Visualisiert ähnelt dieser strukturierte Prozess einem umgedrehten Baum. Im Diagramm unten steht "T" für eine Transaktion, "H" für einen Hash. Beachten Sie, dass das Bild stark vereinfacht ist; ein Block kann Hunderte oder Tausende von Transaktionen enthalten. In diesen Bäumen sind die unteren Hashes "Blätter", die mittleren "Zweige" und der oberste Hash die "Wurzel".
Die Merkle Root ist der kombinierte Hash aller Transaktionen in einem Block. Zum Beispiel ist die Merkle Root des Bitcoin-Blocks #854,046:2
Sie wird mit Details wie Softwareversion, vorherigem Block-Hash, Zeit, Schwierigkeitsziel und Nonce kombiniert und dann gehasht, um einen eindeutigen Block-Hash zu erstellen:
Dieser Hash erscheint im nächsten Block, nicht in dem, aus dem er stammt. Er unterscheidet sich von der Merkle Root.
Vorteile der Verwendung von Merkle Trees in Kryptowährungen
Der Merkle Tree ist nützlich, weil er es Benutzern ermöglicht, eine bestimmte Transaktion zu verifizieren, ohne eine gesamte Blockchain herunterladen zu müssen – die Hunderte von Gigabyte groß sein kann.3 Angenommen, Sie möchten überprüfen, ob die Transaktion TD in dem oben abgebildeten Block enthalten ist. Wenn Sie den Root-Hash (HABCDEFGH) haben, können Sie das Netzwerk nach HD fragen. Es könnte HC, HAB und HEFGH zurückgeben.
Der Merkle Tree ermöglicht es Ihnen, mit drei Hashes zu überprüfen, ob alles berücksichtigt ist: Bei gegebenem HAB, HC, HEFGH und dem Root HABCDEFGH muss HD (der einzige fehlende Hash) in den Daten vorhanden sein.
Darüber hinaus ist die Struktur hilfreich, da der Prozess sehr schnell ist. Es scheint, als ob das Hashen Tausender Transaktionen zeitaufwändig wäre, aber moderne Computer können es in Millisekunden erledigen. Da es für Computer einfach ist, ist es sinnvoll, die Technik zur Überprüfung großer Datenmengen, wie der in einer Blockchain enthaltenen Daten, einzusetzen. Merkle Roots, Merkle Trees und Block-Hashes erzeugen die unveränderliche Kette von Transaktionen und Blöcken.
Wofür wird ein Merkle Tree verwendet?
Merkle Trees können in jeder Anwendung verwendet werden, die eine Validierung oder Sicherung von Informationen und Daten erfordert. In Blockchains wird die Struktur verwendet, um Merkle Roots oder Hashes aller Transaktionen in einem Block zu erzeugen, die dann zur Erstellung eines Block-Hash verwendet werden.
Wie groß kann ein Merkle Tree sein?
Die Größe eines Merkle Tree hängt von der Menge der zu hashenden Daten für die Aufnahme und davon ab, wie die Blockchain programmiert ist. Allerdings belegt der Merkle Tree eines Blocks keinen großen Speicherplatz in einer Blockchain. Beispielsweise hatte der Bitcoin-Block 854,473 2.530 Transaktionen, und der Hash jeder Transaktion ist 64 Bytes groß. Somit belegte der Merkle Tree des Blocks 161,92 KB des gesamten Blockvolumens von 1,54 MB.4
Warum verwendet Bitcoin Merkle Trees?
Bitcoin verwendet Merkle Trees, weil sie eine effiziente Möglichkeit zur Verifizierung von Transaktionen darstellen und zur Erstellung der Informationskette beitragen, die die Blöcke miteinander verbindet.