Glossar / Mining und Konsens
Nonce
- Was ist ein Nonce?
- Ein Nonce ist der vier Byte große Zähler im Blockkopf, den Miner hochzählen, während sie nach einem Hash unterhalb des Ziels suchen, was pro Block-Header nur 4.294.967.296 Versuche ergibt.
Spezifiziert im BIP-320.
Das Wort ist die Kurzform von "number used once", und bei Bitcoin bezeichnet es das eine Feld im Kopf, das allein dazu da ist, geändert zu werden. Vier Byte wirkten im Jahr 2009 großzügig und sind heute trivial: Eine einzige moderne Maschine verbraucht den gesamten Bereich in einem Bruchteil einer Sekunde. Daher variieren Miner auch andere Teile des Kopfs, und der Nonce ist nur die innerste Schleife der Suche.
Wie es funktioniert
Ein Nonce belegt die letzten vier Byte des 80 Byte großen Kopfes, und Mining ist der Vorgang, seine Werte durchzugehen.
Der Miner stellt einen Kandidatenkopf zusammen, hasht ihn zweimal mit SHA-256 und vergleicht das Ergebnis mit dem Ziel. Ist das Ergebnis zu groß, wird der Zähler erhöht und der Kopf erneut gehasht. Sonst muss sich nichts ändern, was die Schleife günstig hält: SHA-256 arbeitet mit 64 Byte großen Blöcken, sodass die ersten 64 Byte des Kopfes einmal verarbeitet und für jeden Versuch wiederverwendet werden können.
Das Problem ist der Bereich. Vier Byte fassen 4.294.967.296 verschiedene Werte, und ein ASIC mit einer Leistung von 200 Terahashes pro Sekunde schafft sie alle in rund 21 Mikrosekunden. Daher hat die Suche drei äußere Schleifen. Der Miner verändert den Extra-Nonce, einige freie Byte im Eingabeskript der Coinbase-Transaktion, wodurch sich diese Transaktion ändert, wodurch sich die Merkle-Wurzel ändert, wodurch ein völlig neuer Kopf zum Durchsuchen entsteht. Er kann den Zeitstempel innerhalb der Regeln vorwärts schieben. Und seit BIP320 kann er sechzehn Bit des Versionsfelds verändern, mit der Maske 0x1fffe000, was den Raum um den Faktor 65.536 vervielfacht, ohne die Transaktionsliste überhaupt zu berühren.
Satoshis eigene Suche hat eine Spur hinterlassen. Der Genesis-Kopf trägt den Wert 2083236893, gefunden auf einer CPU im Jahr 2009 ohne Veränderung eines Extra-Nonce und ohne Versionsbits.
Wo Sie es sehen
Jede Blockseite auf jedem Block-Explorer zeigt den gewinnenden Nonce, und diese Zahl sagt Ihnen fast nichts.
Weil Maschinen den Raum in unvorhersehbarer Reihenfolge durchlaufen und weil die meiste tatsächliche Variation heute vom Extra-Nonce und vom Version Rolling stammt, ist die Zahl in einem geminten Block nahezu zufällig. Eine niedrige oder hohe Zahl zu deuten, ist ein häufiger Anfängerfehler. Das Feld ist wichtiger für die Autoren von Firmware: Stratum weist jeder verbundenen Maschine ihren eigenen Teil des Extra-Nonce zu, damit zwei Arbeiter im selben Pool nie dieselbe Arbeit doppelt erledigen, und Stratum V2 baut die Aushandlung der Aufgaben rund um dasselbe Koordinationsproblem neu auf.
Sie werden das Wort auch weit weg vom Mining antreffen. Verschlüsselungsverfahren verwenden Nonces, damit zwei Nachrichten nicht denselben Geheimtext erzeugen, Ethereum verwendet einen Konto-Nonce als Transaktionszähler, und Web-Anmeldungen verwenden einen, um Replay-Angriffe zu blockieren. Nichts davon ist das Feld im Blockkopf, und das gemeinsame Wort verursacht mehr vermeidbare Verwirrung als jeder andere entlehnte Begriff bei Bitcoin.