Difficulty Adjustment passt die Schwierigkeit beim Mining automatisch an. Finden Miner zu schnell neue Blöcke, wird die Suche erschwert; finden sie zu langsam welche, wird sie erleichtert. So kann Bitcoin sein ungefähres Tempo auch bei starken Änderungen der Rechenleistung halten. Jeder vollständig prüfende Knoten kontrolliert die Anpassung nach denselben Regeln. Kein Betreiber legt sie nach eigenem Ermessen fest.
Stellen Sie sich vor, dass viele neue Mining-Geräte hinzukommen. Zusammen führen sie mehr Berechnungen pro Sekunde aus und finden bei gleicher Schwierigkeit im Durchschnitt schneller Blöcke. Ein Block bündelt bestätigte Transaktionen; bei seiner Erstellung können auch neue Bitcoin entstehen. Ohne Anpassung würden leistungsfähigere Geräte deshalb auch die Ausgabe neuer Bitcoin beschleunigen. Miner berechnen immer wieder einen Hash, einen numerischen Fingerabdruck des Block-Headers. Sie haben Erfolg, wenn das Ergebnis klein genug ist. Eine strengere Grenze verringert die Erfolgschance jedes Versuchs: Im Durchschnitt wird mehr Arbeit nötig. [3]
Im Bitcoin-Hauptnetz, dem Mainnet, wird die Schwierigkeit alle 2 016 Blöcke neu berechnet. Bei durchschnittlich zehn Minuten pro Block entspricht das ungefähr zwei Wochen. Es gibt aber keinen Wecker: Erst die entsprechende laufende Blocknummer, die Blockhöhe, löst die Anpassung aus. Schalten viele Miner ihre Geräte plötzlich ab, können die verbleibenden Blöcke länger brauchen. Das Netzwerk beendet zunächst die Periode mit der alten Schwierigkeit. Eine sofortige Notfallabsenkung gibt es im Mainnet nicht. [1] [2]
Angenommen, die für die Berechnung gemessene Zeit beträgt 10 statt der angestrebten 14 Tage. Dann wird die nächste Periode schwieriger: Die Schwierigkeit steigt ungefähr im Verhältnis 14 zu 10, also um 40 %. Dauert der gemessene Zeitraum dagegen 28 Tage, halbiert sie sich ungefähr. Diese vereinfachten Beispiele lassen Rundungen außer Acht und setzen voraus, dass die niedrigste erlaubte Schwierigkeit nicht greift. Bleibt die Rechenleistung anschließend gleich, nähert sich die erwartete Blockzeit wieder zehn Minuten. [1] [2]
Zehn Minuten sind ein langfristiger Durchschnitt, keine zugesagte Wartezeit. Zwei Blöcke können kurz hintereinander eintreffen; auf einen anderen wartet man deutlich länger. Auch muss Ihre Transaktion nicht im nächsten Block enthalten sein: Ihre Gebühr und andere wartende Transaktionen spielen ebenfalls eine Rolle. Die Anpassung steuert weder den BTC-Preis noch garantiert sie Minern Gewinn. Auch die pro Block erlaubte Menge neuer Bitcoin verändert sie nicht. Deren regelmäßige Halbierung, das Halving, folgt einer eigenen Regel. [2] [3]
Die Regeln arbeiten mit einem numerischen Grenzwert, dem target. Ein kleineres target bedeutet schwierigeres Mining; die als Schwierigkeit angegebene Zahl drückt diesen Zusammenhang umgekehrt aus. Das neue target ergibt sich aus dem alten, multipliziert mit der gemessenen Zeit und geteilt durch die Sollzeit von 1 209 600 Sekunden. Zuvor wird die gemessene Zeit auf mindestens ein Viertel und höchstens das Vierfache der Sollzeit begrenzt. So ist die Größe eines Anpassungsschritts beschränkt. Außerdem darf das target den Höchstwert powLimit nicht überschreiten. Im Header steht es in der kompakten Darstellung nBits, deren Genauigkeit begrenzt ist. Deshalb sind die Prozentwerte der Beispiele Näherungen. [1] [2]
Bitcoin Core vergleicht den Zeitstempel im Header des letzten Blocks der abgeschlossenen Periode mit dem des ersten. Zwischen 2 016 Blöcken liegen 2 015 Abstände; diese historische Besonderheit bleibt in den Regeln erhalten. Miner tragen die Zeitstempel innerhalb der Netzwerkregeln ein. Es sind weder genaue Messungen des Fundzeitpunkts noch Median Time Past, eine andere Zeitangabe aus vorherigen Blöcken. Um den Zweck der Anpassung zu verstehen, braucht man dieses Detail nicht. Für eine exakte Nachrechnung ist es jedoch entscheidend. [1]
Webseiten zeigen oft eine Schätzung der nächsten Änderung. Bis zum Ende der Periode kommen weitere Blöcke hinzu, deshalb kann sich diese Schätzung ändern. Eine abgeschlossene Anpassung lässt sich am eigenen Knoten prüfen: die Zeitstempel der Grenzblöcke vergleichen, deren nBits in numerische targets umwandeln und die Rechnung einschließlich Begrenzungen und Rundung wiederholen. Jeder Full Node, also ein Knoten, der Bitcoins Regeln selbst prüft, kontrolliert das vorgeschriebene target beim Annehmen eines Blocks. Dieses Verfahren gilt für das Mainnet; Testnetze können andere Regeln haben. [1] [2]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Proof of Work, Mining, Timechain / Blockchain, Block Subsidy. Auf diesen Eintrag verweisen außerdem Timechain / Blockchain, Proof of Work, Mining, Halving.