Was ist Proof-of-Work?

Der Proof-of-Work Mechanismus ist eine Form der sogenannten Konsens-Mechanismen, um im Netzwerk einen Konsens zu erzielen und sich gemeinsam 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. Auch für den E-Mail Versand wurden früher Proof-of-Work Mechanismen eingesetzt, um Spam zu verhindern. Um eine E-Mail zu versenden, musste der Sender vereinfacht gesagt zusätzliche Berechnungen durchführen. Da die Maschinen in ihrer Rechenkapazität beschränkt waren, ist es notwendig gewesen, hohe Investitionen tätigen, um die Berechnungen durchzuführen und letztlich E-Mails zu versenden. Dadurch sollten die Kosten zum Versenden von E-Mails hoch genug sein, dass sich der Versand für Spammer nicht mehr lohnt. Denn der Empfänger einer E-Mail konnte auf einfache Art prüfen, ob die Berechnungen korrekt durchgeführt wurden, während die Berechnungen für den Sender mit einem gewissen Aufwand verbunden waren.

Die Idee hinter der Blockchain ist, ein dezentrales Transaktionsbuch zu speichern. Daraus ergibt sich ein Vertrauensproblem, da viele Teilnehmer des Netzwerks in der Regel auf eine zentrale „trusted party“ vertrauen müssen. Um diesen unerwünschten Nebeneffekt zu umgehen, nutzt man Konsens-Algorithmen, die es ermöglichen, dass jeder Teilnehmer prüfen kann, ob seine Blockchain den Regeln entspricht.

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 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 die Proof-of-Work Berechnungen durchführen
  3. Der erste Miner, der die Lösung gefunden hat, erhält die Block-Vergütung
  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.

Die Miner versuchen zu einem vorgegebenen Output den zugehörigen Input zu finden

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.

Erlaubt: Berechne Output Y für Input Z. Nicht erlaubt: Berechne den Input Z für Output Y

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 gemined, 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 unheimlich leicht zu verifizieren.

Was hat es mit der Difficulty auf sich?

Die Difficulty (genauer behandelt im Thema “Mining”) 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 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.

Finden eines festen Outputs über die Hashfunktion.

BTC-ECHO

 

Bildquellen

Ledger Wallet schützt deine Bitcoins