Ein Merkle-Baum ist eine Datenstruktur, die in Anwendungen der Informatik verwendet wird. In Bitcoin und anderen Kryptowährungen dienen Merkle-Bäume dazu, Blockchain-Daten effizienter und sicherer zu verschlüsseln.
Sie werden auch als "binäre Hash-Bäume" bezeichnet.
Merkle-Baum abbauen
In der Bitcoin-Blockchain wird ein Transaktionsblock durch einen Algorithmus ausgeführt, um einen Hash zu generieren. Hierbei handelt es sich um eine Zeichenfolge aus Zahlen und Buchstaben, mit der ü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 Software von Bitcoin führt jedoch nicht den gesamten Block von Transaktionsdaten durch, was einem durchschnittlichen Transaktionsvolumen von 10 Minuten entspricht. Eher wird jede Transaktion gehasht, dann wird jedes Transaktionspaar verkettet und gehasht, und so weiter, bis es einen Hash für den gesamten Block gibt. (Bei einer ungeraden Anzahl von Transaktionen wird eine Transaktion verdoppelt und der Hash mit sich selbst verknüpft.)
Visualisiert ähnelt diese Struktur einem Baum. Im folgenden Diagramm 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 ist im Header gespeichert: Beispielsweise lautet die Merkle-Wurzel des Blocks # 482819 e045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8. Der Stamm wird mit anderen Informationen (der Softwareversion, dem Hash des vorherigen Blocks, dem Zeitstempel, dem Schwierigkeitsziel und dem Nonce) kombiniert und dann durch eine Hash-Funktion geführt, um den eindeutigen Hash des Blocks zu erzeugen:. Dieser Hash ist nicht im relevanten 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 geben H C, H AB und H EFGH zurück. Mit dem Merkle-Baum können Sie mit drei Hashes überprüfen, ob alles berücksichtigt wurde: 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 herkömmlichen Verschlüsselungsfunktion" vorschlug. Merkle hat auch das kryptographische Hashing erfunden.