Le code d'opération nSequence est un système qui permet des verrouillages temporels dans Bitcoin. Cela nous aide à programmer certaines conditions dans les transactions qui doivent être remplies en premier lieu, afin que cette transaction puisse être acceptée dans le réseau de manière définitive. Une énorme puissance de programmation que Bitcoin nous offre pour un grand nombre de cas d'utilisation.
Upas du time locks ou TimeLock plus particulier de Bitcoin es nSequence. C'est un verrouillage temporel relatif fonctionnant au niveau de la transaction et qui permet l'utilisation des numéros de séquence d'entrée pour programmer un verrouillage horaire sur le Transactions Bitcoin.
Les NSequences permettent à une entrée de spécifier l'heure la plus ancienne à laquelle elle peut être ajoutée à un bloc. Autrement dit, ils empêchent la confirmation d'une transaction jusqu'à ce qu'un certain âge se soit écoulé dans les sorties de la transaction. Cet âge peut être mesuré en blocs confirmés ou en temps écoulé.
De même, Les nSequences permettent la création et la programmation de plusieurs conditions de temps sur la même transaction Bitcoin en utilisant Script Bitcoin. Qui, bien que différents, seront liés les uns aux autres, ils doivent donc être entièrement remplis pour que la transaction puisse être validée et incluse dans un bloc du blockchain. Si toutes les conditions établies ne sont pas remplies, la transaction ne peut tout simplement pas être validée. Par conséquent, cette transaction sera rejetée par le réseau.
Comment fonctionnent les nSequences?
Les nSequence ils n'utilisent que 18 bits des 32 bits disponibles dans le champ de séquence de chaque transaction. Cela garde les 14 bits restants en réserve pour de futures implémentations. Alors le nSequence est l'un des verrous temporels ou TimeLock les plus légers qui existent dans le réseau Bitcoin.
De même, sur les 18 bits qu'ils utilisent, 16 bits sont utilisés pour configurer les temps de blocage. Ce qui rend ces verrous temporels limités à un total de 65.535 18 unités de bloc disponibles. Ou à un temps de 64.800 heures, ce qui équivaut à XNUMX XNUMX secondes.
Ainsi, bien qu'au départ les nSequences aient été implémentées pour permettre la modification des transactions au sein du Bitcoin mempool. Et ils permettraient le remplacement d'une transaction avant qu'elle ne soit finalisée ou confirmée. C'est-à-dire, ils sont actuellement utilisés comme temps de verrouillage relatif. Cela empêche une transaction d'être extraite tant que les conditions établies ne sont pas remplies. Ces conditions peuvent être un intervalle de temps défini ou une hauteur de bloc. Cela s'applique même lorsque vos signatures numériques sont entièrement valides.
Dans ce cas, si la valeur de nSequence est supérieur à 0xEFFFFFFF, il n'y a pas de consensus sur le numéro de séquence, la transaction peut donc être incluse dans n'importe quel bloc avec toutes les circonstances possibles. Alors que si la valeur de nSequence est inférieur ou égal à 0xEFFFFFFF, alors cela signifie qu'il y a un temps de blocage. Où le bit numéro 22 de la séquence est celui qui détermine si le verrou est basé sur un intervalle de temps ou sur la hauteur du bloc.
Si ce bit a une valeur de "1", alors le temps de blocage est basé sur un intervalle de temps; tandis que si sa valeur n'est pas établie, elle est considérée comme "0" et se réfère à un nombre ou à une hauteur de bloc.
Démarrage NSequence: activation BIP 68
El BIP 68 qui est appelée "Temps de verrouillage relatif utilisant des numéros de séquence imposés par consensus». Cela a donné un nouveau concept et une nouvelle définition aux numéros de séquence pour les transactions Bitcoin avec une version supérieure ou égale à "2". Permettre à ces numéros de séquence d'être réutilisés pour de nouveaux cas d'utilisation. Ainsi que pour les futures implémentations sans casser sa fonctionnalité.
De même, dans le BIP 68 Il est défini que l'intervalle de temps est mesuré en commençant par la médiane du temps passé (MTP) du bloc avant la sortie et se termine par la médiane du temps passé (MTP) du bloc précédent. Le temps médian du passé (MTP) est défini dans le BIP 113, qui spécifie MTP comme point final pour les calculs de temps de verrouillage.
Interpréter une nSequence
L'interprétation du temps de verrouillage se fait en comptant les bits du bit numéro 16 dans la séquence nSequence.
D'autre part, lorsque le temps de blocage est basé sur un intervalle de temps, alors le blocage se développe comme une limitation minimale du temps de blocage sur l'âge de l'entrée. Alors que si le temps de blocage est basé sur des blocs, cela est interprété comme une limitation minimale de la hauteur du bloc sur l'âge de l'entrée.
Dans le premier cas, une nSequence basée sur un temps «n» peut être incluse dans n'importe lequel des blocs qui sont produits 512 * n secondes après la date d'extraction de la sortie épuisée ou le MTP du bloc précédent qui l'a extrait. Pour les verrous temporels basés sur le temps, une échelle de 512 secondes a été choisie car les blocs Bitcoin sont produits toutes les 10 minutes, ce qui équivaut à 600 secondes. Cela permet de coder la même quantité de temps avec le nombre de bits disponibles dans les deux cas. Soit lors de l'utilisation de verrous horaires basés sur des blocs, soit lors de l'utilisation de verrous horaires basés sur des intervalles de temps.
Pour le second cas, où le temps de blocage est basé sur des blocs, la nSequence indique une entrée qui peut être incluse après un nombre «n» de blocs après la date d'extraction de la sortie épuisée ou tout bloc après celle-ci.
Que savez-vous, cryptonuta?
NSequence peut-il signifier un problème de sécurité car il permet de modifier les transactions dans le mempool?FAUX!
Les nSequences ne posent aucun risque pour Bitcoin en permettant de modifier les transactions au sein du mempool, ceci parce que ces transactions sont en fait remplacées par de nouvelles, avec un nouvel ensemble de conditions si elles sont programmées de cette façon.
Implémentations NSequence
CHECKSEQUENCEVERIFY time lock
Le verrou de temps relatif nSequence peut être implémenté dans le code OP_CHECKSEQUENCESSVERIFY. Ce code vous permet de bloquer les dépenses sur une sortie spécifique d'une transaction. Ceci jusqu'à ce que certaines conditions ne soient pas remplies. Comment atteindre certains blocs ou un intervalle de temps défini à partir de l'extraction de la transaction qui contient ladite sortie.
Dans ce cas, lorsqu'un utilisateur utilise et dépense des UTXO sur une entrée de transaction, la valeur de nSequence sur cette entrée doit être définie pour être supérieure ou égale au paramètre défini sur CHECKSEQUENCEVERIFY. De même que le format de la valeur de nSequence doit correspondre à la valeur de CHECKSEQUENCEVERIFY. Autrement dit, si CHECKSEQUENCEVERIFY est spécifié en termes de blocs, la valeur de nSequence doit également être basée sur des blocs.
Pièces colorées
Les pièces colorées Il s'agit d'une méthode d'identification qui permet de représenter et de reconnaître certains actifs du monde réel sur la blockchain Bitcoin. Afin d'éviter les manipulations et les falsifications que peuvent subir ces actifs, ils profitent des propriétés et caractéristiques offertes par la technologie blockchain pour leur protection et sauvegarde.
Bien qu'actuellement, il ait perdu beaucoup de popularité avec la naissance de Ethereum et les Jetons ERC-20, ces types de transactions qui sont créés dans la blockchain Bitcoin sont marqués de manière à pouvoir être distingués du reste des transactions qui se produisent dans la blockchain Bitcoin. Pour lequel une valeur d'étiquette est utilisée dans le champ nSequence de la première entrée de la transaction. Et bien que nSequence soit toujours présent dans les transactions, dans ce cas, il n'est pas utilisé comme verrou mais comme identifiant, en utilisant 6 de ses bits pour former et encoder la valeur de la balise.
Canaux de paiement Decker-Wattenhofer
Les canaux de paiement Les duplex sont décrits pour la première fois dans les articles de Christian Decker et Roger Wattenhofer. Ce type de canal de paiement nécessite l'utilisation de nSequence. Comme son nom l'indique, un canal de paiement duplex est composé de deux canaux de paiement unidirectionnels, un dans les deux sens.
Ces canaux utilisent une structure appelée "arbre d'invalidation" des transactions hors chaîne. Une propriété entre l'opération de financement et les opérations d'achèvement du canal de paiement. Les transactions d'arborescence d'invalidation utilisent également le temps de verrouillage relatif ; la première version de la transaction a un temps de verrouillage relatif important. Et la prochaine version de la transaction (qui invalide la première) utilise un temps de verrouillage relatif légèrement inférieur, et ainsi de suite. Il existe également une transaction "start" qui démarre le délai d'attente pour le temps de verrouillage relatif.
La séquence des transactions est comme ceci:
Financement -> Accueil -> Arbre d'invalidation -> Canal de paiement.
Grâce à cela, il est possible de créer des canaux de paiement sécurisés avec un fonctionnement similaire à celui proposé par le Lightning Network, bien que techniquement plus complexe dans son fonctionnement.