Zuerst entsteht ein Blockkandidat
Mining-Software wählt gültige Transaktionen aus, baut eine Coinbase-Transaktion und berechnet aus den Transaktionskennungen eine Merkle Root. Zusammen mit dem Hash des vorherigen Blocks, Zeit, Zielwert und Nonce bilden diese Daten den Header. ASIC-Geräte testen dann mit hoher Geschwindigkeit Varianten davon und berechnen doppelte SHA-256-Hashes.
Ein Miner kann Auswahl und Reihenfolge der Transaktionen, Coinbase-Daten und Nonce ändern und so weitere mögliche Header erzeugen. Findet er einen Hash unter dem Netzwerkziel, sendet er den vollständigen Block an Nodes. Diese zählen nicht die erfolglosen Versuche, sondern prüfen den erfolgreichen Header, die Transaktionen und alle weiteren Blockregeln.
Zehn Minuten sind ein statistischer Durchschnitt
Jeder Hash-Versuch hat eine sehr kleine Erfolgswahrscheinlichkeit. Selbst große Rechenleistung verrät nicht, welcher konkrete Versuch gelingen wird. Zwei Blöcke können deshalb kurz nacheinander erscheinen, während das Netzwerk ein anderes Mal deutlich länger wartet. Keine Protokolluhr befiehlt Minern, in Minute zehn einen Block zu veröffentlichen.
Ein größerer Anteil an der gesamten Hashrate gibt einem Miner eine höhere Wahrscheinlichkeit, den nächsten Block zu finden, aber keine Gewissheit. Über längere Zeit nähern sich die Ergebnisse dem Leistungsanteil an; kurze Serien können stark schwanken. Deshalb schließen sich einzelne Miner Pools an und tauschen seltene große Auszahlungen gegen häufigere kleinere Anteile.
- der genaue Zeitpunkt des nächsten Blocks lässt sich nicht planen
- zehn Minuten sind das Mainnet-Ziel für die durchschnittliche Häufigkeit
- ein Mining-Pool senkt Auszahlungsschwankungen, kann aber die Auswahl von Blockvorlagen bündeln
Die Schwierigkeit reagiert nach 2.016 Blöcken
Kommt Rechenleistung hinzu, würden Blöcke bei unverändertem Ziel schneller entstehen; fällt Leistung weg, langsamer. Bitcoin Core vergleicht deshalb im Mainnet nach jeder Periode von 2.016 Blöcken deren tatsächliche Dauer mit dem Ziel von ungefähr zwei Wochen und ändert den Zielwert für die folgende Periode.
Eine schnellere Periode führt zu einem niedrigeren Zielwert und damit höherer Schwierigkeit; eine langsamere zu einem höheren Zielwert. Eine einzelne Anpassung ist auf eine höchstens vierfache Änderung des Zielwerts begrenzt. Der Mechanismus reagiert weder auf Preis noch Transaktionszahl, und das Mainnet passt die Schwierigkeit nicht nach jedem einzelnen Block an.
Stabiles Tempo bedeutet keine vollständige Stabilität
Nach einem starken Einbruch der Hashrate können Blöcke bis zur nächsten Anpassung langsamer bleiben; nach einem starken Anstieg schneller. Die Anpassung verändert vergangene Intervalle nicht rückwirkend, und der Zufall bleibt auch danach bestehen. Sie schafft lediglich eine langfristige Rückkopplung zwischen Rechenleistung und geforderter Schwierigkeit.
Die Schwierigkeit misst außerdem weder direkt die Zahl der Miner noch ihrer Eigentümer. Dieselbe Hashrate kann auf viele Geräte verteilt oder von wenigen Pools koordiniert sein. Bei der Bewertung der Dezentralisierung sind Hardware-Eigentümer, blockbildende Pools, Node-Betreiber und Gerätehersteller getrennt zu betrachten.