Überblick Über Hashing
Hashing und Block-Hashes wurden bereits mehrfach erwähnt, jedoch wurde das Konzept selbst noch nicht im Detail betrachtet. Nun ist es an der Zeit zu verstehen, was Hashing tatsächlich ist.
Hashing ist ein Verfahren, das eine Eingabe nimmt und eine Zeichenkette fester Länge erzeugt, die typischerweise als Hexadezimalzahl dargestellt wird. Die Ausgabe, bekannt als Hash, wirkt zufällig und ändert sich vollständig bei jeder Änderung der Eingabe, eine Eigenschaft, die als "Lawineneffekt" bezeichnet wird.
Eigenschaften von Hashfunktionen
In der Blockchain werden Hashfunktionen verwendet, um:
- Transaktionen durch die Erstellung eines eindeutigen Fingerabdrucks abzusichern;
- Adressen aus öffentlichen Schlüsseln zu generieren;
- Die Verknüpfungen in der Blockchain durch Block-Hashes herzustellen.
Vor diesem Hintergrund weist eine gute Hashfunktion für die Blockchain mehrere zentrale Eigenschaften auf:
Hashing, insbesondere unter Verwendung einer guten Hashfunktion, lässt sich mit der Zubereitung eines Smoothies vergleichen. Nachfolgend eine entsprechende Illustration:
Tatsächlich ist es möglich, die ursprüngliche Eingabe anhand eines Hashs zu ermitteln, allerdings würde dies zu viel Zeit in Anspruch nehmen, um praktisch umsetzbar zu sein.
Block-Hashing
Um den Hash eines bestimmten Blocks zu berechnen, verwendet Bitcoin die SHA-256-Hashfunktion, die einen 256-Bit (32-Byte) Hash erzeugt. Sie ist Teil der SHA-2-Familie, entwickelt von der National Security Agency (NSA), und bekannt für ihre starken Sicherheitsmerkmale, wodurch sie gegen Kollisionen, Preimage-Angriffe und andere kryptografische Schwachstellen resistent ist.
Der Hash eines Bitcoin-Blocks wird berechnet, indem die Daten des Block-Headers verwendet werden. Diese Daten werden zweimal in die SHA-256-Hashfunktion eingegeben, ein Vorgang, der als Double SHA-256 bezeichnet wird.
Hier eine Abbildung zur Veranschaulichung:
Der resultierende 256-Bit-Hash muss bestimmte Kriterien erfüllen, die durch das Schwierigkeitsziel des Netzwerks definiert sind. Liegt der Hash nicht unter dem Zielwert, wird der Nonce angepasst und der Hash erneut berechnet, bis ein qualifizierender Hash gefunden wird. Dieser endgültige Hash ist der eindeutige Bezeichner des Blocks.
Merkle-Wurzel
Die Merkle-Wurzel ist ein einzelner Hash, der alle in einem Block enthaltenen Transaktionen repräsentiert. Die Berechnung beginnt mit den Hashes jeder einzelnen Transaktion unter Verwendung von doppeltem SHA-256.
Jeder Transaktionshash wird anschließend mit einem anderen gepaart, und das Paar wird gemeinsam gehasht, um einen neuen Hash zu erzeugen. Dieser Prozess des Paarens und Hashens wird Schicht für Schicht fortgesetzt, bis nur noch ein Hash übrig bleibt. Der endgültige Hash ist die Merkle-Wurzel, die die gesamte Menge der Transaktionen zusammenfasst und deren Integrität gewährleistet, indem sie sie in einen einzelnen Wert kodiert. Diese hierarchische Struktur ist als Merkle-Baum bekannt.
Das folgende Beispiel veranschaulicht, wie ein Merkle-Baum gebildet wird:
Wie zu sehen ist, enthält unser Block 6 Transaktionen (jeweils als Tx bezeichnet) und durch Hashing und Paarbildung neuer Hashes wird eine Merkle-Wurzel berechnet.
Immer wenn der ganz rechte Hash kein Paar hat, wie bei Hash56 in unserem Beispiel, wird dieser letzte Hash dupliziert, um ein Paar zu bilden. Diese Technik erhält die Integrität und Effizienz der Merkle-Baum-Struktur auch bei ungerader Anzahl von Transaktionen oder Hashes zu einem bestimmten Zeitpunkt.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 6.25
Überblick Über Hashing
Swipe um das Menü anzuzeigen
Hashing und Block-Hashes wurden bereits mehrfach erwähnt, jedoch wurde das Konzept selbst noch nicht im Detail betrachtet. Nun ist es an der Zeit zu verstehen, was Hashing tatsächlich ist.
Hashing ist ein Verfahren, das eine Eingabe nimmt und eine Zeichenkette fester Länge erzeugt, die typischerweise als Hexadezimalzahl dargestellt wird. Die Ausgabe, bekannt als Hash, wirkt zufällig und ändert sich vollständig bei jeder Änderung der Eingabe, eine Eigenschaft, die als "Lawineneffekt" bezeichnet wird.
Eigenschaften von Hashfunktionen
In der Blockchain werden Hashfunktionen verwendet, um:
- Transaktionen durch die Erstellung eines eindeutigen Fingerabdrucks abzusichern;
- Adressen aus öffentlichen Schlüsseln zu generieren;
- Die Verknüpfungen in der Blockchain durch Block-Hashes herzustellen.
Vor diesem Hintergrund weist eine gute Hashfunktion für die Blockchain mehrere zentrale Eigenschaften auf:
Hashing, insbesondere unter Verwendung einer guten Hashfunktion, lässt sich mit der Zubereitung eines Smoothies vergleichen. Nachfolgend eine entsprechende Illustration:
Tatsächlich ist es möglich, die ursprüngliche Eingabe anhand eines Hashs zu ermitteln, allerdings würde dies zu viel Zeit in Anspruch nehmen, um praktisch umsetzbar zu sein.
Block-Hashing
Um den Hash eines bestimmten Blocks zu berechnen, verwendet Bitcoin die SHA-256-Hashfunktion, die einen 256-Bit (32-Byte) Hash erzeugt. Sie ist Teil der SHA-2-Familie, entwickelt von der National Security Agency (NSA), und bekannt für ihre starken Sicherheitsmerkmale, wodurch sie gegen Kollisionen, Preimage-Angriffe und andere kryptografische Schwachstellen resistent ist.
Der Hash eines Bitcoin-Blocks wird berechnet, indem die Daten des Block-Headers verwendet werden. Diese Daten werden zweimal in die SHA-256-Hashfunktion eingegeben, ein Vorgang, der als Double SHA-256 bezeichnet wird.
Hier eine Abbildung zur Veranschaulichung:
Der resultierende 256-Bit-Hash muss bestimmte Kriterien erfüllen, die durch das Schwierigkeitsziel des Netzwerks definiert sind. Liegt der Hash nicht unter dem Zielwert, wird der Nonce angepasst und der Hash erneut berechnet, bis ein qualifizierender Hash gefunden wird. Dieser endgültige Hash ist der eindeutige Bezeichner des Blocks.
Merkle-Wurzel
Die Merkle-Wurzel ist ein einzelner Hash, der alle in einem Block enthaltenen Transaktionen repräsentiert. Die Berechnung beginnt mit den Hashes jeder einzelnen Transaktion unter Verwendung von doppeltem SHA-256.
Jeder Transaktionshash wird anschließend mit einem anderen gepaart, und das Paar wird gemeinsam gehasht, um einen neuen Hash zu erzeugen. Dieser Prozess des Paarens und Hashens wird Schicht für Schicht fortgesetzt, bis nur noch ein Hash übrig bleibt. Der endgültige Hash ist die Merkle-Wurzel, die die gesamte Menge der Transaktionen zusammenfasst und deren Integrität gewährleistet, indem sie sie in einen einzelnen Wert kodiert. Diese hierarchische Struktur ist als Merkle-Baum bekannt.
Das folgende Beispiel veranschaulicht, wie ein Merkle-Baum gebildet wird:
Wie zu sehen ist, enthält unser Block 6 Transaktionen (jeweils als Tx bezeichnet) und durch Hashing und Paarbildung neuer Hashes wird eine Merkle-Wurzel berechnet.
Immer wenn der ganz rechte Hash kein Paar hat, wie bei Hash56 in unserem Beispiel, wird dieser letzte Hash dupliziert, um ein Paar zu bilden. Diese Technik erhält die Integrität und Effizienz der Merkle-Baum-Struktur auch bei ungerader Anzahl von Transaktionen oder Hashes zu einem bestimmten Zeitpunkt.
Danke für Ihr Feedback!