Titres Titres
Exploration approfondie du CHECKSIGFROMSTACK (CSFS)
Découvrez le second volet d’une série captivante qui plonge au cœur des propositions de covenants ayant atteint un stade de maturité méritant une analyse détaillée.
Le CHECKSIGFROMSTACK (CSFS), proposé par Brandon Black et Jeremy Rubin avec le BIP 348, ne se classe pas comme un covenant. Comme mentionné dans l’article d’introduction de cette série, certaines propositions exploreront des concepts qui, bien qu’ils ne soient pas des covenants en soi, interagissent de manière synergiques avec eux. CSFS est le premier exemple de cette dynamique.
Une Opcode Simple mais Puissante
CSFS, malgré sa simplicité, constitue une avancée intéressante. Avant de plonger dans son fonctionnement, examinons les fondements de la manière dont le script Bitcoin opère.
Le script Bitcoin est un langage basé sur des piles. Cela signifie que les données sont empilées les unes sur les autres, et les opérations sont effectuées en retirant des éléments du sommet de la pile. Chaque opcode agit sur les données en les retirant ou en les plaçant en haut de la pile.
Comprendre le Fonctionnement d’un Script
Lorsqu’un script est exécuté et vérifié, il se compose de deux parties essentielles : le witness (preuve) qui déverrouille le script et le script lui-même qui est inclus dans la sortie à dépenser. Le witness est ajouté à gauche du script de verrouillage, et chaque élément est traité de gauche à droite.
Exemple d’un Script Basique
Considérons un exemple simple :
1 2 | OP_ADD 3 OP_EQUAL
Ce script additionne le chiffre “1” à la pile, puis “2”, avant de les additionner au moyen de OP_ADD, ce qui produit “3”. Ensuite, un autre “3” est ajouté et finalement, la commande OP_EQUAL vérifie si les deux derniers éléments de la pile sont égaux.
Le Fonctionnement de CSFS
Le CHECKSIG est l’un des opcodes les plus utilisés dans Bitcoin. Chaque transaction, sans presque aucune exception, utilise cet opcode. Cependant, sa rigidité par rapport à la signature qu’il vérifie constitue une limitation. En effet, CHECKSIG ne peut vérifier qu’une signature contre la transaction en cours.
CSFS aspire à remédier à cette contrainte en permettant la vérification d’une signature contre n’importe quel message arbitraire poussé directement sur la pile. La structure basique de l’opcode est la suivante :
| CSFS
Après avoir ajouté la signature et le message à la pile, voici ce qui se produit : CSFS récupère les trois derniers éléments de la pile (public key, message, signature) et vérifie la validité de la signature par rapport au message. En cas de succès, un “1” sera placé en haut de la pile.
Utilités de CSFS
Mais quel intérêt d’adopter CSFS pour vérifier une signature contre un message arbitraire au lieu de la transaction ?
Tout d’abord, en association avec le CTV, CSFS peut fournir une fonctionnalité très attendue par les développeurs du réseau Lightning : des signatures flottantes pouvant s’attacher à différentes transactions.
Par ailleurs, CSFS permet de déléguer le contrôle d’un UTXO. Grâce à cette méthode, une clé CSFS pourrait valider n’importe quelle clé publique, autorisant ainsi un autre utilisateur à dépenser un UTXO sans nécessiter des modifications on-chain. Cela offre une souplesse considérable dans la gestion des fonds.
Pensées Finales
Le CHECKSIGFROMSTACK est un opcode fondamental qui, tout en offrant une fonctionnalité simple, compose remarquablement bien avec des opcodes de covenants pour produire des résultats utiles. Les signatures flottantes représentent un élément essentiel dans de nombreux protocoles Bitcoin utilisant des transactions pré-signées.
En somme, CSFS n’est pas seulement une avancée technique, mais il est également un moyen de redéfinir et d’enrichir l’interaction avec les transactions Bitcoin dans leur ensemble. C’est une proposition mature qui dispose déjà d’implémentations concrètes et d’applications pratiques à travers le temps, consolidant ainsi son rôle en tant qu’outil puissant dans l’écosystème blockchain.
Source https://bitcoinmagazine.com/technical/bitcoin-covenants-checksigfromstack-bip-348