Die Blockchain – ein Begriff, der schon seit einigen Jahren umhergeistert. Dinge wie Kryptowährungen aber auch NFTs und andere Innovationen basieren auf der Idee der Blockchain. Entstanden ist das Konzept gemeinsam mit dem Bitcoin – einer digitalen Kryptowährung, die ohne die Kontrolle durch Institutionen auskommt. Und obwohl die „Blockchain“ aus unserer Tech-Welt mittlerweile gar nicht mehr wegzudenken ist, wissen viele immer noch nicht, was sie sich darunter vorstellen sollen. Das ist auch nicht verwunderlich. So ganz einfach ist die Frage, wie die Blockchain eigentlich funktioniert und was genau das eigentlich ist, auch nicht beantwortet. Damit ihr aber in Zukunft wisst, wovon ihr sprecht, erklären wir euch in diesem Artikel nun ein für alle Mal, wie die Blockchain funktioniert.
Was ist die Blockchain? – Short and Simple
Zu der Frage „Was ist die Blockchain?“ haben wir bereits einen Artikel veröffentlicht. Dort geht es etwas abstrakter um die Idee der Blockchain und weniger um ihre konkrete Funktionsweise. Nichtsdestotrotz werdet ihr zwischen dem Artikel und diesem hier einige Überschneidungen finden. Die Blockchain ist eine dezentrale Datenbank mit einem ganz speziellen Mechanismus, der es möglich macht, Eigentum eindeutig zuzuweisen und Teilnehmern zuzuordnen. Dabei sind alle Teilnehmer miteinander vernetzt. Durch die Dezentralität der Blockchain wird diese Datenbank mit den Informationen über Eigentümer nicht an einem Standort gespeichert, sondern bei jedem Teilnehmer des Netzwerkes.
Die „Eigentümer“ sind letztlich Transaktionen, die zwischen Netzwerkteilnehmern hin- und hergehen und können einen unterschiedlichen Wert haben. Ein populäres Beispiel für solche Eigentümer sind Kryptowährungen aber auch Verträge zwischen Teilnehmern oder sogenannte NFTs.
Entworfen wurde das Konzept der Blockchain im Zusammenhang mit der digitalen Kryptowährung „Bitcoin“. Hier könnt ihr das ursprüngliche Paper dazu lesen.
Wie funktioniert die Blockchain?
Ziel dieses Artikels ist es, dass ihr die Blockchain wirklich versteht. Die obige Definition mag dabei sicherlich helfen, aber um sie wirklich zu verstehen, ist es am einfachsten, wenn wir uns die Blockchain „herleiten“. Diesen Ansatz habe ich mir nicht selbst ausgedacht sondern in diesem Video des YouTube-Kanals 3Blue1Brown gesehen.
Die wesentlichen Aspekte der Blockchain
Wenn wir uns die Blockchain und ihre Funktion detaillierter angucken, müssen wir vier wesentliche Aspekte verstehen. Zum einen werden wir in diesem Artikel ein Verständnis für das Speichern von Transaktionen entwickeln und uns anschauen, wie wir diesen Transaktionen einen Wert zuschreiben können. In diesem Atemzug werden wir auch über digitale Signaturen sprechen, mit deren Hilfe wir Transaktionen validieren können. Außerdem werden wir uns mit dem Aspekt der dezentralen Speicherung und dem Proof-of-Work-Konzept beschäftigen. Hierbei schauen wir uns auch an, warum die Idee der Blockchain in der Realität funktioniert und wie sie aus sich selbst heraus vor Fehlern oder Manipulationen geschützt sind.
Die Verwaltung von Transaktionen
Stellt euch vor, ihr und eure Freund*innen gebt euch immer wieder regelmäßig gegenseitig Geld. Um Beispielsweise euren Anteil an einer gemeinsamen Aktivität zu bezahlen. Also Freund*in A gibt Freund*in B Geld und Freund*in B wiederum gibt Freund*in C Geld und so weiter. Jeder, der schonmal mit einer Gruppe von Leuten in den Urlaub gefahren ist, weiß dass man hierbei schnell den Überblick verliert und das Bargeld hier nicht immer die beste Wahl ist. Um das Ganze zu vereinfachen, beginnt ihr also jedes Mal, wenn jemand Geld hin- und herschiebt, einen Eintrag in eine Art Logbuch zu schreiben, anstatt das Geld wirklich zu bezahlen. Dieses Logbuch wertet ihr dann nach dem gemeinsamen Urlaub aus und jeder zahlt dann das Geld, dass er gemäß den Einträgen im Logbuch schon gezahlt hat. So müsst ihr nur einmal am Ende der Zeit Geld hin- und herschieben.
So ein Logbuch könnte Ende des Urlaubs also beispielsweise so aussehen:
- Freund*in A gibt Freund*in B 10 Euro
- Freund*in C gibt Freund*in A 30 Euro
- …
Schön und gut, aber dieses Logbuch hat einen Schwachpunkt: So könntet ihr euch einfach in der Nacht heimlich aus dem Bett stehlen und eine Zeile in das Logbuch eintragen, in der ihr euch von jemand anderem Geld überweisen lasst. Dort könnte also stehen
- Freund*in B gibt euch 20 Euro
Am Ende des Urlaubs würde euch dann Freund*in B die 20 Euro geben. Ihr würdet ihn/sie also gepflegt übers Ohr hauen.
Transaktionen signieren
Die Frage danach, wie wir solche Transaktionen vor Manipulationen schützen, ist ein wesentlicher Bestandteil der Frage „Wie funktioniert die Blockchain?“. Um sich vor Manipulationen zu schützen, gibt es nämlich die Möglichkeit, Transaktionen in so einem Logbuch mit eindeutigen Signaturen zu versehen. Das passiert auch in der Blockchain – aber dazu später mehr.
Stellt euch also vor, dass eine Transaktion in eurem gemeinsamen Logbuch nur dann als „gültig“ erachtet wird, wenn die Person, die euch Geld gibt mit einer Unterschrift bestätigt, dass diese Transaktion auch wirklich stattgefunden hat. In dem oben genannten Fall müsste also Person B seine Unterschrift neben euren Eintrag setzen, damit ihr am Ende des Urlaubs euer Geld bekommt. Sollte Freund*in B euch aber nie Geld gegeben haben oder das gar nicht wollen, wäre er/sie ziemlich doof das zu tun.
Diese Signaturen sind zum einen nicht sonderlich fälschungssicher – immerhin könntet ihr die Unterschrift von Freund*in B ja kopieren – und besonders dann, wenn wir über ein digitales Logbuch sprechen, geht die Eindeutigkeit schnell verloren. Es muss also eine eindeutige Digitale Signatur her. Und hier kommen wir zu dem „Krypto“ im Wort „Kryptowährung“.
Digitale Signaturen
Auf der Blockchain werden also digitale Signaturen verwendet, um die „Echtheit“ von Transaktionen zu bestätigen. Du und deine Freund*innen wollen das jetzt genauso machen. Nehmen wir an, eine*r von euch war vor dem Urlaub ehrgeizig und hat eine kleine Website programmiert, auf der ihr eure Transaktionen eintragen und speichern könnt. Hier habt ihr auch die Möglichkeit, eure Transaktionen zu signieren. Alles was wir dafür brauchen sind ein geheimer und ein öffentlicher Schlüssel (secret key und public key genannt). Mithilfe einer kryptografischen Funktion, die wir hier gar nicht näher beleuchten müssen, wird eine Transaktion, die ihr vollzieht, nun signiert. Das geschieht folgendermaßen.
Die Funktion nimmt sich euren geheimen Schlüssel, den wirklich nur ihr kennt, sowie die eigentliche Nachricht „Ihr gebt Freund*in A 10 Euro“ sowie eine eindeutige ID, die dieser Transaktion zugewiesen ist. Das kann beispielsweise die Nummer der Transaktion im Logbuch sein. Ist es also die zehnte Transaktion, dann ist die ID = 10. Mithilfe des geheimen Schlüssels und der Nachricht wird nun eine Signatur erstellt. Diese Signatur ist für jede Nachricht leicht unterschiedlich und kann somit nicht einfach kopiert werden, um eine Transaktion zu fälschen. Wir erinnern uns, das war bei einer handschriftlichen Unterschrift durchaus möglich.
Euer öffentlicher Schlüssel allerdings ist jedem eurer Freunde bekannt. Mit diesem können sie die Verschlüsselung, die eure Signatur erstellt hat, umkehren und so deren Echtheit überprüfen. Dafür geben sie in die entsprechende mathematische Funktion lediglich die Nachricht, die von euch erstellte Signatur und euren öffentlichen Schlüssel ein. So können sie prüfen, ob die Transaktion auch wirklich von euch signiert wurde.
Die Zuschreibung von Werten
Ihr habt von der Blockchain mit Sicherheit im Zusammenhang von Kryptowährungen wie Bitcoin, Ethereum oder Dogecoin gehört. Das sind Währungen, die nicht physisch vorhanden sind, sondern nur auf der Blockchain existieren. Wie man so eine Kryptowährung bildet, lässt sich auch wieder mit dem Beispiel einer Freundesgruppe im Urlaub erklären. Stellt euch folgendes vor:
Ihr fahrt mit derselben Gruppe jedes Jahr in den Urlaub. Und nun kommt ihr auf eine Idee. Ihr wisst dank des eben entwickelten Systems, genau, wer wem wieviel Geld gegeben hat. Somit hat jeder in seinem digitalen Portemonnaie eine bestimmte Menge Geld. Anstatt dieses Geld nun auszuzählen und jedem mit Bargeld sein entsprechendes Geld zu geben, könntet ihr das digitale Geld ja auch einfach bis nächstes Jahr in den digitalen Brieftasche eurer Freund*innen lassen.
So könnt ihr die Schulden untereinander mit neuen Transaktionen wieder ausgleichen. Man könnte also sagen, das digitale Geld – nennen wir es statt Euro mal den V-Coin (V soll für Vacation stehen) – ist selbst zu einer Währung geworden.
Die Verknüpfung zu anderen Währungen
Jetzt bleibt nur noch ein Problem. Wenn wir also statt mit echtem Geld, mit dem V-Coin zahlen, könnten wir ja Geld aus der Luft zaubern. Auf einmal könnte Freundin*B ja sagen „Ich zahle dir 1 Mio V-Coin“ und euer Portmonee ist das vollste. Bei Kryptowährungen nennt man dieses Portmonee übrigens „Wallet“. Da ihr aber in eurem Urlaub ja aber mit zum Beispiel Euros bezahlen müsstet, muss der V-Coin irgendwie einen Gegenwert haben. Eine Möglichkeit besteht darin, sich mit den Euros in eurem echten Portmonee V-Coins zu kaufen und diese dann in euer Wallet zu legen. Jeder von euch könnte sich also zu Beginn mit 100 Euro 100 V-Coins kaufen und die könntet ihr dann untereinander nutzen, um euch gegenseitig für Dinge zu bezahlen oder Schulden auszugleichen. Am Ende könntet ihr eure V-Coins dann mit dem Geld im Topf wieder auszahlen. Falls ihr beispielsweise nächstes Jahr nicht mehr mit in den Urlaub fahren wollt.
Wie funktioniert die Blockchain denn nun?
Nun solltet ihr hoffentlich ein Verständnis für solche Transaktionen haben und auch dafür, wie wir diesen Transaktionen Wert zuschreiben, indem wir zum Beispiel eine Währung daraus machen.
Ein Problem mit einem System, wie wir es eben beschrieben haben ist aber zum Beispiel ein Vertrauensproblem. Denn eure Transaktionsdaten sind hier zentral gespeichert. Sei es nun in einem analogen Logbuch oder einer Website, die einer aus der Gruppe betreut. Die Daten sind also zentral gespeichert und damit müsst ihr wohl oder übel der Person oder Institution vertrauen, die dieses Logbuch führt. Nichts anderes tun letztlich auch Banken, wenn wir Online-Überweisungen tätigen. Die Blockchain allerdings setzt auf ein dezentrales System. Konkret bedeutet das, dass dieses Logbuch, das auch Ledger genannt wird, bei jedem der Teilnehmer gespeichert wird. Es gibt also nicht einen zentralen Ort, sondern ganz viele Orte, an denen die Transaktionen gespeichert werden. Wir von einem der Teilnehmer eine Transaktion durchgeführt, sendet er diese an alle anderen Teilnehmer, die sie dann ebenfalls in ihr Ledger eintragen.
Das allerdings bringt natürlich ein paar Probleme mit sich, die es zu lösen gilt. Wie können beispielsweise alle Teilnehmer sicher sein, dass ihr Logbuch dieselben Transaktionen enthalten, wie alle anderen? Was passiert, wenn einer der Teilnehmer eine Transaktion nicht erhält. Dann ist sein Logbuch auf einmal anders, als das der anderen Teilnehmer. Aber welches ist dann das richtige? Die Blockchain-Lösung hat für derartige Probleme eine Lösung. Und zwar basiert alles auf der Idee des Proof-of-Work.
Was ist Proof-of-work?
In der Blockchain wird prinzipiell immer dem Logbuch vertraut, in das die meiste „Arbeit“ geflossen ist. Arbeit meint in diesem Kontext „Rechenpower“. In der Blockchain speichert jeder die Transaktionen bei sich lokal. Allerdings nicht bloß als Eintrag in einem Logbuch, sondern in Blöcken. Diese Blöcke allerdings werden vorher validiert. Veranschaulichen wir das einmal und übertragen es auf unser Beispiel mit den Freund*innen im Urlaub. Angenommen Freund*in A sendet Freundin*B 10 Euro. Dann sendet sie diese Transaktion an alle Teilnehmer des Netzwerks. Jeder Teilnehmer der Blockchain hat nun die Möglichkeit zu einem sogenannten Block-Ersteller zu werden. Diese Block-Ersteller sammeln jetzt die Transaktionen und fassen sie zu einem Block aus mehreren einzelnen Transaktionen zusammen. Anschließend wird dieser Block jetzt mit ordentlich Rechenpower versehen. Dafür müssen die Block-Ersteller eine sehr rechenintensive Aufgabe lösen. Erst wenn das geschehen ist, ist ein Block valide und darf in die Blockchain integriert werden.
Das validieren von Blöcken mit einer Hash-Funktion
Es tut mir leid, aber ein ganz wenig Mathematik wird hier leider doch fällig. Aber eigentlich ist diese Rechenaufgabe, die Block-Ersteller lösen müssen, um einen Block zu validieren, gar nicht so schwer. Es gibt in der Kryptografie (auch hier wird wieder klar, warum Kryptowährungen so heißen wie sie heißen) sogenannte Hash-Funktionen. Diese sind in ihrer Funktion recht simpel. Man gibt ihnen irgendeine Botschaft – zum Beispiel die Zahl „1294027493023723“ und dann erstellen sie dafür nach bestimmten Regeln eine Ausgabe. Wichtig dabei ist, sich zu merken, dass die Hash-Funktion für jede Botschaft – also für jeden Input – immer exakt denselben Output ausgibt.
In der Blockchain wird nun die eine ganz bestimmte Hash-Funktion verwendet, nämlich die Funktion “SHA256”. Diese bekommt eine Eingabe und liefert für diese Eingabe eine ganz bestimmte Ausgabe in einer ganz bestimmten Form. Nämlich in Binärcode – also in Form von 0en und 1en (siehe Grafik). (Wieso genau hier Binärcode verwendet wird, ist für uns gar nicht so wichtig. Letztlich handelt es sich dabei einfach um eine andere Schreibweise für die dezimalen Zahlen, wie wir sie kennen.)
Die Funktion SHA256 liefert also eine Binärzahl bestehend aus Einsen und Nullen mit 256 stellen. Die Matheaufgabe, die ein Block-Ersteller lösen muss, um einen Block mit „Arbeit“ zu validieren besteht nun darin, einen Eingabewert für die Hash-Funktion zu finden, der eine bestimmte Bedingung erfüllt. Beispielsweise die Bedingung, dass der Output mit 70 Nullen starten soll. Die entstehende Binärzahl soll also erst 70-mal die 0 enthalten, bevor sie mit 1en und 0en fortgeführt wird. Das zu erreichen, funktioniert nur, indem der Block-Ersteller verschiedene Eingaben durchprobiert. Es gibt keine Möglichkeit, den nötigen Eingabewert irgendwie geschickt zu berechnen. Stattdessen muss der Block-Ersteller sehr viele verschiedenen Ziffern-Kombinationen in die Funktion eingeben, den Ausgabewert berechnen und prüfen, ob die Bedingung erfüllt wurde. Und zwar so lange, bis er einen Eingabewert gefunden hat, für den die hash-Funktion eine Ausgabe beginnend mit 70 Nullen liefert. Das kostet sehr viel Rechenleistung. Schafft es einer der Block-Ersteller, die entsprechende Zahl zu finden, validiert er den Block und sendet ihn an alle Teilnehmer.
Die Miner
Ihr habt vielleicht schon mal von sogenannten Bitcoin-Minern gehört. Das sind die eben beschriebenen Block-Ersteller. Also die Teilnehmer im Netzwerk, die fortwährend Blöcke validieren und dafür ihre Rechenleistung zur Verfügung stellen. Die allerdings brauchen einen gewissen Anreiz, um die Blöcke mit einem Proof-of-Work zu versehen. Wieso sollten sie sonst die Rechenleistung ihrer Computer zur Verfügung stellen und dafür noch die Stromkosten tragen? Dieser Anreiz besteht meistens in einem kleinen Anteil der jeweiligen Kryptowährung. So können sie also die jeweilige Währung wie Bitcoin oder Ethereum schürfen. Daher auch der Name „Miner“.
Der Aufbau der Blöcke in der Blockchain und ihre Verkettung
Die Blockchain bekommt ihren Namen durch die Verkettung dieser eben beschriebenen Blöcke. Denn diese bestehen nicht nur aus den gebündelten Transaktionen und dem „Proof of Work“-Hash, also der Nummer, für die die SHA256-Funktion eine bestimmte Bedingung erfüllt, sondern auch aus dem entsprechenden Hash-Wert des vorangegangenen Blocks. Es wird also für jeden Block ein Hash erstellt. Dieser ist in dem Block selbst enthalten. Zusätzlich enthält der Block aber auch den Hash des Vorangegangenen Blocks. So können die Blocks in eine eindeutige Reihenfolge gebracht und somit verkettet werden (siehe Grafik).
Durch diese festgelegte Aneinanderreihung entsteht eine Kette aus Blöcken oder eben eine Blockchain.
Und wie funktioniert die Blockchain jetzt?
Jetzt kennen wir also Funktionsweise und Aufbau der Blockchain. Noch einmal zusammengefasst:
Jeder Teilnehmer kann eine Transaktion vornehmen, diese signieren und sendet sie anschließend an alle anderen Teilnehmer im Netzwerk. In diesem Netzwerk kann nun jeder andere Teilnehmer zum „Miner“ werden. Miner fassen eine feste Anzahl aufeinanderfolgender Transaktionen zu einem Block zusammen. Diesen Block validieren sie, indem sie eine rechenaufwendige Aufgabe lösen. Gelingt ihnen das, senden sie den Block an alle Teilnehmer im Netzwerk, die ihn dann ihrer Blockchain hinzufügen. So weit, so gut.
Was passiert aber, wenn jetzt aber zwei unterschiedliche Versionen der Blockchain bei unterschiedlichen Teilnehmern existieren? Wie wird entschieden, welche die „richtige“ ist. Hier gehen wir nach dem Proof-of-Work-Prinzip immer von der aus, in die die meiste Arbeit (=Rechenleistung) geflossen ist. Das heißt konkret, wir entscheiden uns für die längere Kette.
Und ist das auch sicher? Was passiert bei falschen oder manipulierten Blöcken?
Tatsächlich ist dieses Prinzip sehr sicher. Es lässt sich eigentlich nicht manipulieren. Stellen wir uns mal vor, ein Teilnehmer versucht einen falschen Block einzuschleusen. Er erstellt also einen Block mit einer gefälschten Transaktion und schafft es sogar, die Signatur zu fälschen. Dann löst er wieder die Matheaufgabe, die den Block validiert und schickt diesen an alle anderen Teilnehmer. Die hängen ihn in ihre lokale Kopie der Blockchain und denken sich nichts dabei.
Dann allerdings kommt der nächste valide Block. Und der nächste und der nächste. Diese können aber ja nicht an den manipulierten Block gehängt werden. Wie wir weiter oben ja geklärt haben sind die Blöcke immer miteinander verknüpft. Ein Block enthält seinen eigenen Hash-Wert sowie den des vorherigen Blocks. Ist dieser aber manipuliert, kommt es zu einem Konflikt in der Verkettung. Schließlich ist der Block ja gefaked. Konkret heißt das: Der Hash-Wert des gefakten Blocks wird sich in keinem der folgenden Blöcke wiederfinden. Somit lassen sich die folgenden “korrekten” Blöcke nicht mit dem gefälschten Verketten.
Passiert das, Speichern die Teilnehmer in der Regel erstmal zwei alternative Versionen der Blockchain bei sich. Eine, die den falschen Block enthält und eine „richtige“, an die die weiteren korrekten Blöcke angehängt werden. Die wird natürlich mit der Zeit immer länger. Da die Blockchain nach dem Proof-of-Work-Prinzip funktioniert, wird sich schließlich automatisch für die längere der beiden Ketten entschieden. Immerhin ist in diese insgesamt mehr Rechenleistung geflossen.
So viel Rechenleistung hat doch niemand!
Ein Angreifer müsste jetzt, um seinen falschen Block weiter in Umlauf zu halten, fortwährend die folgenden Blöcke, deren Hashes auf dem falschen, vorherigen basieren, produzieren. Er müsste also Blöcke produzieren, die sich mit dem Hash seines gefälschten Blocks verketten lassen. Das hieße, er müsste eine alternative und falsche Blockchain aufrechterhalten. Das ist praktisch unmöglich!
Dafür müsste er ja schneller als alle anderen Miner im Netzwerk Blöcke erzeugen, um zu verhindern, dass es zu den oben beschriebenen Konflikten kommt. Rein rechnerisch bräuchte er dafür mindestens 50 Prozent der Gesamtrechenleistung des Netzwerks. Und selbst dann ist nicht gesagt, dass der Zufall auf der Seite des Angreifers steht. So viel Rechenleistung auf einmal zu besitzen, gestaltet sich äußerst schwierig und wird verdammt teuer.
Außerdem würde eine solche Manipulation dann auch die gesamte Kryptowährung gefährden. Denn in so einem Fall funktioniert ja das gesamte System nicht mehr. Wenn das allerdings der Fall ist, ist ja automatisch auch die Währung nichts mehr Wert, wodurch die Manipulation keinen Sinn mehr ergibt.
Damit hoffen wir, dass ihr nun verstanden habt, wie die Blockchain funktioniert!
Bilder erstellt von Moritz Stoll
Artikel per E-Mail verschicken
Schlagwörter: bitcoin, Blockchain, Ethereum