Aller au contenu
buybitcoinsmart

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.

À ne pas confondre avec

Questions fréquentes

Puis-je utiliser un covenant sur bitcoin aujourd'hui ?

Non. Aucun opcode de covenant n'est actif sur le réseau principal. Les produits qui annoncent un comportement de coffre-fort aujourd'hui reposent sur des transactions pré-signées et une clé supprimée, ce qui est une promesse plutôt qu'une règle appliquée par le réseau.

Pourquoi les covenants sont-ils controversés ?

Parce que les versions générales sont récursives, ce qui signifie qu'un bitcoin pourrait porter une restriction qui se rattache à chaque dépense future. Les critiques s'inquiètent des bitcoins grevés de façon permanente ; les partisans font remarquer que les transactions pré-signées imitent déjà cet effet.

À lire ensuite

Termes associés

Plus de termes : Protocole et mises à jour

Lire cette page en anglais