Le Nonce de minage est un paramètre public de recherche de type uint32, pas un secret ni un nonce de signature. Lorsque les autres champs de l’en-tête restent fixes, il offre 2^32 valeurs qu’un ASIC moderne épuise rapidement. Le logiciel de minage renouvelle donc aussi l’espace de recherche en modifiant l’Extranonce dans la transaction coinbase, puis le Merkle Root, ou en modifiant nTime et les bits version autorisés.
L’en-tête Bitcoin comporte 80 octets : version, le hash du bloc précédent, Merkle Root, time, nBits et un Nonce de quatre octets. Le Nonce est un entier non signé de 32 bits, sérialisé dans l’ordre little-endian. Modifier ce champ change l’en-tête sérialisé et son hash double-SHA-256 sans modifier en soi la liste des transactions. [Bitcoin Developer Reference — Block headers]
Une petite modification de l’entrée de SHA-256 ne fournit aucune direction exploitable vers le succès. Augmenter le Nonce d’une unité produit un hash de 256 bits pratiquement sans rapport avec le précédent ; on peut donc modéliser des en-têtes différents comme des essais probabilistes indépendants. En revanche, répéter exactement le même en-tête renvoie toujours le même hash ; aucun gradient utile ne conduit à la valeur gagnante. [Bitcoin Developer Reference — Block headers] [Bitcoin Developer Guide — Mining]
Le Nonce de quatre octets offre exactement 4 294 967 296 valeurs, soit 2^32, lorsque les autres champs de l’en-tête restent inchangés. Un ASIC actuel peut parcourir cet intervalle de nombreuses fois par seconde ; le seul champ Nonce ne suffit donc pas au minage moderne. Épuiser cet intervalle ne garantit pas de trouver un Proof of Work valide. [Bitcoin Developer Reference — Block headers] [BIP 320 — nVersion bits for general purpose use]
Le Mining Pool et le logiciel de minage utilisent l’Extranonce à l’intérieur de la transaction coinbase. Malgré la similitude du nom, ce n’est pas un champ supplémentaire de l’en-tête. Modifier l’Extranonce change le txid de la coinbase, puis le Merkle Root de l’en-tête, ouvrant ainsi un nouvel espace de 2^32 valeurs du Nonce de minage. [Bitcoin Developer Guide — Mining] [Bitcoin Developer Reference — Transactions]
La transaction coinbase constitue une feuille de l’arbre de Merkle. Lors du recalcul de l’arbre, la modification de son txid se répercute sur le Merkle Root de l’en-tête. Le mineur obtient ainsi un nouvel en-tête avec le même hash du bloc précédent et un contenu de bloc presque identique ; il n’a pas besoin de modifier les autres transactions. [Bitcoin Developer Reference — Block headers] [Bitcoin Developer Guide — Mining]
On peut obtenir un espace supplémentaire en modifiant nTime dans les limites permises ou en faisant varier les bits version autorisés, ce que l’on appelle version rolling. BIP320 propose un usage général de certains bits nVersion ; cette proposition ne signifie pas, à elle seule, que tous les bits peuvent être modifiés arbitrairement. Les règles applicables du consensus et de la tâche de minage restent en vigueur, et le hash obtenu doit satisfaire le target. [BIP 23 — getblocktemplate pooled mining] [BIP 320 — nVersion bits for general purpose use]
Dans le minage collectif, le Mining Pool ou le coordinateur des tâches attribue aux workers des valeurs coinbase/Extranonce ou d’autres paramètres différents, afin que les appareils ne hachent pas inutilement des en-têtes identiques. BIP23 décrit aussi le paramètre optionnel noncerange. Les protocoles Stratum répartissent l’espace de recherche entre de nombreux appareils ASIC. [BIP 23 — getblocktemplate pooled mining] [Bitcoin Developer Guide — Mining]
La valeur numérique du Nonce n’est en soi ni bonne ni mauvaise. Un Full Node hache l’intégralité de l’en-tête concerné et compare le résultat au target valide dérivé de nBits. Un Nonce faible ne prouve rien ; c’est le hash de tout l’en-tête, inférieur ou égal au target, qui compte. Satisfaire cette condition ne remplace pas la vérification des autres règles de validité du bloc. [Bitcoin Developer Reference — Block headers] [Bitcoin Core v30.0 — Proof of Work validation]
Le terme nonce s’utilise aussi pour les signatures cryptographiques. Un scalaire secret de signature peut révéler le Private Key s’il est incorrectement réutilisé pour des messages différents. Le Nonce de minage, au contraire, est une donnée publique de l’en-tête qui n’a pas besoin d’être secrète. Les données publiques d’une signature ne doivent être confondues ni avec son scalaire secret ni avec le compteur de minage. [BIP 340 — Schnorr Signatures]
Bitcoin Core renvoie nonce, bits, time et d’autres champs via getblockheader dans la sortie détaillée par défaut. Avec le paramètre verbose réglé sur false, il renvoie l’en-tête sérialisé au format hexadécimal. Pour une vérification indépendante, assemblez ou décodez exactement ses 80 octets, calculez le double-SHA-256 et comparez la valeur numérique du hash au target valide en respectant l’ordre des octets de Bitcoin. [Bitcoin Developer Reference — Block headers] [Bitcoin Core RPC — getblockheader] [Bitcoin Core v30.0 — Proof of Work validation]
Pour une vision complète, lisez aussi En-tête de bloc, Minage, Proof of Work, Mining Target, Transaction coinbase, Bitcoin. Cette entrée est également citée par En-tête de bloc, Transaction coinbase, ASIC Miner, Mining Target.