Extranonce désigne des données variables généralement insérées dans l’entrée de la transaction coinbase. Leur modification renouvelle les données de la racine de Merkle et du hachage d’en-tête sans agrandir son champ nonce de 32 bits.
Le champ nonce fait 32 bits et offre 2^32 valeurs pour un en-tête sinon identique. Extranonce n’agrandit pas ce champ. Il modifie d’autres données pour construire un nouvel en-tête et réessayer les valeurs de nonce. [Bitcoin Developer Guide — Mining and nonce space]
Modifier extranonce dans coinbase change sa sérialisation et son TXID ; la branche correspondante de l’arbre de Merkle et la racine de Merkle d’en-tête sont recalculées. Les autres transactions peuvent rester identiques. L’ancienne racine ne peut pas simplement rester sans recalcul. [Bitcoin Developer Guide — Mining and nonce space]
Deux octets entièrement libres permettent 2^16 variantes. Avec un nonce de 32 bits et les autres données fixes, le modèle donne 2^48 combinaisons d’entrée. C’est un espace de tentatives distinctes, pas un nombre de blocs trouvés ni une garantie après exploration complète. [Bitcoin Developer Guide — Mining and nonce space]
BIP 34 exige la hauteur du bloc correctement encodée au début du scriptSig de coinbase. La limite de 100 octets concerne tout ce scriptSig, pas seulement extranonce. La zone libre ne doit ni écraser la hauteur ni violer le format de transaction. [BIP 34 — Height in coinbase] [Bitcoin Developer Reference — Coinbase input]
Stratum V2 divise extended extranonce en préfixe upstream fixe, partie réservée localement et espace downstream. Ce partage évite les recherches qui se chevauchent inutilement. Un extranonce_prefix attribué n’est pas automatiquement une zone librement modifiable par le mineur final. [Stratum V2 — Extended extranonce and jobs]
Pour SubmitSharesExtended, coinbase est assemblée dans l’ordre coinbase_tx_prefix, extranonce_prefix, extranonce puis coinbase_tx_suffix. Les octets extranonce soumis doivent avoir la longueur négociée. Le même nombre encodé sur moins d’octets ne produit pas nécessairement la même transaction. [Stratum V2 — Extended extranonce and jobs]
Un Standard Job de Stratum V2 utilise une racine de Merkle fixe ; seules les parties autorisées de version, nonce et nTime varient. L’appareil standard ne soumet donc pas lui-même extranonce comme un canal extended. Un nœud supérieur peut modifier coinbase lors de la préparation d’une nouvelle tâche. [Stratum V2 — Extended extranonce and jobs]
SetExtranoncePrefix de Stratum V2 s’applique aux tâches envoyées après ce message sur le canal concerné. Le résultat doit rester associé au bon job_id et à l’espace attribué. Le dernier préfixe ne remplace pas l’enregistrement de la tâche ayant produit un ancien résultat. [Stratum V2 — Extended extranonce and jobs]
Pour une vision complète, lisez aussi Nonce, Arbre de Merkle, Mining Share, Block Template. Cette entrée est également citée par ASIC Miner, Block Template, getblocktemplate.