Bitcoin Mining

Wie funktioniert Bitcoin-Mining?

Von Logistik über das Gesundheitswesen, von Social Media zum Immobilienwesen, vom Energiesektor zur globalen WirtschaftBlockchain wird in den kommenden zehn Jahren voraussichtlich jede einzelne Branche verändern. Blockchain tritt mit rasanter Geschwindigkeit in unser Leben und wird oftmals als noch revolutionärer als Artificial Intelligence beschrieben. Dieses extreme Tempo ist einerseits inspirierend, andererseits gibt es aber auch negative Seiten: Bildung kann nur schwer mithalten. Das Fehlen von qualitativ hochwertigen Schulungsprogrammen rund um Blockchain bedeutet, dass viele Menschen entweder die Chancen auf dieses neue und aufregende Gebiet verpassen oder – noch schlimmer – eine vorzeitige Berufswahl treffen, die auf einem falschen Verständnis beruht, was möglich ist und was nicht. 

Aus diesem Grund werden wir uns heute nur auf ein einziges Thema fokussieren. Für diesen Artikel habe ich das vielleicht am meisten verwendete und gleichzeitig auch am häufigsten missverstandene Thema ausgewählt: Mining. Wir alle haben von schon von Bitcoin Mining und Miners gehört? Wir haben diese Begriffe wahrscheinlich sogar schon verwendet. Aber was genau machen diese Miners? Worum geht es im Mining? Das sind die Fragen, die wir heute beantworten werden, und wir werden dies in drei Teilen machen.

Inhaltsverzeichnis

Hinweis: Wir werden uns das Beispiel Bitcoin ansehen. Andere Kryptowährungen wie Ethereum verwenden möglicherweise andere Ideen (z.B. eine andere Art von Hash-Funktion) und daher könnten die Besonderheiten variieren. Die zugrunde liegenden Konzepte bleiben jedoch dieselben.

Was ist eine Kryptographische Hashfunktion?

Vielleicht haben Sie bereits gehört, dass eine Blockchain eine Reihe aufeinanderfolgender Blöcke ist, die kryptographisch miteinander verbunden sind:

Bitcoin Mining

Aber was bedeutet das und wie hängt es mit Mining zusammen? Ein einzelner Block in einer Blockchain enthält folgende Elemente: Die Blocknummer, im Block gespeicherte Daten, Hash des vorherigen und des aktuellen Blocks. 

Block 3

Ein Hash (oder Kryptographischer Hash) ist eine lange Nummer, die als digitaler Fingerabdruck einer Sammlung von Daten fungiert. In Bitcoin wird die SHA256 Hashfunktion verwendet, welche ein 64-stellige Hexadezimalzahl generiert. Der kryptographische Hash von Wörtern in diesem Absatz lautet beispielsweise:  

C019286295F2CDEC9958BEE25B9603B5F94C76B2CCC69A59CE54872ED26DC479

Hash-Algorithmen haben viele interessante Eigenschaften, aber heute interessieren uns vor allem diese drei: 

  1. Die SHA256 Funktion ist deterministisch. Sie erhalten immer denselben Hash-Output wenn Sie die Funktion mit dem gleichen Input berechnen. 
  2. Die SHA256 Funktion ist irreversibel. Das bedeutet, dass Sie nie im Voraus wissen können, welchen Hash-Wert Sie erhalten, bis Sie ihn tatsächlich berechnen.
  3. Wenn Sie die SHA256-Funktion mit zwei nur leicht unterschiedlichen Inputs (z.B. ein Punkt statt einem Komma) füttern, erhalten Sie völlig unterschiedliche Outputs. 

In unserem vorherigen Beispiel würden wir die Nummer des aktuellen Blocks, die im Block gespeicherten Daten und den Hash des vorherigen Blocks in die SHA256-Funktion eingeben, um den Wert des aktuellen Blocks zu erhalten: 

SHA256(Block Nummer, gespeicherte Daten, Hash des vorherigen Blocks) -> Hash

Jetzt können wir sehen, wie die Blöcke verknüpft sind – nicht nur, dass jeder Block auf den kryptographischen Hash des vorherigen Blocks verweist – sondern dieser Hash wirkt sich auch direkt auf den Wert des aktuellen Block-Hashs aus. Wenn jemand die Daten eines Blocks manipulieren würde, würde solch eine Aktion nicht nur den Hash dieses bestimmten Blocks ungültig machen, sondern auch alle Hashs der nachfolgenden Blöcke ungültig machen. 

Block 2, 3, 4

Eine solche Verbindung zwischen Blöcken bedeutet, dass die Blockchain als Ganzes viel sicherer vor Manipulation ist als Standard-Datenbankstrukturen und andere Aufzeichnungsmethoden. Da eine Blockchain im Wesentlichen ein Ledger (Anm. Hauptbuch) von Datensätzen ist, wird diese manipulationssichere Eigenschaft als 'Immutable Ledger' bezeichnet.

Okay, gut. So funktionieren Blockchains. Aber was hat das mit Mining zu tun? Die einfache Antwort lautet, dass es beim Mining darum geht, den Hash-Wert für den neuesten Block zu berechnen, der der Kette hinzugefügt wird. Es ist jedoch nicht ganz so einfach.

Die SHA256-Funktion benötigt nur den Bruchteil einer Sekunde für die Berechnung. Und dennoch haben Sie vielleicht schon von den zahlreichen Mining-Pools wie BTC.com oder AntPool, sowie von Minen im industriellen Maßstab gehört, welche um die Generierung des nächsten Bitcoin-Blocks konkurrieren. Die Frage ist also: Warum brauchen wir all diese Rechenleistung? 

Das kryptographische Puzzle

Jetzt wird es etwas komplizierter. Blocks in der Blockchain haben noch einen anderen Bereich, über den wir noch nicht gesprochen haben. Dieser Bereich heißt ‚The Nonce‘ und steht für eine Nummer, die nur einmal verwendet wird: 

Block 3 Nonce 4059

Ein Nonce ist eine Ganzzahl. Zusammen mit der Blocknummer, den Daten und den vorherigen Hashs dient das Nonce als Eingabe für die SHA256-Funktion zur Berechnung des aktuellen Block-Hashs: 

SHA256 (Blocknummer, Nonce, Daten, vorheriger Block-Hash) -> Hash

Im Gegensatz zu anderen Komponenten eines Blocks ist der Nonce so konzipiert, dass er vollständig unter unserer Kontrolle steht. Dies bedeutet, dass wir nun einen Mechanismus haben, um den Hash des aktuellen Blocks zu variieren, während die Daten darin intakt bleiben. Aufgrund der Natur der Hash-Funktion, bekommen wir jedes Mal einen anderen Wert, wenn wir ein neues Nonce für denselben Block auswählen. 

Wunderbar, das ist großartig. Aber was hat das alles mit Mining zu tun? Hier kommen wir zum lustigen Teil. Es gibt insgesamt 1664 mögliche kryptographische Hashwerte für SHA256 (jede hexadezimale Ziffer hat 16 mögliche Werte und 64 davon sind in einem Hash enthalten). Es gibt jedoch nicht genügend gültige Hash-Werte. Warum das? Nun, alle zwei Wochen definiert das Bitcoin-Netzwerk ein minimales Ziel für den Hash. Alles, was über diesem Ziel liegt, wird abgelehnt, alles, was darunter liegt, wird akzeptiert.

alle möglichen Hashes

Das obige Diagramm stellt den Pool (nicht zu verwechseln mit dem ‚Mining Pool‘) aller möglichen SHA256-Hashes dar – beginnend mit dem kleinsten am unteren Rand und ansteigend bis zum größten am oberen Rand. Irgendwo entlang der Vertikal liegt das Ziel. Beachten Sie, dass dieses Diagramm nur zur Veranschaulichung dient, da es nicht verhältnismäßig ist. Wir werden gleich sehen warum. Zum Zeitpunkt des Schreibens ist das Ziel: 


0000000000000000005d97dc0000000000000000000000000000000000000000


Was wirklich wichtig ist, ist die Anzahl der führenden Nullen im Ziel. Genau wie im Dezimalsystem bestimmen führende Nullen in einer Zahl mit fester Größe den Betrag. Jede führende Null verringert den Betrag der Zahl um den Faktor 16 (Im Dezimalsystem sind es 10, wir arbeiten hier aber mit Hexadezimalzahlen)

Es gibt 18 führende Nullen im aktuellen Ziel. Das bedeutet, dass die Anzahl der insgesamt gültigen Hashes 16 beträgt (es bleiben nur 64-18=46 Nicht Null-Ziffern übrig). Daher kann die Wahrscheinlichkeit, dass ein zufällig ausgewählter Hash gültig ist, wie folgt berechnet werden: 

16⁴⁶ / 16⁶⁴ = 16^(-18) = 0.00000000000000000002%

Im Jargon des Bitcoin Minings ist dies die Wahrscheinlichkeit, dass ein gegebener Nonce-Wert einen gültigen Hash für den aktuellen Block generiert. Wir können nun sehen, warum das Diagramm nicht proportional ist: Der Pool an gültigen Hashes ist in Wirklichkeit im Vergleich zum gesamten SHA256-Pool extrem klein. Und darum geht es bei dem kryptographischen Rätsel: Miners konkurrieren um ein Nonce (auch goldenes Nonce genannt), welches einen gültigen Hash für den kommenden Block generiert. Wer es zuerst findet, darf den Block zur Kette hinzufügen und erhält als Belohnung 12,5 Bitcoins. Zum Zeitpunkt des Schreibens ist ein Bitcoin etwa 10.000 US$ Wert, was den Abbau zu einer lohnenden Aktivität macht. 

Alle möglichen Hashes (2)

Basierend auf dem Hashrate (Gesamtrechenleistung aller Bitcoin-Miner) des Netzwerkes wird das Ziel definiert. Je mehr Miners dem Netzwerk beitreten – desto geringer ist das Ziel, und desto schwieriger ist es, einen geeigneten Hash zu finden. Das schwierige Ziel des Algorithmus ist es, sicherzustellen, dass nur alle zehn Minuten ein neuer Block hinzugefügt wird. Dies ist Teil der Bitcoin Policy und dient dazu die Gesamtzahl der in Umlauf befindlichen Bitcoins zu steuern. 

Kurz gesagt, ist es das, was Millionen von Mining Maschinen Tag und Nacht machen – sie iterieren einfach verschiedene Werte von Nonces in der Hoffnung, der Erste zu sein, der einen gültigen Hash für den nächsten Block findet. Sobald ein gültiger Hash gefunden wurde, wird der Block der Kette hinzugefügt und das Rennen beginnt erneut, diesmal für den nächsten Block. 

Block Konfiguration

Ein Nonce ist ein gannzahliger Wert mit 32 zugewiesenen Speicherbits. Dies bedeutet, dass die Reichweite auf rund 4 Milliarden Werte begrenzt ist. Dies wirft zwei Probleme auf: 

  1. Selbst ein durchschnittliches Mining-Gerät kann bis zu 100 Millionen Hashes pro Sekunde berechnen und durchläuft daher den Nonce-Bereich in 40 Sekunden. Und das ist ein durchschnittlicher Miner. Mining pools und Mienen im großtechnischen Stil können die Nonce-Reihe in Bruchteilen von Sekunden durchlaufen. 
  2. Die Chance, einen gültigen Hash zu finden, ist so gering, dass selbst bei 4 Milliarden versuchen die Erfolgswahrscheinlichkeit immer noch extrem niedrig ist: 4 * 109 * 0,0000000002% = 0,0000000001%

Was ist also die Lösung?
Zunächst enthält der Block einen weiteren Aspekt, über das wir noch nicht gesprochen haben – einen Zeitstempel, der die aktuelle Unix-Zeit darstellt (Anzahl der Sekunden, die seit dem 1. Jänner 1970 vergangen sind): 

Block 3 Zeitstempel

Der Zeitstempel ist ebenfalls inkludiert in der SHA256 Berechnung für den Hash des aktuellen Blocks, der gemined wird, enthalten: 

SHA256(Blocknummer, Zeitstempel, Nonce, Daten, vorheriger Block Hash) -> Hash

Da der Zeitstempel ständig aktualisiert wird (bis der Block erfolgreich gemined wurde), wird der Nonce-Bereich jede Sekunde zurückgesetzt. Warum? Nun, wie wir gleich zu Beginn besprochen haben, auch wenn die Inputs der SHA256-Funktion geringfügig variiert werden, ändert sich dadurch der Hash. Wenn wir also alle 4 Milliarden Nonce-Werte für mit einer festen Kombination anderer Eingaben (Blocknummer, Zeitstempel, Daten, Hash des vorherigen Blocks) versuchen, aber kein Glück haben, einen gültigen Hash zu finden, müssen wir nur warten, bis der Zeitstempel zunimmt. Eine Änderung des Zeitstempels bedeutet, dass sich die Kombination ebenfalls verändert hat. Wenn wir alle 4 Milliarden Nonce-Werte erneut versuchen, erhalten wir jedes Mal einen brandneuen Hash-Wert. 

Der Zeitstempel behebt das Problem für den durchschnittlichen Miner, da er zurückgesetzt wird, bevor er das Ende des Nonce-Bereichs erreicht (zur Erinnerung: Der durchschnittliche Miner benötigt 40 Sekunden, um 4 Milliarden Pässe zu schaffen). Für einen Mining Pool oder Miner im großtechnischen Still ist schon eine Sekunde zu lang. Wie wir bereits besprochen haben, würden sie den Nonce-Bereich in den Bruchteilen einer Sekunde durchlaufen. Wie lösen sie also das Problem? Hier kommt die Block Transaktionskonfiguration ins Spiel.

Block 3 Transaktionskonfiguration

Die Teilnehmer des Bitcoin-Netzwerkes kommunizieren die ganze Zeit miteinander. Ein neuer Block wird jedoch nur alle zehn Minuten hinzugefügt. Wohin gehen also die Transaktionen, bevor sie einem Block hinzugefügt werden? Neue Einträge werden zu einem Staging-Bereich namens ‚Mempool‘ hinzugefügt. Es ist dann die Aufgabe der Miners, einen Stapel dieser Transaktionen aus dem Mempool zu entnehmen und sie den neuen Block hinzuzufügen den sie minen. 

Die Blockgröße ist begrenzt und nicht alle Transaktionen aus dem Mempool passen in den neuen Block. Dies bedeutet, dass Miners wählen können, welche Transaktionen in den nächsten Block gelangen. Dies bedeutet auch, dass Miner die Konfiguration von Transaktionen nach Belieben ändern können (bevor der Block erfolgreich gemined wurde).

Block 3 Mempool

So erhalten Miners zusätzliche Kontrolle über den Hash. Nun, Kontrolle ist nicht das richtige Wort, da der Hash nicht neu konstruiert oder vorhergesagt werden kann. Variabilität ist hier ein besserer Begriff: Wenn Sie die Konfiguration von Transaktionen ändern, entsteht eine zusätzliche Variabilität in den Inputs für die Hash-Funktion

Ähnlich wie beim Zeitstempel müssen wir, wenn wir alle 4 Milliarden möglichen Werte im Nonce-Bereich ausprobieren und kein Glück haben, die Kombination der Transaktionen, die wir aus dem Mempool ausgewählt haben, leicht ändern. 

Der größte Unterschied besteht darin, dass wir nicht warten müssen. Durch eine Veränderung der ausgewählten Transaktionen können wir unseren Nonce-Bereich nach Belieben zurücksetzen. Dies können wir so oft pro Sekunde machen, wie wir wollen. All dies geschieht natürlich mittels eines Algorithmus. Auf diese Weise können auch Mining-Pools und Miners im großtechnischen Stil ohne Wartezeit konstant neuen Hashwerte testen. 

Letzte Gedanken

Wir haben viele Aspekte beleuchtet. Lassen Sie uns den Bitcoin / Blockchain Mining Prozess noch einmal zusammenfassen, um sicherzustellen, dass uns nichts entgangen ist: 

  1. Ein Hash ist ein digitaler Fingerabdruck mit einer beliebigen Ansammlung an Daten. Blöcke in einer Blockchain sind kryptographisch miteinander verknüpft. Jeder Block zieht den Hash des vorhergehenden Blocks in die Berechnung seines eigenen Hashs ein. Durch Manipulationen an Daten in einem Block werden die Hashes aller folgenden Blöcke ungültig. 
  2. Das kryptographische Puzzle erfordert, dass Miners einen Hash finden, der kleiner als das festgelegte Ziel ist, damit er gültig ist. Miner suchen nach einem gültigen Hash, indem sie einen bestimmten Parameter ‚Nonce‘ innerhalb eines Blocks durchlaufen. Wer als Erster einen gültigen Hash findet, darf den Block hinzufügen und die Belohnung einsammeln. 
  3. Der Nonce-Bereich enthält 4 Milliarden mögliche Werte, und macht es damit nicht leicht einen gültigen Hash zu finden. Das zurücksetzen des Nonce-Bereichs wird unter Einbeziehung des aktuellen Zeitstempels und durch das Variieren der Konfiguration der im Block enthaltenen Transaktion erreicht.