Définition
Nonce gap : définition
Un nonce gap est un trou dans la suite des nonces d'un compte : si une transaction utilise un nonce supérieur à celui attendu, elle reste en attente, ainsi que toutes les suivantes, tant que la ou les transactions manquantes n'ont pas été envoyées ou confirmées.
Thème : Ethereum et smart contracts
Sur Ethereum et les réseaux similaires, les transactions d'un compte doivent être exécutées dans l'ordre strict de leurs nonces. Si le compte a déjà exécuté les transactions de nonce 0 à 9, la prochaine doit porter le nonce 10. Une transaction portant le nonce 12 sera conservée par certains nœuds mais ne pourra pas être incluse avant que les transactions 10 et 11 l'aient été. C'est ce décalage que l'on appelle un nonce gap.
Ces trous apparaissent souvent lorsqu'une transaction a été abandonnée par le réseau, par exemple parce que ses frais étaient trop bas, ou lorsqu'un utilisateur emploie plusieurs outils qui gèrent chacun leur propre compteur. Pour débloquer la situation, il suffit généralement d'envoyer une transaction portant le nonce manquant, même une simple transaction de zéro ETH vers sa propre adresse, avec des frais suffisants. Les transactions suivantes peuvent alors être incluses.
Un exemple concret
Le portefeuille de Léa indique trois transactions en attente depuis une heure. En vérifiant, elle constate que la transaction de nonce 15 a disparu du réseau à cause de frais trop faibles, alors que celles de nonces 16 et 17 attendent. Elle envoie une transaction de zéro ETH vers elle-même avec le nonce 15 et des frais adaptés. Dès qu'elle est confirmée, les deux autres passent.
Les risques à connaître
Un nonce gap peut laisser des transactions en suspens longtemps, puis les voir exécutées soudainement une fois le trou comblé, à un moment où les conditions de marché ont changé. Il vaut mieux annuler ou remplacer explicitement les transactions devenues indésirables plutôt que de les laisser en attente.
Questions fréquentes sur Nonce gap
Pourquoi mes transactions Ethereum restent-elles toutes en attente ?
Souvent parce qu'une transaction précédente, avec un nonce plus petit, n'a pas été confirmée. Tant qu'elle bloque, toutes les suivantes attendent derrière elle.
Comment combler un nonce gap ?
En envoyant une transaction qui utilise le nonce manquant avec des frais suffisants, par exemple un transfert de zéro vers sa propre adresse. Les transactions suivantes peuvent ensuite être exécutées.