
Der Pate des Konsenses: Ein Leitfaden zum Proof-of-Work

Heute verwenden dezentrale Netzwerke viele verschiedene Konsensmechanismen, aber alles begann mit Proof-of-Work (PoW). Wir erzählen Ihnen, wie es entstand, wie es funktioniert und warum es immer noch als einer der Kernalgorithmen in Web3 verwendet wird.
Ursprünglich war Proof-of-Work nicht als Grundlage für dezentrale Netzwerke gedacht. Es hatte überhaupt nichts mit Kryptowährungen zu tun und sollte vielmehr dazu beitragen, Benutzer „gemeinsam genutzter Ressourcen“ vor verschiedenen Arten von Missbrauch zu schützen. Die Schöpfer des Konzepts, das bereits 1993 vorgestellt wurde, boten eine Lösung an, die den Zugriff auf eine bestimmte Ressource einschränkte, indem sie von den Teilnehmern die Durchführung komplexer Berechnungen verlangte. Außerdem wurde festgelegt, dass die Ergebnisse dieser Berechnungen leicht und schnell überprüfbar sein würden.
Die erste für die praktische Umsetzung geeignete Version wurde erst fünf Jahre später vorgeschlagen, als Adam Back das Hashcash-Projekt ins Leben rief, dessen Hauptaufgabe darin bestand, Spam zu bekämpfen. Die Idee bestand darin, mithilfe von Kryptografie das Versenden von Massen-E-Mails zu erschweren. Vor dem Versenden jeder E-Mail müssen die Absender komplexe Berechnungen durchführen – einen solchen x-Wert finden, dass der SHA(x)-Hash N führende Nullbits enthält – und das Ergebnis (Proof-of-Work) in den Nachrichtenkopf aufnehmen.
Damit der Brief den Empfänger erreicht, muss überprüft werden, ob der Absender das kryptografische Problem gelöst hat. Dies kann sehr schnell mit einer einmaligen SHA-1-Berechnung unter Verwendung eines im Voraus vorbereiteten Labels erfolgen. Dieses Label wird vom Absender generiert, bevor er mit der Lösung des Problems beginnt, und ist für alle Teilnehmer des Systems öffentlich zugänglich. Daher verursacht das Versenden einiger Briefe keine Probleme, aber für die Durchführung einer Massen-E-Mail-Kampagne benötigen Sie eine beträchtliche Rechenleistung.
Klingt bekannt, oder? Dieses Konzept wurde 2008 von Satoshi Nakamoto verwendet, um Bitcoin und seine Proof-of-Work-Blockchain zu erstellen.
So funktionieren PoW-Blockchains
Der Kern von Nakamotos Idee (es ist nicht bekannt, ob es sich um eine reale Person oder eine Gruppe von Entwicklern handelt) war das Ziel, ein dezentrales elektronisches Bargeldsystem zu schaffen, das unabhängig von Dritten ist. Es würde den direkten Geldversand ermöglichen, ohne Zwischenhändler wie Banken.
Informationen zu Transaktionen werden in einem Register gespeichert, das unter den Systemteilnehmern verteilt wird. Der Sequenzierungsprozess besteht darin, die Transaktionen in Blöcke zu packen, die eine begrenzte Größe haben. Jeder Block muss Informationen über den vorherigen Block enthalten. Dazu werden alle relevanten Daten (Transaktionen, Hash des vorherigen Blocks, Zeitstempel usw.) in einen einzigartigen Code, einen sogenannten Hash, umgewandelt. Dies geschieht mithilfe einer Hash-Funktion, die im Fall von Bitcoin SHA-256 heißt. Spezielle „Full Nodes“ sind für die Verwaltung der Ketten verantwortlich, während Miner Nodes an der Erstellung neuer Blöcke beteiligt sind.
Wichtig dabei ist zu erkennen, dass die Hashfunktion so funktioniert, dass aus einem Datensatz immer der gleiche Hash gewonnen wird. Schon kleinste Änderungen führen zu einem anderen Hash.
Wie bereits erwähnt, müssen die Miner den Hash eines Blocks berechnen, um ihn der Kette hinzuzufügen. Dies ist an sich nicht besonders zeitaufwändig. Um zu verhindern, dass das Rechenproblem zu schnell gelöst wird, passt das Netzwerk die Rechenschwierigkeit alle 2.016 Blöcke an. Dies entspricht einem Zeitraum von etwa zwei Wochen. Dies wird getan, um sicherzustellen, dass die Block-Mining-Zeit etwa zehn Minuten beträgt, was den stabilen Betrieb der Blockchain gewährleistet.
Wie funktioniert das also in der Praxis? Miner erhalten Blöcke als Eingaben und berechnen den Hash. Das Netzwerk verlangt jedoch, dass der Hash niedriger als eine bestimmte Zahl ist. Moment mal – haben wir nicht vorhin gesagt, dass der Hash nicht geändert werden kann? Wie funktioniert das also? Hier kommt der Nonce ins Spiel – eine nur einmal verwendete Nummer. Sie wird zu Blöcken hinzugefügt und von den Minern während der Berechnungen geändert, was zu einem anderen Hash führt. Die Miner vergleichen dann den resultierenden Hash mit dem Ziel der Rechenschwierigkeit, und wenn der Hash-Wert höher ist, ändern sie den Nonce erneut und berechnen den Hash neu. Dieser Vorgang wird wiederholt, bis eine Übereinstimmung erreicht ist (das Ergebnis muss gleich oder kleiner als der Ziel-Hash-Wert sein) und kann Millionen Mal passieren.
Um Ihnen ein klareres Bild vom Ausmaß der Aufgabe zu geben, sehen Sie sich die folgende Zahl an:
115792089237316195423570985008687907853269984665640564039457584007913129639936
Dies ist die Anzahl der möglichen Kombinationen im SHA-256-Hash. Sie entspricht der Anzahl der Sterne im Universum, 115 Milliarden Mal.
Die Transaktionskette
Sehen wir uns nun eine Standardtransaktion an, um zu sehen, wie das Ganze funktioniert. Nehmen wir an, wir senden jemandem Geld in Form von BTC. Nachdem wir die Transaktion generiert und mit unserem privaten Schlüssel signiert haben, wird sie an das Netzwerk gesendet. Der vollständige Knoten überprüft, ob sie korrekt ist, und lässt sie, wenn keine Probleme vorliegen, durch die Netzwerke weiterlaufen. Andere Knoten führen ebenfalls Überprüfungen durch und stellen sie in die Warteschlange unbestätigter Transaktionen (Mempool).
Miner sammeln Transaktionen aus dem Mempool (und wählen zunächst diejenigen aus, die ihnen eine hohe Provision einbringen), packen sie in einen Block und beginnen mit den Berechnungen. Wenn einer der Miner das Problem löst, überprüfen die Full Nodes die Lösung und wenn sie richtig ist, erhält der Miner eine Belohnung. An diesem Punkt gilt der Block als „geschürft“ und wird der Blockchain hinzugefügt, während Informationen darüber an alle Netzwerkteilnehmer gesendet werden. Danach beginnen die Miner mit der Arbeit am nächsten Block. Gleichzeitig gilt: Je mehr Blöcke nach dem Block, der unsere Transaktion enthält, in die Blockchain aufgenommen werden, desto höher ist die Bestätigungsstufe.
Einfach ausgedrückt: Damit eine Transaktion als legitim gilt, müssen die meisten Knoten im Netzwerk darin übereinstimmen, dass der Block, der sie enthält, korrekt berechnet wurde.
Ist das alles unvermeidlich?
Nakamoto war nicht die erste Person (oder Personen), die sich zum Ziel gesetzt hat, ein dezentrales System zu schaffen, aber er ist der erste, der es für angebracht hielt, den Proof-of-Work-Konsensmechanismus zu verwenden. Ohne ihn wäre es unmöglich, das Problem der Doppelausgaben zu lösen, das entsteht, wenn ein Absender dieselben Mittel zweimal ausgibt, bevor das System die Transaktion bestätigt. Miner überprüfen Transaktionen jedes Mal auf Doppelausgaben, wenn sie diese vom Mempool erhalten.
Es stimmt, dass auf einer PoW-Blockchain zwei Miner denselben Block minen können. Dies ist nicht unbedingt eine böswillige Handlung und kann durchaus passieren, wenn beide Miner eine Berechnung fast gleichzeitig abschließen und einer von ihnen nicht rechtzeitig die Information erhält, dass der Block bereits gemined wurde. In diesem Fall entsteht eine parallele Kette, die vom fehlerhaften Block ausgeht. Um den falschen „Zweig“ zu entfernen, vergleicht der Konsensmechanismus die beiden Blockchains und gibt dabei der längeren Version den Vorzug.
Probleme und Einschränkungen
Das größte Problem bei PoW – zumindest in seiner reinsten Form – ist die Skalierbarkeit. Beispielsweise beträgt der Durchsatz der Bitcoin-Blockchain etwa 7 Transaktionen pro Sekunde, was ziemlich niedrig ist. Aus diesem Grund füllt sich der Mempool während der Spitzenlastzeiten und Transaktionen mit niedrigen Verarbeitungsgebühren können mehrere Stunden oder sogar Tage lang hängen bleiben. Auf den ersten Blick könnte man meinen, dass der einfachste Weg, die Geschwindigkeit zu erhöhen, darin besteht, Blöcke größer zu machen, damit mehr Transaktionen hineinpassen, oder sie einfach schneller zu minen.
Eine Vergrößerung der Blöcke hat jedoch Konsequenzen: Ihre Erstellung erfordert einen hohen Rechenaufwand und infolgedessen verbleiben nur große Miner oder Mining-Pools im Netzwerk, was zu einer Verringerung der Dezentralisierung führt.
Wenn Sie die Verarbeitungszeit verkürzen, besteht das Risiko, dass die Netzwerkknoten keinen Konsens erzielen können, bevor der nächste Block erscheint. Aus diesem Grund würde die Anzahl der „Zweige“ der Blockchain zunehmen und Doppelausgaben ermöglichen.
All dies ist im Konzept des Blockchain-Trilemmas zusammengefasst, das besagt, dass dezentrale Netzwerke nur zwei ihrer drei Hauptvorteile gleichzeitig bieten können – Dezentralisierung, Sicherheit und Skalierbarkeit. Um dies im Kontext von PoW zu lösen, werden Blockchain-Schichten verwendet. Sie arbeiten „über“ dem Hauptsystem und erhöhen die Transaktionsverarbeitungsgeschwindigkeit.
Darüber hinaus werden neue Konsensprotokolle entwickelt, die parallel zu PoW funktionieren. Kaspa beispielsweise verwendet PoW als Netzwerksicherheitsmechanismus, während Blöcke in einem gerichteten azyklischen Graphen statt in einer Blockchain verpackt werden, sodass Miner parallel an verschiedenen Blöcken arbeiten können.
Hinzu kommt ein prosaischerer Aspekt: Je mehr Rechenleistung eine Blockchain anhäuft, desto komplexer werden die Berechnungen und desto höher ist der Energiebedarf beim Mining.