Blockchain

Ich werde hier nur über die “proof of work” consensus Methode reden, denn es ist im Moment die einzige, die ich verstehe. Allerdings arbeite ich auch an Artikeln für die anderen Techniken.

Was ist eine Blockchain?

Eine Kette von Blöcken, deren Reihenfolge nicht verändert werden kann und bei der alle Teilnehmer, die an der Blockchain arbeiten, sich einig sind, dass sie korrekt ist und nicht nachträglich verändert werden kann. Natürlich kennen wir alle die Blockchain von den Kryptowährungen, aber das muss nicht so sein. Theoretisch kann man mit einer Blockchain alles Mögliche machen (und ursprünglich war sie auch nicht für eine Währung gedacht). Aber es macht auch Sinn, weshalb sie hauptsächlich in Währungen verwendet wird. Eine Blockchain mit Proof of Work zu betreiben ist ein großer Rechenaufwand, der auch Geld kostet, und wenn man für eine Währungsblockchain rechnet, dann bekommt man eben eine Belohnung. Daher ist die Motivation, für eine Währung zu rechnen, höher als für andere Blockchains.

Was ist ein hash?

Eine Hashfunktion ist eine Funktion, d.h. ein mathematisches Problem, das eine scheinbar zufällige Ausgabe liefert, die aber bei gleicher Eingabe immer das gleiche Ergebnis liefert. Und bei einer minimalen Änderung der Eingabe wird die Ausgabe in einem nicht vorhersehbaren Muster völlig anders. Außerdem hat ein solcher Hash für alle Eingaben, unabhängig von ihrer Länge, eine konstante Länge der Ausgabe. Aufgrund der scheinbaren Zufälligkeit und der daraus resultierenden Unvorhersagbarkeit ist eine Zuordnung zur Eingabe nicht mehr möglich. Mit einer Hashfunktion, die eine ausreichend lange Ausgabe hat, wie z.B. sha256 oder sha512, kann man den Hash als Erkennungsmerkmal für eine Datei verwenden, ohne die Datei komplett zu überprüfen, da die Wahrscheinlichkeit, dass die 2²⁵⁶ Möglichkeiten in 256 Bit zufällig übereinstimmen, verschwindend gering ist (mehr (yt)).

Wie wird ein Block oder eine Transaktion der Blockchain hinzugefügt?

IN einem zero-trust-Netzwerk, wie die Blockchain eines ist, nicht darauf vertrauen kann, dass andere schon nicht lügen werden. Man geht immer erst einmal davon aus, dass sie lügen. Allerdings muss man verstehen, dass das nicht bedeutet, dass das Kollektiv aller (Betrüger) auch lügt. Denn alle verfolgen ja eigene Interessen und wollen, wenn die Anteile an der Währung halten auch, dass das System sicher beleibt, denn nur so bleibt ihr Geld etwas wert (-> mehr).

Wenn man also nun eine neue Transaktion ausführen möchte sendet man diese Nachricht einfach so in die Welt heraus. Damit das valide ist muss man das Geld haben und die Nachricht muss vom Absender auch signiert sein (damit man nicht das Geld anderer verschicken kann). Die miner, die alle Transaktion verarbeiten warten auf solche neuen Transaktion. Sie haben die Motivation diesen Aufwand ein zu gehen, denn sie können durch ihre mining-Arbeit Anteile an der gesendeten Summe bekommen. Wenn sie also eine solche Nachricht haben, dann fügen sie sie zu einem neuen Block zusammen. Ein Block kann aus mehreren aber auch aus gar keinen Transaktionen bestehen. Dieser Block, sowie eine zufällige, vom miner ausgewählte, Zahl sollen einen hash haben, der am Anfang beispielsweise 10 Nullen hat. $$ hash(block, x) = 0000000000xxxxxxxxxxxxxxxxxxxxxxx $$ Da sich das Ergebnis des Hashs nicht voraussagen lässt muss man x erraten. Das ist ein großer Rechenaufwand, denn man muss sehr sehr viele solcher hash Berechnungen durchführen. Wenn ein miner eine solche Zahl für den entsprechenden Block gefunden hat, und er der Erste ist, dann erhält er eine Belohnung dafür. Und er stellt den neuen block auf seine Blockchain, die er mit allen anderen synchronisiet. Die anderen miner überprüfen den Block, das geht einfach, denn man muss nur den oben angeführten hash ausführen und wenn ein hash mit 10 Nullen raus kommt ist er valide und wird in die allgemeine Blockchain aufgenommen. So müssen nicht alle neue Transaktionen “suchen” und Blocks berechen, sondern man muss nur die Blockchains synchronisieren und die Blocks überprüfen. Das macht auch den Zugang zu solchen Systemen einfacher, denn nicht jeder muss Berechnungen anstellen oder aktiv ein peer Netzwerk aufbauen, in dem man dauernd online sein muss um keine Transaktionen zu verpassen. Man muss nur seine lokale Blockchain haben und aktuell halten.

Damit die einzelnen Blocks auch zur Blockchain werden, führt jeder block das x des vorherigen Blocks an. So lässt sich auch die Reihenfolge der Blocks nicht mehr ändern und die schon geschriebenen sind praktisch nicht veränderbar. Man könnte sie immer noch verändern, aber man müsste alle Berechnungen neu durchführen, damit die x Werte wieder Stimmen und der check ok ist. Dann würden auch falsche alte Blocks in die allgemeine Blockchain aufgenommen werden. Damit das nicht so einfach ist wird immer die längste Blockchain für valide befunden, denn es ist diejenige, mit der meisten investierten Rechenarbeit. Und es ist davon auszugehen, dass die Mehrheit an der korrekten Chain arbeitet. Daher sind die 50% auch so gefährlich, denn dann könnte die neue Blockchain schneller wachsen als die eigentlich korrekte. So könnte allen weiß gemacht werden, dass die falsche die richtige ist, weil der Betrüger mehr Rechenleistung bringen kann. Im Rückschluss ist es daher auch logisch, dass neuen Blocks nicht sofort vertraut wird, sondern erst nach eine ausreichend langen Kettenlänge. Streng genommen wird ihnen nie vertraut, denn die einzelnen Blocks sind das Resultat einer Einzelperson, und der vertraut man nie. Man vertraut nur auf die Validität der Blockchain, die durch die Integrität des einzelnen Blocks gesichert wird. Heißt, dass wenn eine neue, längere Blockchain auftaucht wird diese für valide befunden und alle Blocks (und Transaktion) die nach dem letzten Übereinstimmenden Block geschehen sind werden für falsch befunden und nicht mehr anerkannt.

Probleme

Ein offensichtliches Problem ist der Rechenaufwand, den man betreiben muss um eine Blockchain (sicher) zu betreiben. Sie verbraucht sehr viel Strom. Das Prblem könnte man mit anderen Protokollen, die nicht das Maß an Arbeit für ein Maß der Korrektheit nehmen. Ich recherchiere gerade, aber “proof of work” ist am weitesten verbreitet und hat daher auch die besten Dokumentationen.

Leider hat POW auch zur Folge, dass man selbst bei kleinen Blockchains immer Rechenleistung braucht, selbst wenn keine Transaktionen ausgeführt werden. Das liegt daran, dass sonst jeder eine längere Kette “bauen” kann und so die Kontrolle übernehmen kann.


52posts

Dieser Beitrag ist Teil meines Plans, in 2023 jede Woche einen Post zu erstellen, mit Dingen, die ich gelernt habe. (Das sind dann 52 Posts).

#52posts