Extranonce sind zusätzliche veränderbare Daten, die die Mining-Software üblicherweise in die Coinbase einfügt: die besondere erste Transaktion eines Blocks, die die Mining-Belohnung zuweist. Ändern sich diese Daten, ändert sich auch der gemeinsame Fingerabdruck der Transaktionen im Blockheader. So entstehen weitere Eingaben für die Suche. Das separate Nonce-Feld im Header wird dadurch nicht größer.
Der Header ist eine kompakte Zusammenfassung der Blockdaten. Ein Bit speichert eine Null oder eine Eins; acht Bits bilden ein Byte. Der Header enthält ein Nonce-Feld mit 32 Bit, das bei sonst unveränderten Daten 2^32 Werte bietet. Derselbe Header mit derselben Nonce ergibt erneut denselben Hash und damit dasselbe Ergebnis. Extranonce verlängert dieses Feld nicht, sondern verändert andere Daten, aus denen ein neuer Header entsteht. Alena kann sich eine neue Aufgabe vorstellen, für die der Zähler erneut durchlaufen werden kann. In der Praxis lassen sich innerhalb der geltenden Regeln auch andere Header-Felder verändern. [1] [5]
Coinbase bezeichnet hier die erste Transaktion jedes Blocks, nicht die Börse. Ändert die Software deren Extranonce, ändern sich die codierten Transaktionsdaten und die TXID, die daraus berechnete Kennung. Über einen Baum schrittweise zusammengefasster Fingerabdrücke führt der Weg zum Merkle Root, dem gemeinsamen Transaktionsfingerabdruck im Header. Die Software muss den betroffenen Zweig neu berechnen. Andere Transaktionen können unverändert bleiben; die alte Wurzel darf aber nicht einfach übernommen werden. Durch diese Berechnungskette erhält der neue Header andere Eingaben für das Mining. [1]
Für ein einfaches Modell lassen wir alles andere unverändert und erlauben zwei völlig frei wählbare Extranonce-Bytes. Sie bieten 2^16 Varianten; zusammen mit der 32-Bit-Nonce entstehen 2^48 Eingabekombinationen. Das sind mögliche Versuche, keine Anzahl gefundener Blöcke. Alena bekommt weder eine leichtere Bedingung noch die Gewissheit, innerhalb dieser Menge erfolgreich zu sein. Der Nutzen ist praktisch: Sie kann weiter suchen. Zusätzlicher Spielraum macht das Gerät, das die Berechnungen tatsächlich ausführen muss, auch nicht von selbst schneller. [1]
Der Platz für Extranonce ist kein leeres Formular ohne Vorgaben. BIP 34, eine konkrete Bitcoin-Regel, verlangt am Anfang des Coinbase-Eingabefeldes scriptSig die korrekt codierte Blockhöhe, also die Position des Blocks in der Kette. Die Grenze von 100 Bytes gilt für das gesamte Coinbase-scriptSig, nicht allein für Extranonce. Die Software muss Platz für Pflichtangaben lassen und das gültige Format erhalten. Würde Alena diese Daten überschreiben, suchten weitere Berechnungen nach einer Lösung für einen ungültigen Block. [3] [4]
Beim gemeinsamen Mining in einem Pool sollten verschiedene Geräte unterschiedliche Varianten durchsuchen. Stratum V2, ein Protokoll zur Verteilung von Mining-Aufgaben, nutzt dafür auch die Aufteilung von Extranonce. Ein übergeordneter Server, upstream genannt, weist einen festen extranonce_prefix zu, also den Anfangsteil dieser Daten. Ein lokaler Vermittler kann einen weiteren Teil für seine Clients reservieren und den Rest downstream weitergeben. Die Richtungen beziehen sich jeweils auf die konkrete Verbindung. Das zugewiesene Präfix darf vom Endgerät nicht automatisch verändert werden; seine festen Werte helfen, die Arbeit der Beteiligten zu trennen. [2]
Bei einem erweiterten Stratum-V2-Kanal übermittelt SubmitSharesExtended mit dem Ergebnis auch die veränderten Bytes. Die Coinbase wird in dieser Reihenfolge zusammengesetzt: coinbase_tx_prefix, extranonce_prefix, extranonce und coinbase_tx_suffix. Diese Namen bezeichnen Teile der Daten, die Mining-Programme austauschen. Das Feld extranonce muss die vereinbarte Länge haben. Selbst wenn eine kürzere Darstellung wie dieselbe Zahl aussieht, kann eine andere Bytefolge eine andere Transaktion ergeben. Computer vergleichen genaue Daten, nicht deren ungefähre menschliche Deutung. [2]
Ein Standard Job in Stratum V2 hat einen festen Merkle Root. Das Endgerät darf nur die erlaubten Teile von version, nonce und nTime verändern: Version, Zähler und Zeit des Headers. Es übermittelt daher keine eigene Extranonce wie bei einem erweiterten Kanal. Übergeordnete Software kann eine neue Coinbase und daraus eine neue Wurzel vorbereiten und eine weitere Aufgabe liefern. Alena findet deshalb möglicherweise keine Extranonce-Einstellung an ihrem Gerät, obwohl der Mechanismus im Gesamtsystem verwendet wird. [2]
Stellen wir uns vor, ein neues Präfix trifft ein, während noch ein Ergebnis früherer Arbeit verarbeitet wird. SetExtranoncePrefix in Stratum V2 gilt für Aufgaben, die danach über den betreffenden Kanal, also die jeweilige Mining-Sitzung, gesendet werden. Ein Ergebnis muss mit der richtigen job_id, der Aufgabenkennung, und dem dazugehörigen Suchraum verbunden bleiben. Überall das neueste Präfix einzusetzen könnte die Datengrundlage eines älteren Ergebnisses verändern. Extranonce schafft unterschiedliche Versuche und hält sie auseinander; es schreibt ihre Aufgaben nicht nachträglich um. [2]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Nonce, Merkle Tree, Mining Share, Block Template, Bitcoin. Auf diesen Eintrag verweisen außerdem ASIC Miner, Stratum V1, Stratum V2, Block Template.