BitcoinVonInnen

Proof of Work

Arbeit, Nonce, Target, Chainwork und warum Manipulation teuer wird.

Block 953.428Live

Einstieg: Block, Node und Konsens

Was ist Proof-of-Work?

Proof-of-Work ist der Nachweis, dass reale Ressourcen aufgewendet wurden, um die Entstehung neuer Blöcke an Arbeit zu koppeln.

Dadurch entstehen regelmäßige Ordnungsfenster zwischen zwei Blöcken. Diese geben dem verteilten Netzwerk Zeit, Informationen auszutauschen, Transaktionen zu validieren und sich auf einen gemeinsamen Zustand zu synchronisieren.

Erst wenn ausreichend Arbeit nachgewiesen wurde, kann das aktuelle Ordnungsfenster durch einen neuen Block abgeschlossen und dessen Ergebnis in der Blockchain festgeschrieben werden.

Als Belohnung für die Bereitstellung dieses Mechanismus erhält der Miner die Blocksubvention und die Transaktionsgebühren.

Warum braucht Bitcoin Proof-of-Work?

1Proof-of-WorkNachweis, dass Arbeit erbracht wurde.Folgt daraus:Es gibt eine objektive, von allen Nodesverifizierbare Hürde für neue Blöcke.2Arbeit (Kosten & Zeit)Das Finden eines Blocks verursacht reale Kostenund benötigt Zeit.Folgt daraus:Neuen Zustand festzusetzen ist aufwendig und nichtbeliebig oft wiederholbar.3ZeitDie benötigte Arbeit führt dazu, dass neueBlöcke nicht beliebig schnell entstehen können.Folgt daraus:Die Entstehung neuer Blöcke ist begrenzt.4OrdnungsfensterZwischen zwei Blöcken entsteht ein Zeitfenster,in dem sich das Netzwerk ordnen kann.Folgt daraus:Es gibt einen gemeinsamen Zeitraum fürInformationsverbreitung und Verarbeitung.5SynchronisationTransaktionen und neue Blockinformationenverbreiten sich und werden von den Nodesüberprüft.Folgt daraus:Die Nodes gleichen ihre Sicht auf das Netzwerk an.6Gemeinsamer ZustandDie Mehrheit der Nodes einigen sich auf diegleiche Reihenfolge der Transaktionen.Folgt daraus:Ein neuer Block kann diesen gemeinsamen Zustanddokumentieren.7Akkumulierte ArbeitJeder neue Block baut auf dem vorherigen auf undfügt weitere Arbeit zur Historie hinzu.Folgt daraus:Mit jedem Block wächst die insgesamt aufgewendeteArbeit.8ManipulationsresistenzEine Veränderung der Historie erfordert, dassein Angreifer mehr Arbeit aufwendet als dasgesamte Netzwerk.Folgt daraus:Die Historie wird über die Zeit immer schwerer undteurer zu ändern.

Bitcoin ist ein offenes, verteiltes Netzwerk ohne zentrale Instanz.

Jeder Teilnehmer kann Transaktionen erzeugen, weiterleiten und neue Blöcke vorschlagen. Gleichzeitig existiert keine gemeinsame Uhr und keine zentrale Autorität, die festlegt, welcher Zustand des Systems gültig ist.

Damit ein solches Netzwerk funktionieren kann, müssen zwei grundlegende Probleme gelöst werden.

Problem 1: Aufwand

Ohne Aufwand könnte jeder Teilnehmer beliebig viele konkurrierende Blöcke erzeugen und alternative Historien vorschlagen.

Das Netzwerk hätte keine objektive Möglichkeit, zwischen ernsthaften und beliebig erzeugten Blöcken zu unterscheiden.

Neue Zustände müssen deshalb mit dem Einsatz realer Ressourcen verbunden sein.

Problem 2: Zeit

Transaktionen und Blöcke verbreiten sich nicht sofort durch das Netzwerk.

Unterschiedliche Nodes sehen daher zunächst unterschiedliche Informationen.

Damit ein gemeinsamer Zustand entstehen kann, benötigt das Netzwerk Zeit zur Verbreitung, Validierung und Synchronisation.

Neue Zustände dürfen deshalb nicht beliebig schnell entstehen.

Proof-of-Work verbindet beide Anforderungen

Bitcoin löst beide Probleme mit einem einzigen Mechanismus: Proof-of-Work.

Um einen neuen Block zu erzeugen, muss ein Miner einen Arbeitsnachweis erbringen. Dadurch wird die Entstehung neuer Blöcke an reale Ressourcen gekoppelt und kann nicht beliebig beschleunigt werden.

Die Difficulty passt den erforderlichen Arbeitsaufwand laufend an, sodass weltweit im Durchschnitt nur etwa alle zehn Minuten ein neuer Block entsteht.

Dadurch entstehen regelmäßige Ordnungsfenster zwischen den Blöcken.

Ein Ordnungsfenster gibt dem Netzwerk Zeit, Informationen auszutauschen, Transaktionen zu validieren und sich auf einen gemeinsamen Zustand zu synchronisieren.

Jeder neue Block dokumentiert das Ergebnis des vorherigen Ordnungsfensters und eröffnet gleichzeitig das nächste.

Akkumulierte Arbeit schützt die Historie

Die für einen Block erbrachte Arbeit verschwindet nicht. Sie wird Teil der Historie und addiert sich mit der Arbeit aller vorherigen Blöcke.

Dadurch entsteht eine Kette aus akkumulierter Arbeit (Chainwork).

Wer die Historie verändern möchte, muss diese Arbeit erneut erbringen und zusätzlich die laufende Arbeit des restlichen Netzwerks überholen.

Proof-of-Work erfüllt damit zwei Aufgaben gleichzeitig:

  • Es begrenzt die Entstehung neuer Zustände und gibt dem Netzwerk Zeit zur Synchronisation.
  • Es macht Änderungen an der Historie zunehmend aufwendiger.

Die Manipulationsresistenz der Blockchain entsteht somit als Folge einer fortlaufend erzeugten und akkumulierten Arbeit.

Wie funktioniert Proof-of-Work technisch?

Proof-of-Work basiert auf einer kryptografischen Suchaufgabe.

Für jeden Block berechnet der Miner den Blockhash.

Da Hashfunktionen keine Abkürzung erlauben und ihre Ergebnisse nicht vorhersagbar sind, kann ein gültiger Hash nicht gezielt berechnet werden.

Miner erzeugen deshalb fortlaufend neue Varianten desselben Blockkandidaten und berechnen für jede Variante einen neuen Hash.

Zu den veränderbaren Daten gehören beispielsweise:

Ändert sich die Coinbase-Transaktion, beispielsweise durch eine zusätzliche Extra Nonce, verändert sich auch daraus berechnete Merkle Root und damit der Block Header.

Jede Änderung erzeugt einen neuen Blockhash und damit einen neuen Versuch im Proof-of-Work-Prozess.

Dieser Vorgang wird so lange wiederholt, bis ein Hash gefunden wird, dessen Zahlenwert unter dem aktuellen Target liegt.

Das Netzwerk definiert dafür einen Zielwert, das sogenannte Target. Ein Hash ist nur dann gültig, wenn sein Zahlenwert kleiner ist als dieser Zielwert.

Hash und Target werden häufig als Hexadezimalwerte dargestellt.

Hexadezimalzahlen sind lediglich eine andere Schreibweise für Zahlen.

Der Hash ist daher nicht nur eine Hexadezimaldarstellung, sondern gleichzeitig eine 256-Bit-Zahl.

Blockhash

Hexadezimal · 256 Bit

00000000000000000003d6689c085ae165831e934ff763ae46a2a6c172b3f1b6

dieselbe 256-Bit-Zahl als Dezimalzahl

367.562.706.571.055.774.623.018.925.864.976.319.247.953.903.505.109.430
Target

Hexadezimal · 256 Bit

00000000000000000002ea109000000000000000000000000000000000000000

dieselbe 256-Bit-Zahl als Dezimalzahl

279.135.942.811.774.808.786.449.663.142.866.729.399.324.424.710.127.616

Für die Prüfung des Proof-of-Work werden beide Werte als Zahlen interpretiert und miteinander verglichen.

Ein Block erfüllt den Proof-of-Work, wenn der Zahlenwert seines Hashes kleiner ist als der Zahlenwert des aktuellen Targets.

Die Überprüfung ist anschließend einfach: Jeder Node kann denselben Blockhash berechnen und sofort prüfen, ob er unter dem aktuellen Target liegt.

Alle dafür benötigten Informationen befinden sich bereits im Block Header. Neben den Daten zur Hashberechnung enthält dieser auch nBits, die kompakte Darstellung des aktuellen Targets.

Warum ist Manipulation teuer und schwer?

Ein gültiger Proof-of-Work beweist zunächst nur die Arbeit für einen einzelnen Block.

Die Sicherheit von Bitcoin entsteht jedoch dadurch, dass sich diese Arbeit über viele Blöcke hinweg akkumuliert.

Jeder neue Block verweist auf den Hash seines Vorgängers und baut auf dessen Arbeit auf.

Dadurch entsteht eine Kette, deren Historie nicht nur aus Daten besteht, sondern aus einer fortlaufend gewachsenen Menge nachgewiesener Arbeit.

Möchte ein Angreifer einen bereits bestätigten Block verändern, verändert sich dessen Blockhash.

Dadurch werden auch die Verweise aller nachfolgenden Blöcke ungültig.

Der Angreifer müsste deshalb nicht nur den manipulierten Block neu minen, sondern auch für jeden nachfolgenden Block einen neuen gültigen Proof-of-Work finden.

Je weiter ein Block in der Vergangenheit liegt, desto mehr Arbeit müsste erneut erbracht werden.

Währenddessen erzeugt das restliche Netzwerk fortlaufend neue Blöcke und fügt weitere Arbeit zur Blockchain hinzu.

Der Angreifer muss daher nicht nur die bereits vorhandene Arbeit aufholen, sondern zusätzlich schneller arbeiten als der Rest des Netzwerks.

Mit jeder weiteren Bestätigung steigt die Menge der geschützten Arbeit und damit der Aufwand einer erfolgreichen Manipulation.

Die Sicherheit von Bitcoin beruht deshalb nicht auf einem einzelnen Proof-of-Work, sondern auf der über die Zeit akkumulierten Chainwork der gesamten Blockchain.

Wie viel Arbeit steckt in einem Block?

Die Sicherheit von Bitcoin beruht auf einer enormen Menge an Rechenarbeit.

Zum Zeitpunkt von Block 953.943 betrug die Netzwerk-Hashrate ungefähr 900 EH/s (Exahashes pro Sekunde).

Das entspricht:

900.000.000.000.000.000.000 Hashversuche pro Sekunde

Da im Durchschnitt alle zehn Minuten ein neuer Block entsteht, führt das Netzwerk für einen einzelnen Block ungefähr aus:

900 EH/s × 600 s
≈ 540.000.000.000.000.000.000.000
≈ 5,4 × 10²³ Hashversuche

Das sind mehr als 500 Trilliarden Hashversuche für einen einzelnen Block.

Zur Einordnung betrachten wir einen einzelnen ASIC-Miner.

Für dieses Beispiel nehmen wir vereinfacht an:

Antminer S21
Hashrate: 200 TH/s
Leistungsaufnahme: 3.500 W
Strompreis: 0,07 €/kWh

Der Miner erzeugt pro Sekunde:

200.000.000.000.000 Hashversuche

Um dieselbe Arbeit zu leisten, die das gesamte Netzwerk durchschnittlich für einen Block aufbringt, müsste dieser einzelne Miner rechnerisch etwa arbeiten:

5,4 × 10²³
─────────────
2 × 10¹⁴
≈ 2,7 × 10⁹ Sekunden
 
Das entspricht ungefähr:
 
≈ 85 Jahre

Mining ist dabei ein Wahrscheinlichkeitsprozess. Ein Miner findet nicht nach exakt 85 Jahren einen Block. Die Rechnung beschreibt lediglich die durchschnittlich erwartete Arbeit.

Stromkosten dieser Arbeit

Bei einer Leistungsaufnahme von 3,5 kW ergibt sich:
85 Jahre × 365 Tage × 24 Stunden × 3,5 kW
≈ 2.600.000 kWh
Bei einem Strompreis von 0,07 €/kWh:
≈ 182.000 €

Diese Zahlen dienen lediglich der Veranschaulichung.

Die tatsächlichen Werte hängen von der aktuellen Netzwerk-Hashrate, der Difficulty, der Effizienz der eingesetzten ASICs und den jeweiligen Stromkosten ab.

Trotzdem zeigt das Beispiel die Größenordnung der Arbeit, die durchschnittlich hinter einem einzelnen Bitcoin-Block steckt.

Jeder weitere Block fügt zusätzliche Arbeit hinzu.

Die Blockchain schützt ältere Blöcke daher nicht nur mit der Arbeit eines einzelnen Blocks, sondern mit der akkumulierten Chainwork aller nachfolgenden Blöcke.