Proof of Work

Proof of Work ist ein Konsens-Mechanismus. Er kommt bei bestimmten Kryptowährungen wie Bitcoin zum Einsatz und sorgt für Einstimmigkeit im Netzwerk.

Was ist Proof of Work?

Der Proof-of-Work-Mechanismus (PoW) ist eine Form der sogenannten Konsens-Mechanismen, um in dezentralen Netzwerk auf eine identische Version der Blockchain zu einigen.

Wozu benötigt man Proof of Work?

Das Grundprinzip von Proof of Work basiert auf der Idee, dass Miner im Netzwerk nachweisen müssen, dass sie einen gewissen Aufwand aufgebracht haben, um einen Block zu erzeugen. Dies stellt mehrere fundamentale Prinzipien von Kryptowährungen wie Bitcoin sicher.

  1. Die Schwierigkeit (Difficulty), einen gültigen Hash für den Block Header zu finden ist so gewählt, dass etwa alle zehn Minuten ein neuer Block ins Netzwerk gelangt – und damit eine gewisse Anzahl BTC. Dies stellt das algorithmische Geldmengenwachstum sicher.
  2. Für Nodes ist es mithilfe von PoW sehr einfach zu erkennen, welche Blockchain die richtige ist: Nämlich die, in die die meiste Arbeit in Form von Rechenkapazität geflossen ist.
  3. Proof of Work sichert das Netzwerk ab. Angreifer:innen müssten mehr Energie in das Netzwerk speisen, als alle anderen Mining Nodes insgesamt zur Verfügung haben – und dies über einen langen Zeitraum durchhalten. Das ist bei Bitcoin nicht mehr denkbar.
  4. Proof of Work ist ferner der fairste Mechanismus der Neuverteilung von Geld, den wir kennen. Denn im Gegensatz zu Fiatgeld können frische Coins nicht mit einem Federstrich erzeugt werden, sondern erfordern einen realen Aufwand an Ressourcen.

Wie funktioniert Proof of Work bei einer Blockchain?

Das Durchführen eines Proof-of-Work-Mechanismus bzw. das Berechnen der Ergebnisse bezeichnet man im Kontext von Blockchains als „Mining“. Die Miner versuchen dabei, durch milliardenfache Ausführung von Rechenoperationen, ein Ergebnis mit bestimmten Eigenschaften zu finden. Haben Sie ein solches Ergebnis getroffen, werden Sie mit dem sogenannten Block Subsidy vergütet.

Der Prozess einer Transaktion, die in das Netzwerk gepusht wird, sieht bis zur Bestätigung wie folgt aus:

  1. Transaktionen werden in einen Block zusammengefasst
  2. Die Miner prüfen, ob diese Transaktionen legitim sind, indem sie den Block Header des Candidate Blocks hashen
  3. Der erste Miner, der die Lösung gefunden hat, erhält den Block Subsidy sowie die Transaktionsgebühren
  4. Die validierten Transaktionen werden in Form des Blocks an die Blockchain angehängt

Wie genau funktionieren die Proof-of-Work-Berechnungen?

Die Miner nutzen Hashfunktionen, also mathematische Funktionen, die aus einer Zeichenkette beliebiger Länge eine Zeichenkette fester Länge erzeugen. Die Schwierigkeit liegt darin, dass ein Ergebnis mit gewissen Eigenschaften gefunden werden muss, die sich aus der Hashfunktion ergeben. Bitcoin etwa nutzt für das Mining die SHA-256-Hashfunktion.

Aus Sicht des Miners muss also die Fragestellung gelöst werden:
„Welchen Input muss ich in die mathematische Funktion eingeben, um den vorgegebenen Output zu erhalten?“
Da eine wichtige Eigenschaft der verwendeten Hashfunktion die nicht vorhandene Invertierbarkeit ist, kann man nicht einfach zu einem Output berechnen, was der zugehörige Input war.

Stattdessen muss man „raten“, was der Input war, mit dem man genau diesen Output erzielen kann. Daher führen die Miner die Berechnungen milliardenfach pro Sekunde durch und probieren viele Inputwerte aus, bis man schließlich einen Input gefunden hat, der den gewünschten Output ergibt.

Ist der Block dann korrekt gemint, wird er an die Blockchain angehangen. Da alle Teilnehmer des Netzwerks den Algorithmus kennen, können sie prüfen, ob die Lösung korrekt ist und sie eine valide Blockchain besitzen. Entscheidend ist, dass einfach geprüft werden kann, ob die Berechnungen korrekt sind, während die Berechnung selbst vom Miner komplex ist. Der Proof ist schwer zu erbringen, aber leicht zu verifizieren.

Was hat es mit der Difficulty auf sich?

Die Difficulty ergibt sich aus der Schwierigkeit, den gewünschten Output der Hashfunktion zu finden. Im Fall von Bitcoin wird bspw. vorgegeben, wie viele Nullen der Output am Anfang des Strings (Nonce) besitzen muss. Je mehr Nullen gefordert sind, desto schwieriger wird es schließlich, den Output zu finden. Das lässt sich leicht mit einem Lottospiel veranschaulichen. Zwei Richtige zu treffen ist wesentlich einfacher, als sechs Richtige der vorgegebenen Zahlen zu treffen.

Die Difficulty bei Bitcoin ist immer so gewählt, dass durchschnittlich alle zehn Minuten ein neuer Block gefunden werden sollte. Dieser Richtwert wird alle zwei Wochen überprüft. Stellt sich heraus, dass der Richtwert von 2.016 Blöcken in zwei Wochen überschritten wurde, sprich, mehr Blöcke als gewollt gefunden wurden, ist die Difficulty zu gering und wird nach oben korrigiert – und umgekehrt.