Скачать книгу

zusammenbauen, erhalten eine Sonderstellung im Netzwerk. Nodes speichern die bestehende Blockchain selbst und hängen die neuen Blocks jeweils an. Das ist ein Vorgang, der im Vergleich wenig Rechenleistung benötigt, nur relativ viel Speicherplatz, denn jeder einzelne Node speichert die immer länger werdende Kette für alle Zeiten von Anfang an auf seiner lokalem Festplatte. Das scheint teuer und verschwenderisch zu sein, ist aber der Preis, den man für die Wahrheit zahlen muss.

      Günstiger Speicherplatz als Grund für die Verbreitung der Technologie in den letzten Jahren

      Einer der Gründe, warum die Blockchain erst in den letzten Jahren immer wichtiger wurde und immer mehr Unternehmen auf diese Technologie setzen, ist tatsächlich der Umstand, dass im Laufe der Jahre Speicherplatz immer billiger wurde. Dass Festplatten in den letzten Jahren immer erschwinglicher wurden, so wie alle anderen massengefertigten technischen Produkte auch, ist vielleicht sogar der maßgebliche Grund, warum Bitcoin und die Blockchain erst jetzt in der breiten Bevölkerung ankommen und aus der Experi-mentierecke der technischen Spezialisten ausgebrochen sind.

      Die Bitcoin-Blockchain ist inzwischen über 380 GB groß — für Festplatten mit 500 GB oder sogar 1 TB zu unter 100 Euro unproblematisch und erschwinglich. Als Nakamoto 2008 das Bitcoin-Konzept präsentierte, gab es solche Festplatten noch nicht beziehungsweise nur zu astronomischen Preisen.

      Neben den Nodes, die, wie beschrieben, die Blockchain jeder für sich selbst zusammensetzen, gibt es weitere spezielle Computer im Netzwerk, die „Miner“ genannt werden. Deren Aufgabe ist es, die einzelnen Datenblocks zu erzeugen.

      Diese Miner nehmen die Transaktionen, die in einem sogenannten Pool liegen, Stück für Stück aus diesem Pool heraus und packen sie nacheinander in einem Datenblock zusammen. Alle Blocks sind dabei vom unterliegenden technischen Protokoll mit einer Obergrenze versehen.

      Sind also entsprechend viele Transaktionen aufeinander gestapelt, dass die maximale Größe nicht überschritten wird oder wenn alle Transaktionen aus dem Pool in dem Stapel sind, beginnt der Miner den oben schon erläuterten Hash-Wert für diesen Datenblock zu errechnen.

      Miner berechnen den Hash-Wert der Blocks und sichern das Netzwerk

      Dabei haben die Miner die Aufgabe, die Transaktionsdaten und den Hash-Wert des letzten, ihnen bekannten Blocks und einen weiteren Wert, den sie erraten müssen, in der Formel zusammenzurechnen, um einen, vom Grundalgorithmus des ganzen Bitcoin-Systems vorgegebenen Wert, zu unterschreiten. Das klingt jetzt erst einmal monströs, ist aber, wenn man die einzelnen Schritte nacheinander anschaut, doch nicht so kompliziert.

      In der Formel werden also alle Transaktionen zusammengerechnet, dazu der Hash-Wert des letzten Vorgängerblocks. Das könnte der neue Hash-Wert des Blocks sein und würde sehr schnell gehen.

      Damit wäre aber unser Problem nicht behoben, dass ständig neue und gegebenenfalls auch manipulierte Blocks an die Nodes gesendet würden. So könnte man auch das Netzwerk lahmlegen, weil die Nodes ganz einfach überflutet würden. Deshalb hat Nakamoto die schon erwähnte Bremse eingebaut.

      Diese Bremse funktioniert so, dass im Grundsystem des ganzen Netzwerks, dem sogenannten „Core“, ein weiterer Algorithmus steckt, der alle zehn Minuten vorgibt, wie viele führende Nullen der errechnete Hash-Wert besitzen muss. Hört sich auch wieder kompliziert an, ist allerdings ganz einfach. Man kann es sich ungefähr so vorstellen:

      Wenn die gesuchte Zahl 1 wäre, dann muss der Hash-Wert des neuen Blocks kleiner als 1,0 sein. 0,999999 und alle kleineren Werte wären dann zulässig.

      Die Miner suchen nun diese kleineren Werte, indem sie in die Formel, neben den Transaktionen und dem Hash des letzten Blocks, auch noch eine beliebige weitere Zahl einsetzen, die als „Nonce“ bezeichnet wird. Also zum Beispiel:

      0,745(Summe der Transaktionen)·0,872571(Hash-Wert des Vor-gänger-Blocks)·1,7656(Nonce)=1,1477

      Damit wäre die Nonce mit einem Wert von 1,7656 nicht die richtige, weil sie größer als 1 ist. Der Miner muss nun neu rechnen und es mit einer anderen Nonce versuchen. Tatsächlich muss der berechnete Hashwert nicht kleiner als eine bestimmte Zahl sein, sondern eben eine bestimmte Anzahl von führenden Nullen zeigen. Also zum Beispiel vier führenden Nullen: 0,000072863 oder sechs führende Nullen: 0,00000052415. So oder so muss der Miner rechnen, was das Zeug hält, um diese Vorgabe zu erfüllen.

      Das Geheimnis hinter dem sogenannten „Mining“

      Im Prinzip ist es nichts anderes als lustiges Zahlenraten. Zahlen in eine Formel einsetzen und dann schauen, ob das Ergebnis so viele führende Nullen mit sich bringt wie die vom System geforderten. Es ist natürlich klar, dass die Formel sehr viel komplizierter ist als in dem Beispiel von oben.

      Entscheidend ist, dass das Ergebnis einer Hash-Formel schon bei minimalen Änderungen der Ausgangswerte enorme Veränderungen des Endwerts mit sich bringt, wie weiter oben dargestellt wurde.

      Deshalb ist es auch kein einfaches lineares Probieren nach dem Motto, 1,7656 ist zu groß, also nehmen wir einfach 1,4441. Wenn das immer noch zu viel ist, dann eben 1,2982. So einfach ist es eben nicht. Im Gegenteil. Da das Ergebnis nicht linear ist, kann es sein, dass ein größerer Wert der Nonce in der Formel zu einem kleineren Endwert führt. Wie schon gesagt, die Augen eines Mathematikers glänzen bei solchen Formeln, Laien nehmen es staunend zur Kenntnis. Für den Fall, dass man gefragt wird, welche Art von Berechnung erforderlich ist, um einen Hash-Wert zu errechnen, kann man auf die sogenannte „elliptische Kurvenformel“ verweisen. Das aber nur, wenn das Gegenüber immer weiter nachfragt. Dann hören die Nachfragen normalerweise auf.

      Dem Miner bleibt also tatsächlich nichts anderes übrig, als zu raten, zu rechnen, zu vergleichen und wenn das Ergebnis nicht klein genug ist, das Ganze wieder von vorne, mit einer neuen Nonce, zu starten. Wir reden hier aber nicht nur von 100 oder 1.000 Versuchen, sondern von Milliarden Rechenoperationen pro Sekunde, die das ganze Bitcoin-Netzwerk ständig ausführt. Die Einheit, in der diese Rechenleistung erfasst wird, sind die sogenannten „Mega-Hashes“, „Giga-Hashes“ oder sogar „Peta-Hashes“. Also Millionen Hash-Berechnungen pro Sekunde beziehungsweise Milliarden oder Billiarden Hash-Berechnungen pro Sekunde.

      Solche Berechnungen sind nichts mehr für handelsübliche Com-puter, da die Anforderungen an die Rechenleistung nicht mehr von diesen Maschinen erbracht werden können. Deshalb kommt es heutzutage zur Arbeitsteilung zwischen Nodes und Minern.

      Die Nodes verwalten die dezentral abgespeicherten Daten und die Miner berechnen die neuen Blocks.

      Am Anfang, als das Bitcoin-System im Jahr 2009 startete, war es noch möglich, mit einer ganz normalen CPU (dem zentralen Chip in unseren Computern wie zum Beispiel ein Pentium) den Hash-Wert der Blocks zu berechnen. Irgendwann wurde es aber zu kompliziert und zu aufwendig und die Softwareexperten haben die Berechnung auf die sogenannten GPUs (Graphic Processing Units) ausgelagert. Das sind die Spezialchips in den Grafikkarten. Grafik-karten müssen auch sehr viel und sehr schnell rechnen können, damit sie zum Beispiel in einem Spiel die Hintergrundbilder berechnen und auf dem Bildschirm darstellen können, während der Spieler mit einer schußbereiten Pistole durch eine Stadt läuft. Wegen dieser Eigenschaften sind GPUs viel besser geeignet, diese komplizierten Rechnungen durchzuführen.

      Wer schneller ist, verdient mehr Geld

      Im gesamten Netzwerk sind viele Miner installiert. Alle rechnen gleichzeitig an jedem neuen Block und versuchen, die Nonce zu erraten. Sie nehmen also Transaktionen aus dem Pool und packen diese zusammen mit dem Hash des letzten Blocks in den neuen Block. Dann suchen sie einen Wert für die Nonce, berechnen und vergleichen das Ergebnis mit der Anforderung des Systems. Wenn der Wert kleiner ist als die Anforderung des Systems, wird der Block abgeschlossen und an die mit dem Miner verbundenen Nodes versendet, damit diese den neuen Block an ihre lokale Kette anhängen und an andere Nodes weiter versenden, damit diese wiederum den neuen Block an ihre jeweilige

Скачать книгу