Aller au contenu
buybitcoinsmart

Glossaire / Minage et consensus

Nonce

Qu'est-ce qu'un nonce ?
Un nonce est le compteur de quatre octets de l'en-tête de bloc que les mineurs incrémentent en cherchant un hash inférieur à la cible, ce qui ne donne que 4 294 967 296 essais par en-tête.

Spécifié dans BIP-320.

Le mot est l'abréviation de « number used once » (nombre utilisé une seule fois), et dans bitcoin il désigne le seul champ d'en-tête qui existe uniquement pour être modifié. Quatre octets semblaient généreux en 2009 et sont dérisoires aujourd'hui : une seule machine moderne épuise toute la plage en une fraction de seconde. Les mineurs font donc varier aussi d'autres parties de l'en-tête, et le nonce n'est que la boucle la plus interne de la recherche.

Comment cela fonctionne

Un nonce occupe les quatre derniers octets de l'en-tête de 80 octets, et le minage consiste à parcourir ses valeurs.

Le mineur assemble un en-tête candidat, le hache deux fois avec SHA-256, et compare le résultat à la cible. Si le résultat est trop grand, le compteur s'incrémente et l'en-tête est haché de nouveau. Rien d'autre ne doit changer, ce qui garde la boucle peu coûteuse : SHA-256 travaille sur des blocs de 64 octets, donc les 64 premiers octets de l'en-tête peuvent être traités une fois et réutilisés à chaque tentative.

Le problème, c'est la plage. Quatre octets contiennent 4 294 967 296 valeurs distinctes, et un ASIC annoncé à 200 térahashs par seconde les parcourt toutes en environ 21 microsecondes. La recherche comporte donc trois boucles externes. Le mineur fait varier l'extra nonce, quelques octets libres dans le script d'entrée de la transaction coinbase, ce qui modifie cette transaction, ce qui modifie la racine de merkle, ce qui produit un en-tête entièrement nouveau à chercher. Il peut avancer l'horodatage dans les limites des règles. Et depuis le BIP320, il peut faire varier seize bits du champ de version, avec le masque 0x1fffe000, ce qui multiplie l'espace par encore 65 536 sans toucher du tout à la liste des transactions.

La recherche de Satoshi a laissé une trace. L'en-tête du bloc de genèse porte la valeur 2083236893, trouvée sur un processeur en 2009 sans variation de l'extra nonce et sans bits de version.

Où le voit-on

Chaque page de bloc sur chaque explorateur affiche le nonce gagnant, et ce nombre ne vous apprend presque rien.

Comme les machines parcourent l'espace dans un ordre imprévisible, et comme l'essentiel de la variation réelle vient désormais de l'extra nonce et de la variation de version, le nombre d'un bloc miné est proche du hasard. Y voir une signification parce qu'il est bas ou élevé est une erreur courante des débutants. Le champ importe davantage aux auteurs de micrologiciels : Stratum attribue à chaque machine connectée sa propre tranche de l'extra nonce pour que deux workers d'un même pool ne dupliquent jamais leur effort, et Stratum V2 reconstruit la négociation des tâches autour du même problème de coordination.

Vous rencontrerez aussi le mot loin du minage. Les schémas de chiffrement utilisent des nonces pour éviter que deux messages produisent le même texte chiffré, Ethereum utilise un nonce de compte comme compteur de transactions, et les connexions web en utilisent un pour bloquer les attaques par rejeu. Aucun de ceux-là n'est le champ d'en-tête de bloc, et ce mot partagé cause plus de confusion évitable que tout autre terme emprunté dans bitcoin.

Questions fréquentes

Pourquoi le nonce de bloc ne fait-il que quatre octets ?

Cela suffisait en 2009, quand aucune machine ne pouvait tester quatre milliards de hash rapidement. Les mineurs modernes épuisent la plage instantanément et trouvent de l'espace de recherche supplémentaire dans l'extra nonce de la transaction coinbase et dans la variation de version.

Qu'est-ce qu'un extra nonce ?

Des octets libres dans le script d'entrée de la transaction coinbase qu'un mineur modifie lorsque le nonce de l'en-tête est épuisé. Les modifier change la racine de merkle, ce qui produit un en-tête entièrement nouveau avec une plage de nonce fraîche.

Termes associés

Plus de termes : Minage et consensus

Lire cette page en anglais