In der Blockchain-Technologie spielt das Hashing-Verfahren eine zentrale Rolle, um die Sicherheit und Integrität der Datenkette zu gewährleisten. Die Verkettung von Blöcken durch kryptografische Hash-Funktionen ist das zentrale architektonische Prinzip, das der Blockchain ihren Namen gibt und ihre revolutionären Eigenschaften ermöglicht.
Jeder Block innerhalb einer Blockchain wird vollständig gehasht, d.h., aus dem gesamten Inhalt des Blocks wird mittels einer kryptografischen Hash-Funktion ein eindeutiger Hash-Wert (auch “Fingerabdruck” genannt) erzeugt. Dieser Hash-Wert dient als repräsentative Identität des Blocks und enthält implizit die Informationen über alle Transaktionen und Daten, die im Block gespeichert sind.
Die Verkettung von Blöcken in einer Blockchain erfolgt durch die Referenzierung des Hash-Wertes des vorherigen Blocks im nachfolgenden Block. Anstatt eine einfache ID oder Blocknummer zu verwenden, enthält jeder Block den kompletten Hash-Wert seines “Eltern”-Blocks. Dieser Mechanismus stellt sicher, dass jeder Block untrennbar mit seinem Vorgänger verbunden ist.
In den meisten Blockchain-Implementierungen erfolgt diese Verkettung im Blockheader. Ein typischer Blockheader enthält:
Der vollständige Blockheader wird gehasht, um den Identifier des aktuellen Blocks zu erzeugen. Da der Blockheader den Hash des Vorgängerblocks enthält, wirkt sich jede Änderung in einem früheren Block auf alle nachfolgenden Blöcke aus.
In diesem Diagramm werden die Blöcke als Knoten (B1, B2, B3, B4) dargestellt, die jeweils durch Kanten miteinander verbunden sind, um die Verkettung zu symbolisieren. Jede Kante ist mit einem Label versehen, das den Hash des vorherigen Blocks (z.B. “Hash von B1: h1”) angibt, um die Referenzierung zu verdeutlichen. Dadurch wird illustriert, wie jeder Block auf den Hashwert des vorherigen Blocks verweist, was eine grundlegende Eigenschaft der Blockchain-Technologie ist.
Um den Prozess der Hash-basierten Verkettung besser zu verstehen, betrachten wir die Entstehung einer Blockchain Schritt für Schritt:
Genesis-Block: Die Blockchain beginnt mit einem ersten Block (Genesis-Block), der keinen Vorgänger hat. In diesem Block wird oft ein spezieller Wert als “Vorgänger-Hash” verwendet (z.B. eine Zeichenfolge aus Nullen).
Erstellung des ersten regulären Blocks:
Fortführung der Kette: Jeder weitere Block folgt demselben Muster, wobei der Hash des jeweils letzten Blocks in den Header des neuen Blocks aufgenommen wird.
Ein konkretes Beispiel aus der Bitcoin-Blockchain:
Block #724384:
- Vorgänger-Hash: 000000000000000000065a6e2d2c86cffc5d1dd57b491ebb24e53d3e05926ac5
- Merkle-Root: b7ec8bcd6768ea720e43568f68f3f4469257c9e62381fee9ae83b4cb246a2b37
- Zeitstempel: 1647185296
- Schwierigkeitsgrad: 27452707696466.0
- Nonce: 1201448641
- Resultierender Block-Hash: 0000000000000000000656f0caab8d1d37818dce2e17d111394db0b37149ae3d
Block #724385:
- Vorgänger-Hash: 0000000000000000000656f0caab8d1d37818dce2e17d111394db0b37149ae3d
- ...
Man beachte, wie der Hash von Block #724384 zum Vorgänger-Hash in Block #724385 wird.