Les timelocks sont l'une des fonctionnalités les plus pratiques de Bitcoin, vous permettant de programmer des actions en fonction d'une série de paramètres et de convertir ainsi Bitcoin en quelque chose de mieux que l'argent, une monnaie numérique entièrement programmable.
UL'une des fonctionnalités innovantes dont il dispose Bitcoin il est connu comme TimeLock. C'est un outil qui sert à établir et à préciser certaines conditions dans lesquelles les transactions peuvent être validées.
Un timelock o verrouillage du temps, est un type de contrat intelligent primitive, qui fait référence à la hauteur de bloc ou à l'heure spécifique, une transaction particulière peut être incluse par les mineurs sur la blockchain. Pour ce que fonctionne comme une sorte de blocage absolu ou de restriction sur les dépenses de certains bitcoins jusqu'à ce que ces conditions soient remplies.
Un blocage temporel peut être défini en fonction du temps réel ou d'une hauteur de bloc spécifique. Alors, quand ce moment ou cela hauteur de bloc défini dans le calendrier, les mineurs pourront inclure la transaction dans le hachage de la arbre merkle, et ajoutez-le au dernier bloc de la blockchain. Et à ce moment, c'est que la transaction peut être confirmée.
Classification des TimeLocks
Timelocks a été ajouté au logiciel Bitcoin original par son créateur, Satoshi Nakamoto. Ils sont présents dans toutes les transactions bien que la plupart n'utilisent pas cette fonction, donc l'heure de verrouillage par défaut est 0x00000000 (0) ou 0xFFFFFFFF (4294967295). Cependant, pour les transactions dans lesquelles le délai est utilisé, il est important de savoir qu'il a 3 attributs importants. Qui sont: emplacement, orientation y métrique.
Localisation
Comme nous l'avons déjà mentionné, des délais peuvent être trouvés dans les transactions même si cette fonction n'est pas utilisée. Et ils peuvent également être inclus dans les scripts. Les deux sont très similaires, mais remplissent des fonctions complètement différentes.
Dans les transactions, les timelocks signifient qu'il ne peut pas être validé avant d'atteindre un certain temps ou d'atteindre une hauteur de bloc définie, bien que leurs signatures numériques et scripts oui, ils sont valides. Alors que les temps de verrouillage dans les scripts, ils déterminent si un script est valide. Ainsi, des conditions peuvent être définies sur toutes les transactions qui dépensent une sortie.
Contrairement au blocage des transactions, qui ne restreint que cette transaction particulière. D'où l'importance de la localisation du timelock pour qu'ils puissent effectuer l'opération correspondante.
Orientation
Il y a des délais absoluto ou le temps relatif. Le premier permet de définir le blocus en fonction d'un certain temps. Nous pouvons donc choisir le moment exact où le bloc se terminera.
Alors que le verrouillage temporel relatif permet de définir un certain laps de temps qui doit s'écouler à partir de la confirmation des sorties précédentes. Les deux options sont extrêmement utiles pour définir les intervalles de temps nécessaires pour qu'une transaction soit traitée par le réseau Bitcoin.
Métrique
Dans Bitcoin, il existe deux façons de mesurer le temps: le numéro de bloc et la horodatage. Nous pouvons donc utiliser les deux pour définir un délai. Lors de la définition d'un délai basé sur un numéro de bloc, les mineurs doivent s'attendre à atteindre ce numéro de bloc. Ceci afin de valider et confirmer l'opération, et de l'inclure dans un nouveau bloc.
En revanche, lorsque le blocage temporel est défini sur la base d'un horodatage, les mineurs attendent que la durée définie en secondes s'écoule. Autrement dit, un certain temps est atteint pour valider la transaction. Ceci est mesuré par la marque de Heure Unix.
Types de serrures
Aujourd'hui, Bitcoin dispose actuellement de 4 façons de définir des verrous ou des timelocks. Deux de ces outils sont au niveau des transactions et les deux autres au niveau des scripts. Voyons chacun d'eux.
1.nLockTime
Il s'agit d'une verrouillage du temps absolu au niveau de la transaction. C'est le seul verrou horaire qui était disponible dans la version originale Logiciel Bitcoin. Quand le noeuds ils n'ont ni relayé ni sapé les transactions avec nLockTime égale ou supérieure à la hauteur du bloc courant.
Par conséquent, les transactions n'étaient pas validées tant que le bloc établi n'était pas atteint. Dans ces verrous, le temps est exprimé sous forme d'entiers 32 bits non signés. Si le nombre est inférieur à 500 millions, il est interprété comme une hauteur de bloc. Au contraire, s'il est supérieur à 500 millions, il est considéré comme un horodatage Unix.
Dans la version Bitcoin 0.1.6, l'interprétation de nLockTime a été ajusté pour permettre également le verrouillage basé sur le temps. Ensuite, à partir du bloc 31001, les contraintes nLockTime ont été activées en tant que règle qui s'appliquait également à l'acceptation de bloc. Plus tard, en juillet 2016, les verrous basés sur le temps ont été modifiés pour fonctionner sur l'heure moyenne passée au lieu de l'horodatage du bloc.
Un nLockTime peut verrouiller une transaction pendant jusqu'à 9.500 2.106 ans en utilisant les numéros de bloc et 0 XNUMX ans en utilisant les horodatages. Et bien que chaque transaction contienne actuellement la fonction nLockTime, la plupart des portefeuilles l'ont prédéfinie à XNUMX. Cela signifie que les transactions peuvent être validées dans n'importe quel bloc de la chaîne.
2. nSéquence
Il s'agit d'une verrouillage horaire par rapport au niveau de transaction. Ces serrures ont été introduites dans le fourchette souple de BIP 68 à la mi-2016. Dans ce document, les numéros de séquence sont utilisés pour établir des délais relatifs au niveau de la transaction. Cela permet à une entrée de spécifier l'heure la plus ancienne qui peut être ajoutée à un bloc. Basé sur combien de temps la sortie dépensée par cette entrée a été incluse dans un bloc sur la blockchain.
Lors de l'application d'un nSequence plusieurs conditions de temps différentes peuvent être définies dans la même transaction. Ainsi, pour que la transaction soit valide, toutes les conditions doivent être remplies. Et si cela ne se produit pas, la transaction entière sera rejetée.
Contrairement à nLockTime, nSequence n'utilise que 18 des 32 bits au total, donc 14 bits sont laissés en réserve pour les futures implémentations. Et de ces 18 bits utilisés, 16 bits sont utilisés pour coder le temps de verrouillage. Les verrous nSequence sont donc limités à 65.535 18 unités par blocs et à seulement XNUMX heures en secondes.
3. VérifierLockTimeVérifier
Aussi connu sous son acronyme comme CLTVEst un verrouillage du temps absolu au niveau du script. Il est détaillé dans la fourche souple BIP 65 et a été introduit sur le réseau fin 2015 par le développeur Peter Todd. Cette proposition ouvre la possibilité de pouvoir effectuer une transaction dans laquelle la date précise à laquelle elle prendra effet peut être précisée (c'est-à-dire la date à laquelle le bénéficiaire pourra utiliser les fonds envoyés).
L'une des fonctions avancées autorisées par CTLV est de modifier le paramètre d'authentification d'une adresse multi-signature. Par exemple, si une adresse multi-signature a été créée avec un schéma 2 sur 3, CLTV peut modifier ledit paramètre sous certains critères en 1 sur 3. De cette manière, la personne peut récupérer les fonds sous certaines conditions préalablement convenues et qui sont défini dans la transaction en raison de la capacité de Bitcoin à être de l'argent programmable.
Que savez-vous, cryptonuta?
Les timelocks peuvent-ils étendre la programmation et la capacité des fonctionnalités de Bitcoin?VRAI!
Les timelocks sont très utiles pour donner à Bitcoin de nouvelles capacités de programmation qui permettent la construction de nouvelles fonctionnalités accrocheuses. Un exemple en est le Lightning Network, qui repose sur des délais et leur capacité à planifier des actions dans Bitcoin.
4.- CheckSquenceVerify
Est verrouillage de l'heure relative au niveau du script. Fait également partie de la fourche souple BIP 68, mais il a été décrit dans le BIP 112 et a été ajouté à la mi-2016. CSV fournit un temps de verrouillage relatif, tout comme le CLTV en fournit un pour le temps de verrouillage absolu, ils sont donc extrêmement similaires. Cependant, au lieu de vérifier l'heure comme le fait le CLTV, le CSV vérifie la pile supérieure avec le champ d'entrée.
Lorsque l'opcode CSV est appelé, cela entraînera l'échec du script à moins que nSequence dans la transaction n'indique qu'une quantité relative de temps de verrouillage est passée égale ou supérieure au paramètre fourni à l'opcode CSV. Cela garantit que la transaction peut être incluse dans un bloc valide lorsque le verrou de temps basé sur CSV a expiré.
Avec ce code opération, les transactions peuvent être bloquées pour un maximum de 65.535 455 blocs, ce qui équivaut à environ 65.535 jours. Ou un maximum de 512 388 × XNUMX secondes, soit environ XNUMX jours.