Was ist eine Blockchain?

Keylearnings:

  • Was ist eine Blockchain?
  • Was ist ein SHA-256 Hash?
  • Was ist eine Immutable Ledger?
  • Was ist Blockchain Mining?
  • Was versteht man unter der Byzantine Fehlertoleranz?
  • Was versteht man unter dem Consensus Protocol?

Vertraust du mir?

Nein? Warum nicht?

Blockchain trust

Ach so, weil du mich nicht kennst. Okay, das verstehe ich. Ich verzeihe dir!

Aber würdest du mir vertrauen, wenn 100 Leute sagen, dass man mir glauben kann?

Dann schon eher. Oder? Denn 100 Leute, die das gleiche über mich  sagen lügen bestimmt nicht alle.

Und genau das ist die Grundidee der Blockchain Technologie.

Normalerweise fragen wir Daten von einer zentralen Stelle ab. Das ist okay solange es sich um die Wettervorhersage für die nächste Woche handelt.

Blockchain dezentrale Datenhaltung

Aber was ist wenn die abzufragenden Daten sensibel sind, wie es beispielsweise bei Bank- oder Immobiliengeschäften der Fall ist?

Dann gibt es zwei Möglichkeiten:

Entweder wir halten die zentralen Stelle, welche die Daten verwaltet, z.B. die Bank, für ausreichend vertrauenswürdig, oder wir verarbeiten die Daten dezentral und lassen unabhängig voneinander arbeitende Kontrollinstanzen dafür sorgen, dass die Daten valide sind.

Die zweite Variante ist das Prinzip, auf dem die Blockchain basiert, welche wir uns in diesem Artikel im Detail ansehen wollen.

Übrigens war das schwindende Vertrauen in die Banken während der Finanzkrise 2008 ein wichtiger Grund für die Entwicklung von Krypto-Währungen wie den BitCoin, welcher der berühmteste Use-Case einer Blockchain ist.

Was ist die Blockchain?

Jetzt werden wir für einen Moment sexy wie ein Gullideckel.

Die Blockchain ist nichts weiter als eine Datenstruktur und zwar eine, mit großer Ähnlichkeit zu einer, die du schon lange kennst. Nämlich der einfach verketteten Liste.

Eine Blockchain besteht aus miteinander kryptografisch verbundenen Blöcken. Hierbei hat ein Block die gleiche Funktion wie wir sie von einem Knoten in einer verketteten Liste her kennen.

Genau wie die Knoten in in einer verketteten Liste enthält jeder Block, neben den zu speichernden Daten, einen Verweis auf seinen Vorgänger.

Das besondere hierbei ist, dass es sich bei diesem Verweis um einen kryptografischen Hashwert handelt, der sich aus den in einem Block enthaltenen Informationen (fast) eindeutig berechnen lässt.

Neben dem Hashwert des Vorgänger-Blocks enthält jeder Block auch seinen eigenen Hashwert. Diesen Hashwert können wir als Fingerabdruck eines Blocks interpretieren.

Der erste Block einer Blockchain wird Genesis-Block genannt und ist der einzige Block, der keinen Vorgänger und damit natürlich auch keinen Vorgänger-Hash besitzt.

Blockchain

Im folgenden wollen wir uns die Funktion der Hashwerte im Detail ansehen.

Was ist ein SHA-256 Hash?

Der Hashwert eines Blocks kann mit dem Fingerabdruck eines Menschen verglichen werden.

Das zwei verschiedene Menschen den gleichen Fingerabdruck haben ist extrem unwahrscheinlich. Daher kann der Fingerabdruck als starkes Identifikationsmerkmal einer Person angesehen werden.

Sobald der Fingerabdruck auf der Mordwaffe einer Identität zugeordnet werden kann, ist der Fall gelöst und die Handschellen können klicken.

Genauso kann ein Hashwert als Identifikationsmerkmal von Daten angesehen werden. Verschiedene Daten haben mit allerhöchster Wahrscheinlichkeit verschiedene Hashwerte. Diese Eigenschaft nennt der Mathematiker Kollisionsfreiheit.

Wie wird der Hashwert berechnet?

Der Hashwert wird mit Hilfe einer sogenannten Hashfunktion oder eines Hash-Algorithmus berechnet.

In der Blockchain verwenden wir den von der NSA entwickelten SHA-256 Hash-Algorithmus. Hierbei steht die Abkürzung SHA für Secure Hash Algorithmus.

Als Input erwartet der Algorithmus beliebige Daten. Also ein Textdokument, ein Bild, ein Video oder eben ein Block aus der Blockchain.

Der Output des SHA-256 Algorithmus ist immer ein 256Bit langer Hashwert, den wir im Hexadezimalsystem mit einer 64 Zeichen langen Zeichenkette darstellen können.

Um ein Gefühl dafür zu bekommen, wollen wir den SHA-256 Hash der Nachricht „Hallo Welt!“  mit Hilfe dieses Hashgenerators berechnen. Wir erhalten:

a582e8c28249fe7d7990bfa0afebd2da9185a9f831d4215b4efec74f355b301a

Wonderful! Das hat so viel Spaß gemacht! Also gleich nochmal! Allerdings mit minimal veränderten Daten!

Lass uns das Ausrufezeichen aus „Hallo Welt!“ entfernen. Also den SHA-256 Hash von „Hallo Welt“ berechnen. Wir erhalten:

2d2da19605a34e037dbe82173f98a992a530a5fdd53dad882f570d4ba204ef30

Und hier können wir eine wichtige Eigenschaft eines guten Hashalgorithmus beobachten. Den sogenannten Lawineneffekt (avalanche effect).

Bereits leichte Veränderungen in den Eingangsdaten führen zu einem komplett anderen Ergebnis.

Eine weitere wichtige Eigenschaft eines Hashalgorithmus ist, dass es sich bei diesem um eine Einbahnstraße handelt.

Es ist fast unmöglich (außer mit viel viel Mühe) aus dem Hashwert den Input des Algorithmus, also unsere Nachricht zu ermitteln.

Außerdem sollte die Bestimmung des Hashwerts auf schnelle und effektive Weise möglich sein.

Wenden wir uns dem nächsten wichtigen Konzept einer Blockchain zu. Dem Konzept der Immutable Ledger!

Die Immutable Ledger

Ich spare jeden Monat etwas Geld. Ganz konservativ mit Hilfe eines Sparbuchs bei der Sparkasse.

blockchain ledger

Immer wenn ich Geld einzahle wird ein Eintrag über die Höhe des Betrags in das Sparbuch geschrieben.

Doch wer garantiert mir die Korrektheit der Einträge in diesem Buch?

Vergessen wir für einen Moment, dass der Sparkasse selbstverständlich eine Kopie des Buches in digitaler Form vorliegt.

Und nehmen wir an ich wäre böse, ganz ganz böse, dann könnte ich versuchen zu betrügen und die Einträge im Buch manipulieren. Beispielsweise einem Eintrag über 100Euro eine Null hinzufügen.

Wie kann man meinen Reichtum verhindern?

Genau das können wir mit Hilfe der Blockchain verhindern indem wir jeden Eintrag im Sparbuch als Block in einer Blockchain auffassen.

Immutable Ledger

Was passiert, wenn wir die Daten in Block zwei verändern? Beispielsweise die 50Euro in 5000Euro abändern.

Blockchain immutable wrong

Dann ist die Chain gebrochen, denn zum einen ändert sich der Hashwert von Block zwei, weshalb der in Block drei gespeicherte Vorgänger-Hash nicht mehr aktuell ist und daher nicht mehr Block zwei referenziert.

Auch ist die Korrektur des Vorgänger-Hashwerts in Block 3 nicht so einfach möglich, denn das würde auch den Hashwert dieses Blocks verändern, der dann wiederum nicht mehr zu dem Vorgänger-Hash von Block 4 passt.

Die durch die Manipulation von Block 2 verursachte Veränderung des Hashes pflanzt sich also durch die gesamte Blockchain fort und zerstört so die gesamte Kette.

Ich weiß was du denkst. Du Fuchs du! 😉

Bei einer Manipulation des letzten Blocks wird die Kette nicht gebrochen, deshalb ist die Manipulation des letzten Blocks möglich.

Ja, da hast du recht und um dieses Problem müssen wir uns noch kümmern.

Auch stellt sich die Frage, warum wir nicht einfach in den sauren Apfel beißen und ab der dritten Position einfach alle Hashwerte neu berechnen?

Ja, das wäre möglich. Allerdings dürfen wir nicht vergessen, dass unsere Blockchain nirgends zentral gespeichert ist, sondern in mehrfacher Kopie in einem sogenannten P2P (Point to Point) Netzwerk dezentral existiert. D.h. das manipulieren einer einzelnen Version der Blockchain bringt uns nichts.

Genau wie ein Eintrag im Sparbuch weder gelöscht noch verändert werden darf, ist auch das Verändern oder Löschen eines Blocks innerhalb der Blockchain verboten. Daher der Name immutable Ledger (unveränderliches Buch).

Das P2P Netzwerk

Entscheidendes Merkmal der Blockchain ist dessen dezentrale Natur, die wir mit Hilfe eines sogenannten P2P (Point to Point) Computernetzwerk erreichen.

Ein P2P Netzwerk ist eine, in der Regel große, Menge von Computern, in der jeder Rechner mit jedem anderen Rechner aus der Menge kommunizieren kann.

Jeder Computer aus dem Netzwerk besitzt eine eigene Kopie der Blockchain. Die Computer des Netzwerks werden auch Nodes (Knoten) genannt.

Sobald auf einem Knoten ein Blockchain-Block hinzugefügt wurde, muss die erweiterte Version geprüft und alle Versionen der Blockchain innerhalb des Netzwerks aktualisiert werden.

Nehmen wir an ein Angreifer manipuliert die auf einem einzelnen Knoten gespeicherte Blockchain und zerstört in dieser die kryptografische Verlinkung.

Alles halb so wild!

Network

Da die Computer innerhalb des Netzwerks aufeinander aufpassen, bekommen die Nachbarn des betroffenen Knoten das sofort mit und stellen dem angegriffenen Kollegen eine intakte Kopie der Blockchain zur Verfügung, mit welcher der Fehler unmittelbar korrigiert werden kann.

Aufgrund der redundanten Haltung der Blockchain innerhalb des P2P Netzwerks hat ein Angreifer kaum eine Aussicht auf Erfolg.

Was ist Mining?

Als nächstes wollen wir einen genaueren Blick darauf werfen von welchen Parametern der Hashwert eines Blocks abhängt. Der Hashwert berechnet sich aus den Informationen, die ein Block enthält.

Wir haben bereits festgestellt, dass ein Block zum einen die zu speichernden Daten, seinen eigenen Hashwert, eine Block-Nummer und zum anderen den Hashwert des Vorgänger-Blocks, der als kryptografische Verlinkung zwischen zwei Blöcken genutzt wird, enthält.

Blockchain Ausschnitt

Um die Verlinkung zwischen den Blöcken noch sicherer zu machen, stellen wir eine weitere Anforderung an den Hashwert.

Der Hashwert muss eine sogenannte Schwierigkeit (Difficulty) aufweisen, wobei sich diese durch die Anzahl der führenden Nullen im Hash ausdrückt.

Mit anderen Worten: Wir lassen nur eine bestimmte Menge von Hashwerten, nämlich alle unter einem vorgegebenen Schwellwert, zu.

Blockchain Mining

Moment!!!

Der Hashwert berechnet sich eindeutig aus dem Inhalt eines Blocks! Und der ist fest vorgegeben. Also wie können wir bitte schön einen Block so manipulieren, dass dieser einen Hashwert mit einer bestimmten Anzahl von Nullen hat?

Wie kann das gehen?

Wir benötigen einen Trick. Aber der ist einfach!

Wir fügen dem Blockchain-Block einfach einen weiteren Wert hinzu, den sogenannten Nonce, der nur die Aufgabe hat dafür zu sorgen, dass der für einen Block berechnete Hash die geforderte Anzahl von Nullen besitzt.

Hierbei steht Nonce für Number Used Only Once.

Blockhchain Nonce

Und die Bestimmung des Nonce, ist genau dass worum es beim Mining geht.

Bei der Kryptowährung Bitcoin wird ein erfolgreich durchgeführtes Mining, d.h. das Auffinden des richtigen Nonce, mit ein paar Coins honoriert.

Die einzige Möglichkeit den richtigen Nonce zu bestimmen besteht im stumpfem ausprobieren.

Wir müssen solange den Hashwert eines Blocks mit einem neuen Nonce berechnen, bis dieser die geforderte Anzahl führender Nullen hat. Aufgrund der Lawineneffekt Eigenschaft des Hashes ist das eine sehr rechenintensive Aufgabe.

Der Nonce, der zu einem geeigneten Hashwert führt, wird goldener Nonce genannt und die Suche nach diesem nennen wir kryptografisches Puzzle.

Das Mining ist also die Stelle, an der eine hohe Rechenleistung gefordert ist.

Sobald das Mining erfolgreich durchgeführt wurde kann der Block an die Blockchain angehängt werden.

Als nächstes wollen wir untersuchen wie wir verhindern, dass ein Teilnehmer eine falsche Version der Blockchain im P2P Netzwerk verbreiten kann.

Grundlage hierfür ist die sogenannte Byzantine Fehlertoleranz.

Was ist die Byzantine Fehlertoleranz?

Die Byzantine Fehlertoleranz ist keine Erfindung der Blockchain sondern kommt in jeglicher Art von dezentralen Systemen zum Einsatz und hat die Aufgabe die Fortpflanzung eines Fehlers innerhalb eines Netzwerks zu verhindern.

Zur Veranschaulichung der Byzantine Fehlertoleranz stellen wir uns eine Burg und vier Generäle vor, welche die Burg angreifen wollen. Alle Generäle können, genau wie die Computer in einem P2P Netzwerk, miteinander sprechen.

Byzantine

Sie haben allerdings nur dann eine Chance die Schlacht um die Burg zu gewinnen, wenn alle vier Generäle den Angriff gleichzeitig starten.

Unter den vier Generälen gibt es ein Obergeneral, der die Kommandos gibt und einen Betrüger, welcher den Angriff auf die Burg sabotieren möchte.

Leider haben wir keinen Hinweis, wer von den Vieren der Betrüger ist. Es könnte sogar sein, dass unser Obergeneral der Schuft ist.

Wie können wir unterbinden, dass unser Saboteur den Angriff verhindert oder zum falschen Zeitpunkt startet?

Nehmen wir an der General in der oberen rechten Ecke ist der Betrüger und der Obergeneral gibt den Befehl die Burg anzugreifen.

Unser Betrüger lügt und verbreitet die Nachricht, dass der Obergeneral ihm den Befehl zum Rückzug gegeben hat.

Schauen wir uns an wie sich die Nachrichten des Obergeneral und des Betrügers innerhalb des Verbundes verbreiten.

Hierbei steht ein blauer Pfeil für den Angriffsbefehl des Obergenerals und ein roter Pfeil für die Lüge des Betrügers.

Byzantine

Der General in der linken unteren Ecke hat zum einen vom Ober-General persönlich den Befehl zum Angriff und außerdem eine Bestätigung diesbezüglich vom General unten rechts erhalten. Nur unser Betrüger behauptet, dass der Angriff gestoppt werden soll. Somit steht es 2:1 Stimmen für den Angriff und der General wird dem Befehl des Obergenerals folgen und die Burg angreifen.

Analog ist die Situation des General unten rechts. Auch dieser hat 2:1 stimmen für einen Angriff erhalten.

Der Betrüger hatte mit seinem Manipulationsversuch also keinen Erfolg.

Doch was passiert, wenn der Obergeneral der Betrüger ist und verschiedene Befehle an seine Generäle gibt.

Nehmen wir an der Obergeneral befiehlt zwei seiner Generäle die Burg anzugreifen und einem General den Rückzug vorzubereiten.

Byzantine

Auch in diesem Fall würde die Burg angegriffen werden, da die beiden Generäle, welche den Befehl zum Angriff bekommen haben, den Kollegen, der vom Chef die Anweisung zum Rückzug bekommen hat, davon überzeugen die Burg anzugreifen.

Das ganze geht erst schief, sobald zwei von den vier Generälen Betrüger sind.

Man kann mathematisch beweisen, dass die korrigierende Wirkung der Byzantine Fehlertoleranz verloren geht, sobald 1/3 der Teilnehmer Betrüger sind.

Okay, aber was hat das ganze mit unserer Blockchain zu tun?

Die Byzantine Fehlertoleranz ist Grundlage des sogenannten Conensus Protokolls, mit dem Betrügerreien in der Blockchain verhindert werden.

Das Consensus Protokoll

Was kann alles schiefgehen?

Zum einen kann sich ein Angreifer Zutritt zu unserem P2P Netz verschaffen und versuchen eine Kopie der Blockchain zu manipulieren.

Wir hatten aber bereits festgestellt, dass es, aufgrund der kryptografischen Verlinkung der Blockchain-Blöcke, fast unmöglich ist einen bereits integrierten Block zu verändern.

Worum wir uns aber noch kümmern müssen, ist zu verhindern, dass ein Angreifer einen manipulierten Block der Blockchain hinzufügt und diese dann von allen Nodes in unserem P2P Netzwerk akzeptiert wird.

Das zweite Problem tritt auf, wenn zwei Nodes gleichzeitig eine neue Version der Blockchain im P2P Netzwerk verteilen wollen. Dies passiert, wenn mindestens zwei Nodes zur ungefähr gleichen Zeit mit dem Mining fertig geworden sind.

Proof of Work zur Vermeidung eines Angriffs

Was nichts kostet das ist auch nichts. So könnte das Motto des sogenannten Proof of Work lauten.

Einzige Aufgabe des Proof of Work ist dafür zu sorgen, dass das hinzufügen eines Blocks in die Blockchain mit Kosten verbunden ist. Auf diese Weise wird sichergestellt, dass jeder Teilnehmer gewissenhaft arbeitet.

Kern des Proof of Work ist das bereits besprochene Mining.

Wie wir bereits festgestellt haben ist das Mining eine sehr arbeits- und rechenintensive Aufgabe, welche im übrigen auch eine Menge elektrischen Stroms, zum Betrieb der Nodes, benötigt und daher Kosten verursacht.

Deshalb ist jeder Teilnehmer bestrebt das Mining richtig durchzuführen und die Überprüfung seiner Arbeit durch die anderen Nodes erfolgreich zu bestehen, da er ansonsten Kosten hätte ohne das ein Gewinn für ihn herausspringt.

Im Beispiel der Kryptowährung BitCoin erhält der Teilnehmer, welcher das kryptografische Puzzle erfolgreich gelöst hat 12,5 Bitcoins.

Beim Proof of Work handelt es sich also um eine Überprüfung des Arbeitsergebnis eines Miners durch die anderen Nodes, die darüber entscheidet, ob der Miner eine Belohnung erhält oder nicht.

Sobald die Überprüfung erfolgreich durchgeführt wurde kann die Blockchain auf jedem Node aktualisiert werden.

Hierbei ist wichtig zu wissen, dass zwar das Lösen des kryptografischen Puzzles rechenintensiv ist. Die Überprüfung des Ergebnisses hingegen leicht durchgeführt werden kann.

Wenden wir uns dem zweiten Problem zu!

Was passiert, wenn zwei Nodes gleichzeitig mit dem Mining fertig geworden sind?

In dem Moment, in dem zwei Nodes gleichzeitig das kryptografische Puzzle gelöst haben, werden zwei Versionen der Blockchain innerhalb unseres P2P Netzwerk verteilt.

doppeltes miningEs ist nun Aufgabe des Consensus Protokoll zu bestimmen, welche der beiden Versionen übernommen wird.

Hierzu wird zunächst gewartet bis in einer der beiden Versionen ein neuer Block hinzugefügt wird.

Es gibt also einen Zeitpunkt, in dem eine Version der Blockchain länger als die andere ist. Diese wird dann vom Consensus Protokoll übernommen.

Natürlich hat die Version, welche auf Nodes mit einer höheren Rechenpower liegt, bessere Chancen übernommen zu werden, da diese das kryptografische Puzzle schneller lösen kann. Man kann zeigen, dass eine Blockchain auf jeden Fall übernommen wird, wenn diese auf Nodes liegt, welche mindestens 51% der gesamten Rechenleistung stellen.

Ähnlich wie bei der  Byzantine Fehlertoleranz die Anzahl der bei einem General ankommenden Befehle die Basis für die Entscheidung ist, gewinnt im Consensus Protokoll die längste Blockchain.

Fazit: Ziel dieses Artikels war es, dir eine verständliche Einführung in die Blockchain Technologie zu geben. Mit Hilfe der Blockchain können wir Daten sicher, ohne eine zentrale Instanz haben zu müssen, speichern. Die Vertrauenswürdigkeit der Daten wird zum einen durch die Anwendung von Kryptografie erreicht, aber vor allem durch die Überprüfung der Blockchain durch eine Vielzahl unabhängiger Teilnehmer, die alle im Besitz einer Kopie der aktuell gültigen immutable Ledger sind.

Hat dir der Artikel gefallen? Dann folge uns doch am besten gleich auf Facebook!

Ich freue mich auf deine Fragen im Kommentarbereich!

Hallo ich bin Kim und ich möchte ein großer Programmierer werden. Machst du mit?

Kommentare (2)

  • Antworte

    Sehr gut und verständlich geschrieben und nicht nur von Informatikern zu verstehen.

    • Vielen Dank für das Feedback! Darüber freue ich mich ungemeine. Viele Grüße Kim

Hinterlasse ein Kommentar