Kursinhalt
Einführung in die Blockchain
Einführung in die Blockchain
Überblick Über Hashing
Wir haben bereits mehrmals Hashing und Block-Hashes erwähnt, aber nicht wirklich viel Aufmerksamkeit darauf verwendet, daher ist es an der Zeit, zu besprechen, was Hashing eigentlich ist.
Eigenschaften von Hash-Funktionen
Im Blockchain-Bereich werden Hash-Funktionen verwendet, um:
- Transaktionen zu sichern, indem ein einzigartiger Fingerabdruck für jede erstellt wird;
- Adressen aus öffentlichen Schlüsseln zu generieren;
- Die Verbindungen in der Blockchain durch Block-Hashes zu erstellen.
Mit diesem Wissen hat eine gute Hash-Funktion für die Blockchain mehrere Schlüsseleigenschaften:
Hashing, insbesondere unter Verwendung einer guten Hash-Funktion, kann mit der Herstellung eines Smoothies verglichen werden. Schauen wir uns die folgende Illustration an:
Nun, tatsächlich ist es möglich, die ursprüngliche Eingabe aus einem Hash zu finden, jedoch würde es zu viel Zeit in Anspruch nehmen, um wirklich praktisch zu sein.
Block-Hashing
Um den Hash eines bestimmten Blocks zu erhalten, verwendet Bitcoin die SHA-256-Hash-Funktion, die einen 256-Bit (32-Byte) Hash ausgibt. Sie ist Teil der SHA-2-Familie, die von der National Security Agency (NSA) entworfen wurde und für ihre starken Sicherheitsmerkmale bekannt ist, die sie resistent gegen Kollisionen, Preimage-Angriffe und andere kryptografische Schwachstellen machen.
Der Hash eines Bitcoin-Blocks wird berechnet, indem die Block-Header-Daten genommen werden. Diese Daten werden zweimal in die SHA-256-Hash-Funktion eingegeben, in einem Prozess, der als Double SHA-256 bekannt ist.
Hier ist ein Bild, um die Dinge klarer zu machen:
Der resultierende 256-Bit-Hash muss bestimmte Kriterien erfüllen, die durch das Schwierigkeitsziel des Netzwerks definiert sind. Wenn der Hash nicht unter dem Ziel liegt, wird der Nonce angepasst und der Hash wird neu berechnet, bis ein qualifizierender Hash gefunden wird. Dieser endgültige Hash ist der eindeutige Bezeichner des Blocks.
Merkle-Wurzel
Wie bereits erwähnt, ist die Merkle-Wurzel ein einzelner Hash, der alle im Block enthaltenen Transaktionen repräsentiert. Die Berechnung einer Merkle-Wurzel beginnt mit den Hashes jeder Transaktion in einem Block. Auch hier wird Double SHA-256 verwendet.
Jeder Hash wird dann mit einem anderen gepaart und sie werden zusammen gehasht, um einen neuen Hash zu bilden. Dieser Prozess des Paarens und Hashens der neuen Hashes wird fortgesetzt, bis nur noch ein Hash übrig bleibt. Der endgültige Hash ist die Merkle-Wurzel, die alle Transaktionen im Block repräsentiert und ihre Integrität sicherstellt, indem sie die gesamte Menge der Transaktionen in einen einzigen Hash kodiert. Ein solcher Prozess bildet einen Merkle-Baum.
Schauen wir uns ein Beispiel für einen Merkle-Baum an:
Wie Sie sehen können, enthält unser Block 6 Transaktionen (jeweils als Tx bezeichnet) und durch Hashing und Paarung neuer Hashes wird eine Merkle-Wurzel berechnet.
Danke für Ihr Feedback!