Aller au contenu
buybitcoinsmart

Glossaire / Transactions et frais

Numéro de séquence

Aussi appelé nSequence.

Qu'est-ce que le numéro de séquence ?
Le numéro de séquence est un champ de quatre octets présent sur chaque entrée de transaction, qui signale le remplacement par des frais supérieurs, active le locktime et peut encoder un verrou temporel relatif.

Spécifié dans BIP-68.

Trois fonctions sans rapport partagent un seul champ parce que le bitcoin ne pouvait pas se permettre d'en ajouter un autre. Le plan initial de Satoshi, un canal de paiement rudimentaire où chaque nouvelle version augmentait le nombre, a été abandonné vers 2010, car aucune règle n'obligeait les mineurs à préférer la version la plus élevée. Ce qui a survécu est un ensemble de valeurs magiques qui décident du comportement des transactions de votre portefeuille.

Comment cela fonctionne

Lire un numéro de séquence suppose de le confronter à trois règles distinctes, dans l'ordre de leur ancienneté.

La valeur finale. Une séquence de 0xffffffff, soit 4 294 967 295 en décimal, marque une entrée comme finale. Si toutes les entrées d'une transaction sont finales, le champ locktime est ignoré complètement. C'était la valeur par défaut des premiers portefeuilles et c'est encore ce que vous voyez sur les transactions construites par un logiciel qui n'a jamais réfléchi à ce champ.

Le signal de remplacement. Le BIP125 a donné un sens au bas de la plage : toute entrée réglée sur 0xfffffffd ou moins annonce que l'expéditeur peut remplacer la transaction par une version qui paie davantage. La valeur 0xfffffffe passe entre les deux : elle active le locktime tout en retenant le signal de remplacement. Cette distinction a perdu l'essentiel de sa portée, car Bitcoin Core relaie les remplacements sans tenir compte du signal depuis la version 28.0, en octobre 2024.

Le verrou temporel relatif. Le BIP68 a réinterprété les bits de poids faible pour les transactions qui déclarent la version 2 ou supérieure, et la règle est devenue applicable au bloc 419 328, en juillet 2016. Lorsque le bit 31 est à zéro, les 16 bits les plus bas indiquent combien de temps doit s'écouler après la confirmation de la pièce dépensée par l'entrée. Le bit 22 choisit l'unité : à zéro, des blocs, donc un maximum de 65 535 blocs, soit environ 455 jours ; à un, des périodes de 512 secondes, ce qui donne un plafond proche de 388 jours. Le décompte part de la confirmation de la transaction mère, et non d'une date fixe, ce qui est exactement ce dont un contrat entre deux personnes a besoin.

Où le voir

Le numéro de séquence apparaît comme une colonne dans les dumps de transactions brutes et comme une case à cocher dans les logiciels de portefeuille, et les deux vues emploient rarement les mêmes mots.

Un explorateur de blocs qui décode les entrées affichera des valeurs comme 4294967293 à côté de chacune. Il s'agit de 0xfffffffd, et cela vous indique que le portefeuille a construit une transaction remplaçable. La commande decoderawtransaction de Bitcoin Core affiche le même chiffre, et Sparrow et Electrum l'exposent derrière une option "replace by fee" plutôt que sous forme de nombre.

Lightning est l'utilisateur réel le plus important. Le délai de révocation d'un canal, la fenêtre pendant laquelle votre contrepartie peut être sanctionnée pour avoir publié un ancien état, est un verrou temporel relatif appliqué par ce champ sur l'entrée de la transaction d'engagement. Le même mécanisme sous-tend les swaps sous-marins, les conceptions de coffres-forts et tout contrat où un chemin de remboursement ne doit devenir disponible qu'après que l'autre partie a eu une chance équitable d'agir.

Numéro de séquence vs locktime

Les numéros de séquence sont par entrée ; le locktime est par transaction. C'est le moyen le plus rapide de ne pas les confondre, et cela explique pourquoi les deux servent à des choses différentes.

Le locktime fixe une échéance absolue pour toute la transaction, exprimée en hauteur de bloc ou en heure d'horloge, et il s'applique que les pièces dépensées aient un jour ou cinq ans. Un verrou temporel relatif inscrit dans un numéro de séquence se mesure à partir de la confirmation de la pièce précise que cette entrée dépense, de sorte que chaque entrée peut porter sa propre période d'attente et que le même script fonctionne quel que soit le moment de son approvisionnement. Les deux dépendent aussi l'un de l'autre d'une manière peu commode : le locktime n'est appliqué que si au moins un numéro de séquence est inférieur à la valeur finale, si bien qu'un portefeuille qui règle tout sur 0xffffffff désactive discrètement l'autre champ.

À ne pas confondre avec

Questions fréquentes

Que signifie un numéro de séquence de 4294967293 ?

Il s'agit de 0xfffffffd, la valeur que les portefeuilles utilisent pour signaler qu'une transaction peut être remplacée par une version qui paie davantage. Elle laisse aussi l'application du locktime activée, ce qui explique que la plupart des portefeuilles modernes la choisissent par défaut.

Un verrou temporel relatif est-il identique à un locktime ?

Non. Un verrou temporel relatif inscrit dans un numéro de séquence se compte à partir de la confirmation de la pièce dépensée, il démarre donc au moment où cette pièce a été minée. Le locktime désigne une hauteur de bloc ou une date fixe pour toute la transaction.

Termes associés

Plus de termes : Transactions et frais

Lire cette page en anglais