Le code d'opération CheckSequenceVerify est une fonctionnalité Bitcoin intéressante qui ouvre les portes à des scripts avancés qui nous permettent d'effectuer des paiements sécurisés contrôlés par des valeurs de temps programmables.
UL'une des fonctions les plus utiles dont il dispose Script BitcoinSont l' time locks ou TimeLockComme opcode (OP_CODE) VérifierSéquenceVérifier (CSV). Cela, avec d'autres codes de verrouillage, permet Bitcoin peut être utilisé comme monnaie numérique programmable.
El CheckSequenceVerify est un verrou de temps relatif qui fonctionne au niveau du script. Cela nous permet de définir le moment exact où un blocus sur une transaction spécifique prendra fin. Et bien que ce soit une fonctionnalité qui faisait partie de la fourchette souple de la BIP 68, ce n'est que BIP 112 où il a vraiment été ajouté au système Bitcoin.
L'utilité CheckSequenceVerify permet des fonctionnalités avancées pour les systèmes de construction tels que canaux de paiement de Réseau Lightning (LN). De plus, il ouvre les portes à la création de fonctionnalités avancées pour gérer les fonds de manière décentralisée, utiles pour échanges décentralisés (DEX) ou échange de services P2P Assurance.
De même, bien que le mode de fonctionnement VérifierSéquenceVérifier (CSV) est assez similaire à celle de VérifierLockTimeVerify (CLTV), en CSV, la pile supérieure est vérifiée par rapport au champ d'entrée, au lieu de vérifier l'heure comme c'est le cas dans CLTV. Ainsi, nous pouvons calculer le temps en fonction du nombre de blocs qui ont été générés après la confirmation de la transaction. Autrement dit, les verrous temporels relatifs comme CheckSequenceVerify peuvent marquer une transaction comme invalide. Et pour cela, ils surveillent que l'intervalle de temps établi s'est écoulé depuis la confirmation des précédentes sorties de la transaction.
En termes plus simples, les verrous temporels relatifs nous permettent de définir exactement le laps de temps qui s'écoule avant qu'une transaction puisse être confirmée. Contrairement aux verrous temporels absolus qui définissent le moment exact (numéro de bloc, ou date et heure) où le verrou sur la transaction se terminera.
Comment fonctionne CheckSequenceVerify (CSV)?
Verrous de temps au niveau du script comme CheckSequenceVerify (CSV) fonctionnent en conjonction avec des verrous de niveau transaction, donc ces derniers sont importants lors de l'application d'un verrou CSV. En effet, dans les verrous CSV, les scripts vérifient le verrou de transaction. Pour ce faire, ils vérifient que ladite transaction est bloquée et utilisent ces verrous sur les transactions comme une garantie d'âge indiquant que le temps établi est écoulé.
Dans le BIP 112 bitcoins, CheckSequenceVerify est décrit comme un opcode qui donne une nouvelle définition à la commande OP_NOP3 existante. Cette mise à jour vous permet de verrouiller une transaction au niveau du script en fonction de l'âge ou de l'âge de la sortie qui est dépensée. Cette fonctionnalité fonctionne en conjonction avec BIP 68. De cette manière, vous pouvez également empêcher une transaction d'être incluse dans un bloc. Ceci jusqu'à ce que le temps établi ou l'ancienneté soit écoulé.
Lorsque le verrou CSV est vérifié avec la valeur nSequence établi, il est vérifié si l'âge minimum de la production dépensée est déjà atteint. Si cela n'est pas encore rempli, les chemins d'exécution du script qui incluent le verrou CSV peuvent être validés. Ainsi, la transaction ne peut pas être incluse dans un bloc tant que la condition n'est pas remplie.
Ainsi, lorsque l'opcode CSV est appelé, il provoque l'échec du script à moins que le numéro de séquence dans la transaction n'indique qu'un intervalle de temps s'est déjà écoulé dans le verrou de temps relatif, qui est supérieur ou égal à l'indicateur de l'opcode CSV. Garantissant ainsi que la transaction ne pourra être incluse dans un bloc valide qu'une fois le temps de blocage expiré ou expiré.
Lorsque cet opcode est implémenté, CheckSequenceVerify permet de définir des verrous sur les transactions avec un maximum de 65.535 XNUMX blocs. Mais vous pouvez également définir ce verrou sur un maximum jusqu'à 65.535 * 512 secondes. En revanche, ces verrous sont très utiles lors de l'établissement de verrous temporels relatifs sur des transactions qui n'ont pas été confirmées ou transmises au réseau. Depuis CSV permet la création de transactions intelligentes définissant et établissant à l'avance toutes les instructions nécessaires à leur exécution. Ainsi, nous avons la garantie et la sécurité que ledit contrat ou transaction ne se produira que dans le cadre de la commande établie. Tout cela indépendamment du moment où il commence à fonctionner.
Implémentations de CheckSequenceVerify (CSV)
L'implémentation de l'opcode OP_CSV permet aux transactions sur la blockchain d'avoir une date d'expiration relative. Une propriété qui à son tour permet aux transactions d'être stockées indéfiniment. Tant que les conditions de verrouillage de l'heure initialement établies demeurent. Tout le contraire se produirait si le code d'opération OP_CLTV est utilisé, avec lequel toute la chaîne de transactions aurait une date limite pour l'exécution et l'expiration.
Ensuite, lorsque OP_CSV est utilisé pour enchaîner des transactions via des temps de verrouillage relatifs, il est possible de créer un chemin de code qui n'est accessible qu'une fois l'intervalle de temps défini écoulé. Autrement dit, une fois que les extrants dépensés sont confirmés. Permettre la création et l'application de fonctions supplémentaires qui rendent le réseau beaucoup plus attractif. Par exemple, la mise en œuvre de contrats avec des dates d'expiration o la possibilité d'avoir pratiquement la caractéristique de réorganisation de la chaîne o invalidation rétroactive. Bien qu'il soit presque impossible de réaliser sur une blockchain, d'autres applications similaires telles que protocoles de garde ou contrats à durée limitée, canaux de paiement bidirectionnels y Réseau d'éclairage.
Que savez-vous, cryptonuta?
L'existence de CheckSequenceVerify est-elle vitale pour Lightning Network?VRAI!
L'une des conditions requises pour le fonctionnement du Lightning Network est la fonction CheckSequenceVerify, un besoin décrit dans le livre blanc de Lightning Network, en particulier pour éviter les situations dans lesquelles l'une des parties peut voler des fonds du système.
Cas d'utilisation de CheckSequenceVerify (CSV)
Examinons maintenant quelques cas d'utilisation que CSV nous permet au sein de Bitcoin grâce à sa création:
Création de contrats avec délai d'expiration
Avec CSV, il est possible d'établir des contrats à durée déterminée ou à date d'expiration. Dans ces contrats, vous pouvez définir plusieurs conditions qui commenceront lorsqu'une transaction commence et devient effective. Par exemple: pour effectuer un dépôt de garantie entre 2 personnes ou plus, qui expire automatiquement après 30 jours après avoir été effectué, les parties concernées (María, Pedro et Juan) peuvent créer un adresse multi-signature aux conditions suivantes:
- Les fonds peuvent être récupérés à tout moment, en utilisant 2 des 3 signatures autorisées. Ceux-ci peuvent être combinés de n'importe quelle manière (María et Pedro, Pedro et Juan, María et Juan).
- Maria ne peut signer seule et utiliser les fonds qu'après 30 jours de la transaction.
Ce verrou de temps relatif commencera jusqu'à ce que la transaction soit confirmée à l'adresse de dépôt.
Créer des protections d'invalidation rétroactives
Alors que pour des raisons de sécurité et de protection, la blockchain est immuable une fois que des données et des informations y ont été ajoutées. Mais il existe de nombreux cas dans lesquels il est idéal de pouvoir modifier ou annuler un contrat une fois établi. Cependant, bien que vous ne puissiez pas effectuer directement invalidation rétroactive une fois les données confirmées dans la blockchain, un réorganisation de la chaîne. Bien que cette fonctionnalité soit également particulièrement difficile à réaliser et assez coûteuse.
Même ainsi, grâce au code d'opération CSV, vous pouvez créer des scripts avec plusieurs branches pour l'exécution des opérations. Lorsque, si une ou plusieurs de ces branches sont retardées ou non remplies, un espace est créé dans lequel il est possible d'ajouter une condition d'invalidation du contrat d'origine, ce qui permet la dépense des sorties. Annulation de la branche où la condition qui n'était pas remplie est établie. Empêchant ainsi la transmission de la transaction sur le réseau. Sinon, le contrat suivra le cours initialement établi.
Création de contrats HTLC (Hash Time Locked Contracts)
L'une des fonctions les plus importantes du CSV est la création du Contrats verrouillés par temps de hachage ou contrats verrouillés par temps de hachage (HTLC). C'est grâce à ces contrats qu'il est possible de créer un système permettant à deux utilisateurs de créer un canal de paiement. Celui où la partie destinataire doit créer une preuve cryptographique valide afin de libérer le paiement retenu par le contrat.
Cette fonction est ce qui permet, par exemple, de créer des canaux de paiement sécurisés entre deux utilisateurs. Ces canaux sont capables d'effectuer des opérations en chaîne (dans la même chaîne) et en chaîne croisée (entre deux chaînes différentes). De cette manière, les HTLC permettent à un mécanisme sécurisé d'effectuer des opérations de Swaps atomiques.
Mais pas seulement cela, les HTLC sont également ce qui rend possible le fonctionnement sûr du Lightning Network. Démontrant ainsi l'impact et l'utilité des CSV dans tout l'écosystème Bitcoin.