Blockchain

Was ist ein Block auf der Blockchain?

Was ist ein Block auf der Blockchain?

In diesem Blog-Post schauen wir uns einmal genauer an, was eigentlich ein Block ist und was mehrere Blöcke zu einer Kette werden lässt. Dabei dient uns heute als Ausgangspunkt und Beispiel hauptsächlich die Bitcoin-Blockchain, was wichtig zu erwähnen ist, da sich einzelne hier beschriebene Dinge zwischen den verschiedenen Blockchains unterscheiden können. Besonders Blockchains deren Konsensmenchanismus ein anderer als Proof-of-Work ist, kann sich von dem hier Beschriebenen unterscheiden.

Wann immer Daten auf der Blockchain verändert oder neu hinzugefügt werden sollen, geschieht dies über die Erstellung von Blöcken. Solche Daten sind zum Beispiel Transaktionen von Kryptowährungen. Wenn Person A also 10 Bitcoins an Person B schicken will, wird ein Block erstellt, der diese Transaktion beinhaltet. Die Transaktion gilt als durchgeführt, sobald diese in einen Block integriert wurde. Ein Block beinhaltet dabei jedoch viele Transaktionen von verschiedenen Parteien und wird nicht explizit für eine Person erstellt, sondern immer in einem (mehr oder weniger) festen Zeitabstand.

Schauen wir uns zunächst einmal eine vereinfachte Darstellung eines Blocks an:

Die erste Information eines Blocks ist seine Nummer. Der erste Block einer Blockchain, der sogenannte Genesis Block, hat die Nummer 0 und alle Darauffolgenden erhöhen die Nummer des vorherigen Blocks um 1 (0, 1, 2, …).

Als Nächstes sehen wir auf dem Bild die sogenannte Nonce, die eine wichtige Rolle für die Validierung eines Blocks spielt und auf die wir gleich noch mal zurückkommen werden.

Im nächsten Punkt sehen wir die eigentlichen Daten, die in dem Block gespeichert werden sollen. Im Beispiel der Bitcoin-Blockchain würden hier die Bitcoin Transaktionen stehen, die über die Erstellung des Blocks durchgeführt werden.

Am Ende des Blocks sehen wir einen Hash (hier kannst du erfahren was ein Hash ist), der aus allen Informationen, die in dem Block stehen, generiert wird.

Sehen wir uns diesen Hash einmal genauer an:

“00001d5d1eec2c8649c8c0f8b2a57954156c3c4abe360fcc1848e48e9bda66d6”

Wie vielleicht auffällt, beginnt der Hash mit 4 Nullen. Das ist kein Zufall, denn über die sogenannte Block Difficulty (übersetzt: Block Schwierigkeit, wird auch Network Difficulty, Mining Difficulty, Difficulty oder Target genannt) wird genau diese Eigenschaft festgelegt, die der Hash haben soll.

Etwas vereinfacht gesagt, legt die Block Difficulty in diesem Beispiel also fest, dass der Hash, der aus dem gesamten Block generiert wird mit 4 Nullen beginnen muss. Diesen Hash zu finden ist die Aufgabe der Miner. Nun ist die Wahrscheinlichkeit, dass der Hash dieses Kriterium direkt erfüllt, sehr gering. Damit sich der Hash ändert und dem von der Difficulty festgelegten Standard entspricht, muss der Miner den Block immer weiter verändern, sodass sich auch der Hash ändert. Welche Daten des Blocks soll der Miner aber verändern, ohne dass sich die Transaktionen zu manipulieren, die über den Block abgewickelt werden sollen?

Hierzu verändert der Miner Nonce, die wir bereits zuvor kurz erwähnt hatten. Nach dem Zufallsprinzip verändert der Miner die Nonce so lange, bis der Hash des Blocks die Kriterien der Difficulty erfüllt.

(In der Realität legt die Block Difficulty jedoch noch nicht direkt fest, wie viele Nullen der Hash am Anfang haben soll, sondern sie bestimmt eine Zahl, deren Größe der Hash nicht überschreiten darf. Hier kannst du mehr über die genaue Funktionsweise erfahren.)

Schauen wir uns jetzt einmal an, wie mehrere Blöcke zu einer Kette, also der Blockchain werden:

 

Hier sehen wir, dass in den Blöcken nun Transaktionen eingetragen sind (in einem echten Block steht dort natürlich kein $, sondern beispielsweise BTC für Bitcoin) und wir sehen einen weiteren Hash unter dem Punkt “Vorgänger”. Wird ein neuer Block erstellt, wird dieser Block mit dem Hash des vorherigen Blocks versehen und sie bilden somit eine Kette. Das ist ein entscheidender Faktor, warum Blockchains als so manipulationsresistent gelten. Denn wenn ich beispielsweise eine Transaktion aus der Vergangenheit ändern würde (beispielsweise in dem Block #4 aus dem Beispiel zuvor), würde sich der Hash des Blocks verändern und ich müsste erneut die passende Nonce finden, um einen Hash zu generieren, der der Block Difficulty gerecht wird. Habe ich das geschafft, ist der Hash jedoch jetzt ein anderer, als vor meiner Manipulation und somit ändert sich auch der Vorgänger-Hash des folgenden Blocks (Block #5). Da sich der Vorgänger-Hash nun geändert hat, ändert sich auch der Hash des gesamten Blocks und ich muss den Block ebenfalls erneut minen, um der Difficulty gerecht zu werden.

 

Der nächste entscheidende Faktor, warum Blockchains als so manipulationsresistent gelten, ist, dass sie dezentral sind. Die Dezentralität entsteht dadurch, dass Blockchains, also die Ketten von Blöcken, wie wir sie zuvor betrachtet haben, nicht zentral, also an nur einem Ort, sondern an vielen verschiedenen Orten gespeichert werden. Diese Orte sind die sogenannten Nodes oder auch Full Nodes.

Wenn alle Nodes “ehrlich” sind und keine Node ihre Version der Blockchain manipuliert, haben alle dieselben Daten, was sich leicht validieren lässt, indem man den Hash des jeweils neusten Blocks von allen Nodes miteinander vergleicht. Wie wir bereits zuvor gesehen haben, verändert sich der Hash des neusten Blocks, sobald sich auch nur die kleinste Information in einem beliebigen Block zuvor verändert, da alle Blöcke über den Hash des jeweils vorherigen Blocks miteinander “verbunden” sind.

 

Was ist aber, wenn der neuste Block einer Node einen anderen Hash hat als alle anderen Nodes?

Nun stehen wir vor der Tatsache, dass es verschiedene Daten gibt und wir nicht wissen,  welche die richtigen sind. In diesem Fall gilt das als richtig, was die Mehrheit der Nodes sagt. Dieses Verhalten ist essenziell, da es sicherstellt, dass auch wenn sich Nodes voneinander unterscheiden, die Blockchain weiter funktioniert und nicht “zusammenbricht”. Schließlich könnte es sich auch um einen technischen Fehler einer Node handeln, was nicht direkt zum gesamten Kollaps des Netzwerkes füren soll.

 

Schauen wir uns jetzt einmal einen echten Block (Block 705995) von der Bitcoin-Blockchain an:

(Über einen Block-Explorer kann man ganz einfach die gesamten Vorgänge auf einer Blockchain nachvollziehen. Für dieses Beispiel dient uns dieser Block-Explorer.)

 

 

Hier sehen wir einige Kennzeichen, die wir bereits zuvor an unserer vereinfachten Darstellung eines Blocks kennengelernt haben; wie den Hash, die Difficulty und die Nonce. Die Transaktionen werden hier als Merkle Root angegeben. Die Merkle Root ist einfach gesagt ein Hash, der aus allen Transaktionen, die über diesen Block abgewickelt werden, erzeugt wurde.

Wie bereits zuvor beschrieben, werden die einzelnen Blöcke chronologisch aneinandergehängt. Wie viele Blöcke auf einen bestimmten Block folgen, sehen wir unter dem Punkt Confirmations. Diese Zahl ist inklusive des betrachteten Blocks. Das heißt, der Block in unserem Beispiel ist der neuste Block und es gibt noch keinen, der auf ihn folgt.

Um zu erfahren, wie viele Blöcke sich vor diesem befinden, können wir uns die Height anschauen. Sie gibt die genaue Anzahl der Blöcke an, die sich vor dem betrachteten Block in der Kette befinden. Der erste Block einer Blockchain hat eine Height von 0.

(Wenn Du dir jetzt den Block über einen Block-Explorer anschaust, werden die Confirmations deutlich höher sein, da im Durchschnitt alle 10 Minuten ein neuer Block auf der Bitcoin-Blockchain hinzugefügt wird. Dahingegend sollte sich die Height nicht verändert haben, da neue Blöcke ja immer an das Ende der Kette gehangen werden und nicht an den Anfang, bzw. vor den hier betrachteten Block.)

 

 

Unter dem Punk Timestamp sehen wir den genauen Zeitpunkt, an dem der Block von einem Miner erstellt wurde. In diesem Fall wird die Uhrzeit, die wir dort sehen, auf die Zeitzone des Besuchers des Block-Explorers angepasst. Auf der Blockchain steht dort also eine andere Zeit (diese richtet sich nach der Universal Time).

 

Des Weiteren sehen wir noch einige Informationen über die Transaktionen, die mit dem Block durchgeführt werden. Zunächst sehen wir die Anzahl an Transaktionen an der Number of Transaktions und des Weiteren sehen wir noch deren Volumen unter Transaction Volume. Außerdem gibt zwei konkrete Transaktionsdetails, die den Miner, also den Ersteller des Blocks betreffen: einmal den Block Reward und die Fee Rewards. Sowohl der Block Reward als auch die Fee Rewards (die Transaktionsgebühren aller im Block durchgeführten Transaktionen) werden an den Miner gesendet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert