COVENANT
Mécanisme qui permet d’imposer des conditions spécifiques sur la manière dont une pièce donnée peut être dépensée, y compris dans des transactions futures. Au-delà des conditions usuellement autorisées par le langage script sur un UTXO, le covenant force des contraintes supplémentaires sur la manière de dépenser cette pièce Bitcoin dans des transactions ultérieures. Techniquement, l’instauration d’un covenant intervient lorsque le scriptPubKey d’un UTXO définit des restrictions sur le scriptPubKey des sorties d’une transaction qui dépense ledit UTXO. En élargissant la portée de script, les covenants permettraient de nombreuses évolutions sur Bitcoin comme l’ancrage bilatéral des drivechains, la mise en place de vaults ou encore l’amélioration des systèmes de surcouche comme Lightning. On différencie les propositions de covenants en fonction de trois critères :
- Leur portée ;
- Leur implémentation ;
- Leur récursivité.
Il existe de très nombreuses propositions qui permettraient l’utilisation de covenants sur Bitcoin. Les plus avancées dans le processus d’implémentation sont : OP_CHECKTEMPLATEVERIFY (CTV), SIGHASH_ANYPREVOUT (APO) et OP_VAULT. Parmi les autres propositions, il y a : OP_TX, OP_TAPLEAFUPDATEVERIFY (TLUV), OP_EVICT, OP_CHECKSIGFROMSTACK (CSFS), OP_CAT, etc.
Pour bien comprendre le concept de covenant, je vous propose une analogie : imaginez un coffre-fort contenant 500 € en petites coupures. Si vous parvenez à déverrouiller ce coffre avec la clé adéquate, alors vous êtes libre d’utiliser cet argent comme bon vous semble. Ça, c’est la situation normale de Bitcoin. Maintenant, imaginez que ce même coffre-fort ne contient pas 500 € en billets de banque, mais plutôt des tickets restaurants d’une valeur équivalente. Si vous réussissez à ouvrir ce coffre, vous pouvez disposer de cette somme. Cependant, votre liberté de dépense est restreinte, car vous ne pouvez utiliser ces tickets pour payer que dans certains restaurants. Ainsi, il y a une première condition pour dépenser cet argent, qui est de parvenir à ouvrir le coffre avec la clé appropriée. Mais il y a aussi une condition supplémentaire quant à l’usage futur de cette somme : elle doit être dépensée exclusivement dans des restaurants partenaires, et non pas en toute liberté. Ce système de contraintes sur les transactions futures, c’est ce que l’on appelle un covenant.
En français, il n’existe aucun terme pour capturer précisément la signification du mot « covenant ». On pourrait parler de « clause », de « pacte » ou d’ « engagement », mais cela ne correspondrait pas exactement au terme « covenant ». Ce dernier est d’ailleurs emprunté d’une terminologie juridique qui permet de décrire une clause contractuelle imposant des obligations persistantes sur un bien.