Zum Inhalt springen
buybitcoinsmart

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.

Häufig gestellte Fragen

Warum ist der Block-Nonce nur vier Byte groß?

Im Jahr 2009 reichte er aus, als keine Maschine vier Milliarden Hashes schnell prüfen konnte. Moderne Miner verbrauchen den Bereich sofort und finden zusätzlichen Suchraum im Extra-Nonce der Coinbase-Transaktion und im Version Rolling.

Was ist ein Extra-Nonce?

Freie Byte im Eingabeskript der Coinbase-Transaktion, die ein Miner ändert, wenn der Nonce im Kopf aufgebraucht ist. Ihre Änderung ändert die Merkle-Wurzel, wodurch ein völlig neuer Kopf mit einem frischen Nonce-Bereich entsteht.

Verwandte Begriffe

Mehr zum Thema Mining und Konsens

Diese Seite auf Englisch lesen