Glossaire / Protocole et mises à jour
Covenant
- Qu'est-ce qu'un covenant ?
- Un covenant est une règle de dépense qui limite la destination possible du bitcoin, et pas seulement qui peut le déplacer, et aucun opcode de Bitcoin Script ne peut en imposer un aujourd'hui.
Chaque script de la chaîne répond à une question : cette dépense est-elle autorisée ? Un covenant permettrait au script de poser une seconde question sur la transaction qui le dépense, et les propositions visant à l'autoriser (BIP-119, BIP-118, BIP-345, BIP-347) restent toutes inactivées depuis des années. Rien de ce que vous détenez aujourd'hui n'est affecté, mais les produits de coffre-fort et de transmission successorale que les gens demandent sans cesse attendent cela.
Comment cela fonctionne
Statut : aucun opcode de covenant n'est actif sur le réseau principal de Bitcoin. Chaque conception ci-dessous est une proposition, et aucune n'a de paramètres d'activation fusionnés dans Bitcoin Core.
La capacité manquante a un nom précis : l'introspection. Quand un nœud exécute un script, le script peut examiner les signatures, les hachages, les verrous temporels et la pile, mais il ne peut pas lire les sorties de la transaction qui dépense le bitcoin. Ce seul angle mort explique pourquoi le bitcoin peut exprimer « deux de ces trois personnes doivent être d'accord » et ne peut pas exprimer « cet argent ne peut aller qu'à cette adresse ».
Les propositions comblent cet écart de deux manières différentes, et la différence entre elles est le cœur du débat.
L'approche par modèle engage à l'avance un hachage de toute la transaction de dépense. OP_CHECKTEMPLATEVERIFY fonctionne ainsi : la sortie contient un hachage de 32 octets, et la dépense échoue sauf si la transaction produit le même hachage. Elle est étroite, elle est peu coûteuse à vérifier, et comme l'engagement ne peut pas décrire un autre engagement, la restriction ne peut pas se répéter indéfiniment.
L'approche par introspection donne au script les éléments et le laisse faire de l'arithmétique. Combiner OP_CAT avec une vérification de signature, ou ajouter OP_CHECKSIGFROMSTACK, permet à un script de reconstruire le hachage de signature de la transaction à partir d'éléments de la pile et de le vérifier, après quoi le script peut exiger tout ce qu'il veut sur les sorties. C'est général, et c'est récursif : un covenant peut exiger que la sortie suivante porte le même covenant.
La récursivité est l'objection qui a tout ralenti. Des bitcoins enfermés dans une règle auto-perpétuée pourraient en principe rester grevés pour toujours, ce qui soulève des questions de fongibilité et sur les émetteurs qui pourraient imposer la règle. L'argument inverse est qu'un groupe de personnes peut déjà imiter un covenant en pré-signant la seule dépense autorisée et en détruisant la clé, donc la capacité existe en pratique et l'application par le consensus supprime surtout le besoin de croire que la clé a réellement été détruite.
Où vous le voyez
Les covenants sont déjà déployés sur des chaînes qui copient le moteur de script du bitcoin, ce qui est la façon la moins coûteuse de voir ce qu'ils font.
Liquid, la chaîne latérale basée sur Elements, exécute un tapscript avec des opcodes d'introspection qui lisent directement les sorties de la transaction de dépense, et sa fédération les utilise pour son ancrage. Chacun peut aussi tester les opcodes bitcoin proposés sur des signets personnalisés avant de décider s'il les souhaite sur le réseau principal.
Sur le réseau principal, le substitut est une transaction pré-signée avec une clé supprimée. Un fournisseur de coffre-fort génère la clé de dépôt, signe le seul retrait qu'il autorisera jamais, puis détruit la clé pour qu'aucune autre dépense ne puisse être créée. C'est un covenant appliqué par une promesse plutôt que par le réseau, et la promesse est exactement ce qu'un véritable opcode de covenant rendrait inutile. Bon à savoir si un service vous vend un coffre-fort : demandez lequel des deux c'est.
Covenant vs contrat d'entiercement
Un covenant restreint la destination ; un contrat d'entiercement restreint les signataires. Ils résolvent deux moitiés différentes de la même inquiétude et un seul des deux est disponible.
Un contrat d'entiercement est un multisig ordinaire avec un tiers dans le quorum, généralement deux sur trois, et il fonctionne sur bitcoin aujourd'hui : une place de marché détient une clé, et l'acheteur et le vendeur peuvent régler sans elle ou l'appeler pour trancher un litige. Ce que l'entiercement ne peut pas faire, c'est contraindre le résultat. Dès qu'un quorum de dépense se forme, les bitcoins peuvent aller n'importe où, y compris à l'arbitre. Un covenant fixerait la destination à l'avance et retirerait entièrement la discrétion de l'arbitre de la conception.