Définition
Nonce : définition
Le nonce est un nombre à usage unique. Sur Ethereum, c'est le compteur de transactions d'un compte, qui fixe leur ordre et empêche de rejouer une transaction. En minage par preuve de travail, c'est aussi le nombre que les mineurs font varier pour trouver un bloc valide.
Thème : Ethereum et smart contracts
Le mot vient de l'anglais number used once. Sur une blockchain à comptes comme Ethereum, chaque compte possède un nonce qui commence à zéro et augmente d'une unité à chaque transaction envoyée. Chaque transaction indique le nonce qu'elle utilise : le réseau n'accepte que la valeur attendue. Une même transaction signée ne peut donc pas être soumise deux fois, et les transactions d'un compte sont exécutées dans l'ordre de leurs nonces. Pour un contrat, le nonce compte les contrats qu'il a créés.
Dans le minage par preuve de travail, comme sur Bitcoin, le nonce a un autre rôle. C'est un champ de l'en-tête du bloc que les mineurs modifient sans cesse pour obtenir un hachage inférieur à la cible de difficulté. Ils testent des milliards de valeurs jusqu'à trouver la bonne. Les deux usages partagent la même idée de nombre utilisé une seule fois, mais répondent à des besoins très différents.
Un exemple concret
Karim a déjà envoyé quatre transactions depuis son compte Ethereum : son nonce est donc à 4. Sa prochaine transaction portera le nonce 4. S'il veut annuler une transaction en attente, il peut envoyer une autre transaction avec le même nonce et des frais plus élevés : le réseau n'en retiendra qu'une seule, celle qui sera incluse dans un bloc.
Les risques à connaître
Une erreur de gestion du nonce peut bloquer les transactions suivantes d'un compte, par exemple si un portefeuille réutilise ou saute une valeur. Envoyer des transactions en parallèle depuis plusieurs outils sur le même compte augmente ce risque. Dans les protocoles cryptographiques, réutiliser un nonce de signature peut même exposer une clé privée.
Questions fréquentes sur Nonce
À quoi sert le nonce d'une transaction Ethereum ?
Il numérote les transactions d'un compte pour qu'elles soient exécutées dans l'ordre et pour qu'une transaction déjà exécutée ne puisse pas être rejouée.
Peut-on modifier le nonce dans son portefeuille ?
Certains portefeuilles permettent de le choisir manuellement, ce qui sert surtout à remplacer ou annuler une transaction bloquée. Une mauvaise valeur peut cependant bloquer les transactions suivantes.