Merkle Tree
Was ist ein Merkle-Baum?
Ein Merkle-Baum ist eine Datenstruktur, die in Informatikanwendungen verwendet wird. In Bitcoin und anderen Kryptowährungen dienen Merkle-Bäume dazu, Blockchain-Daten effizienter und sicherer zu codieren.
Sie werden auch als „binäre Hash-Bäume“ bezeichnet.
Merkle Tree abbrechen
In der Bitcoin- Blockchain wird ein Transaktionsblock durch einen Algorithmus ausgeführt, um einen Hash zu generieren. Hierbei handelt es sich um eine Folge von Zahlen und Buchstaben, mit denen überprüft werden kann, ob ein bestimmter Datensatz mit dem ursprünglichen Transaktionssatz identisch ist nicht den ursprünglichen Satz von Transaktionen zu erhalten. Die Bitcoin-Software führt jedoch nicht den gesamten Transaktionsdatenblock – der durchschnittlich Transaktionen im Wert von 10 Minuten darstellt – gleichzeitig über die Hash-Funktion aus. Vielmehr wird jede Transaktion gehasht, dann wird jedes Transaktionspaar verkettet und zusammen gehasht und so weiter, bis es einen Hash für den gesamten Block gibt. (Wenn es eine ungerade Anzahl von Transaktionen gibt, wird eine Transaktion verdoppelt und ihr Hash mit sich selbst verkettet.)
Visualisiert ähnelt diese Struktur einem Baum. In der folgenden Abbildung bezeichnet „T“ eine Transaktion, „H“ einen Hash. Beachten Sie, dass das Bild stark vereinfacht ist. Ein durchschnittlicher Block enthält über 500 Transaktionen, nicht acht.
Die Hashes in der unteren Reihe werden als „Blätter“ bezeichnet, die Zwischen-Hashes als „Zweige“ und der Hash oben als „Wurzel“. Die Merkle-Wurzel eines bestimmten Blocks wird im Header gespeichert: Die Merkle-Wurzel des Blocks # 482819 lautet beispielsweise e045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8. Das Stammverzeichnis wird mit anderen Informationen (der Softwareversion, dem Hash des vorherigen Blocks, dem Zeitstempel, dem Schwierigkeitsgrad und dem Nonce) kombiniert und dann durch eine Hash-Funktion ausgeführt, um den eindeutigen Hash des Blocks zu erzeugen: 000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b198. Dieser Hash ist nicht im entsprechenden Block enthalten, sondern im nächsten. es unterscheidet sich von der Merkle-Wurzel.
Der Merkle-Baum ist nützlich, da Benutzer eine bestimmte Transaktion überprüfen können, ohne die gesamte Blockchain herunterladen zu müssen (über 130 Gigabyte Ende August 2017). Angenommen, Sie möchten überprüfen, ob die Transaktion T D im Block im obigen Diagramm enthalten ist. Wenn Sie den Root-Hash (H ABCDEFGH ) haben, ist der Vorgang wie ein Sudoku-Spiel: Sie fragen das Netzwerk nach H D ab und es werden H C, H AB und H EFGH zurückgegeben. Mit dem Merkle-Baum können Sie überprüfen, ob alles mit drei Hashes berücksichtigt wird: Wenn H AB, H C, H EFGH und die Wurzel H ABCDEFGH angegeben sind, muss H D (der einzige fehlende Hash) in den Daten vorhanden sein.
Merkle-Bäume sind nach Ralph Merkle benannt, der sie 1987 in einem Artikel mit dem Titel “ Eine digitale Signatur basierend auf einer konventionellen Verschlüsselungsfunktion “ vorschlug. Merkle erfand auch das kryptografische Hashing.