Extra-nonce
L'extra-nonce est un champ supplémentaire dans la coinbase, étendant l'espace de recherche du mineur au-delà du nonce de 32 bits. Indispensable pour les ASIC modernes capables d'épuiser un nonce en moins d'une seconde. Permet de varier la racine de Merkle.
Le problème : un nonce trop court
Dans l'en-tête de bloc Bitcoin, le champ nonce ne fait que 32 bits, soit 2^32 ≈ 4,29 milliards de valeurs possibles. Un ASIC moderne (Antminer S21 ou équivalent en 2026) hache à environ 200 Th/s, soit 200 × 10^12 hashes par seconde. Il épuise donc l'espace complet du nonce en :
2^32 / (200 × 10^12) ≈ 0,02 seconde
Soit environ 20 millisecondes. Bien avant qu'un bloc ne soit trouvé (en moyenne 10 minutes), tous les nonces possibles ont déjà été testés. Sans extra-nonce, le mineur serait coincé.
La solution : l'extra-nonce dans la coinbase
L'extra-nonce est un champ supplémentaire placé dans la transaction coinbase du bloc (la première transaction, qui crée les nouveaux bitcoins). Plus précisément, dans le champ scriptSig de cette transaction, qui peut contenir jusqu'à 100 octets de données arbitraires. Quand le mineur épuise les 4 milliards de nonces classiques, il incrémente l'extra-nonce, ce qui modifie la coinbase, donc la racine de Merkle, donc l'en-tête de bloc. Il recommence alors un cycle de 4 milliards de nonces sur cette nouvelle base.
Hiérarchie des nonces
| Niveau | Valeur | Coût de variation |
|---|---|---|
| nTime | timestamp, ~1 par seconde | Quasi gratuit |
| nonce (header) | 32 bits | Quasi gratuit (hash header) |
| Extra-nonce (coinbase) | 8 octets typiques | Recalcul Merkle root partiel |
| Réordonnancement transactions | Variable | Recalcul Merkle complet |
| Mise à jour template | Continue | Coût de communication pool |
Stratum et la division du travail
Dans le protocole Stratum V1, le pool divise le travail en attribuant à chaque mineur :
- Le « job » : template de bloc + chemin de Merkle.
- Un préfixe extra-nonce unique par mineur (
extranonce1). - Une plage d'extra-nonce libre (
extranonce2).
Le mineur fait varier librement son extranonce2 (typiquement 4 octets) et le nonce classique (4 octets), couvrant ainsi un espace de 2^64 hashes par job. Avec Stratum V2, ce mécanisme est revisité pour donner plus d'autonomie au mineur (qui peut choisir lui-même les transactions à inclure).
Implications pour l'analyse blockchain
L'extra-nonce laisse une trace identifiable de chaque pool. Les chercheurs et explorateurs peuvent extraire le préfixe et le rapporter au pool correspondant. On retrouve par exemple :
/Foundry USA/en clair pour Foundry./AntPool/pour AntPool.- Codes spécifiques pour F2Pool, ViaBTC, MARA, etc.
Cela explique comment les sites comme mempool.space identifient le pool ayant miné un bloc, sans réelle « signature » technique : c'est juste un texte dans la coinbase.
Évolutions et limites
Avec l'augmentation continue du hashrate, certains pools commencent à manquer même d'espace extra-nonce dans certains scenarios. Plusieurs propositions (notamment dans Stratum V2) permettent de générer des templates plus diversifiés en réordonnant légèrement les transactions ou en ajustant nTime. Le minage reste un casse-tête combinatoire en évolution constante.
À retenir
L'extra-nonce est l'astuce technique qui permet aux ASIC modernes de continuer à chercher des blocs alors que le nonce header est ridiculement petit pour leur vitesse. C'est un élément discret mais critique de la mécanique du minage. Voir nonce et coinbase.
Termes lies
- NonceLe nonce est le champ de 32 bits que le mineur fait varier pour trouver un hash valide. Il est complété par l'extra-nonce et le coinbase pour un espace de recherche suffisant. Un nonce trouvé = un bloc miné. C'est la pièce centrale de la PoW.
- Coinbase (transaction)La coinbase est la première transaction de chaque bloc, créée par le mineur. Elle ne consomme pas d'UTXO et émet la subvention + les frais. Contient le scriptSig spécial où peuvent figurer messages et données arbitraires. Le bloc Genèse y inscrit le célèbre titre du Times.
- Racine de MerkleLa racine de Merkle (Merkle root) est le hash sommet d'un arbre de Merkle. Elle figure dans l'en-tête de bloc et résume toutes les transactions du bloc en 32 octets. Modifier une seule transaction modifie la racine. C'est la pierre angulaire de l'intégrité des blocs.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.