Bitcoin Covenants: Txhash et CheckTxHashverify (BIP 346)

Ceci est le troisième article d’un série Une plongée profonde dans les propositions individuelles de l’alliance qui ont atteint un point de maturité méritant une ventilation approfondie.

Txhash et CheckTxHashVerify (TXHASH), mis en avant par Steven Roose et Brandon Black avec un numéro BIP actuellement non assisté, est une alliance «basée sur un modèle» qui peut conceptuellement considérée comme une extension ou une version plus avancée de CheckTempAvestriefy (CTV).

Avant d’entrer dans le Nitty Gritty de le fonctionnement de Txhash, actualisons les données dans une transaction Bitcoin.

À un niveau élevé, vous avez les sorties, les entrées et le témoin (ou le script SIG pour les transactions non-segwit dans l’entrée).

Champs de transaction mondiaux:

  • Version
  • Marqueur, indiquant segwit avec une valeur de drapeau
  • Drapeau, indiquant segwit avec une valeur de drapeau
  • Comptage des entrées
  • Nombre de sorties
  • nlocktime, utilisé pour les timelocks

Chaque entrée contient:

  • TXID de la transaction précédente
  • Vout (index) de la sortie de cette transaction dépensée
  • Taille de scriptsg
  • Scriptsig (si une transaction non-segwit)
  • Numéro de séquence (utilisé pour les blindages RBF et les timelocks relatifs).

Chaque sortie contient:

  • Quantité de satoshis attribuée à la sortie
  • Scriptpubkeysize, la taille du script de verrouillage
  • Scriptpubkey, le script de verrouillage réel

Nous pouvons ignorer le champ des témoins lorsque l’on considère TxHash ou CheckTxHashverify car aucun Opcode ne limite le champ des témoins pour conserver certaines propriétés.

Comment fonctionne Txhash

TXHASH (TAPScript uniquement) et CheckTxHashVerify (Héritage Script et Tapscript) ont des comportements différents sur la pile en raison des différences entre le script hérité et Tapscript. Aux fins de cet article, ces différences ne sont pas matérielles, nous allons donc simplement les ignorer.

Si CTV est un Opcode d’alliance qui contraint une sortie Bitcoin à être dépensée uniquement de manière singulière et exactement définie, Txhash est une version suralimentée de CTV qui vous permet de choisir exactement les pièces d’une transaction qui sont contraints et doivent être dépensées de la manière exactement prédéfinie, et quelles pièces d’une transaction peuvent être que quelqu’un veut à l’épreuve.

Il vous donne le meilleur des deux mondes, ce qui nécessite quelque chose lorsqu’il passe une pièce de monnaie restreinte, mais permettant ensuite à un utilisateur de faire ce qu’ils veulent avec le reste des fonds à leur disposition ou la transaction qu’il compreint.

Ceci est accompli en utilisant le «txFielDelector».

CTV utilise simplement un seul hachage de la transaction prédéfinie afin de vérifier le temps de passer. Avec TXHASH, vous avez besoin d’un moyen de communiquer les informations à laquelle Hash s’engage et quelles informations il n’est pas. C’est le travail du TxFieldDelector.

TxFielDelector est essentiellement une série d’octets (qui peuvent être en longueur variable), chaque bit communiquant à quels champs d’une transaction sont engagés par le hachage qui sera vérifié contre. Cela vous permet de sélectionner des champs spécifiques de la transaction, Nlocktime, Version, etc. Il vous permet de sélectionner des champs spécifiques des entrées et des sorties, c’est-à-dire inclure ou non le numéro de séquence, ou l’ID de sortie précédente, ou l’annexe de tapoot (un champ de données spécifique aux scripts de tapoot). Les sorties, que ce soit pour s’engager sur ScriptPubKey, les valeurs du montant, les deux ou les deux. Vous pouvez également décider exactement à quelles sorties et entrées auxquelles ces restrictions s’appliquent.

Il y a une certaine complexité et flexibilité dans la façon dont le txFielDelector est assemblé, et vous pouvez lire tous les détails les plus fins ici dans le BIP proposé si vous êtes intéressé par ceux exactement Quelles parties de la transaction sont limitées par l’alliance lorsque quelqu’un va dépenser la sortie encombrée, et quelles pièces ne sont pas, à un degré très granulaire.

Qu’est-ce que Txhash est utile pour

Premièrement, Txhash vous permet de faire tout ce que vous pouvez avec CTV. Ainsi, toute la valeur fournie par CTV pour optimiser les coûts de coordination de tout ce qui est actuellement possible avec les transactions pré-signées est également fournie par TXHASH. Mais il suralimente cette capacité massivement. Au lieu d’avoir à vous engager dans l’intégralité d’une transaction, vous pouvez vous engager uniquement sur les parties qui vous tiennent à cœur.

Cela a deux grands avantages en théorie dès le départ. Tout d’abord, dans la gestion des frais de bande pour les couches, les deux deviennent plus faciles à gérer. Actuellement, l’utilisation des sorties d’ancrage est requise pour les transactions de règlement à frais de toxicomanie deux avec l’enfant paie pour Parent, où une transaction dépensant une sortie d’un non confirmé peut ajouter aux frais nets pour les deux. TXHASH vous permet de vous engager uniquement sur les résultats de vos contreparties dans une transaction multipartite, et laisse le vôtre libre pour faire ce que vous voulez (mise en garde ici que d’autres choses doivent être faites pour rendre cette sécurité afin qu’un tiers ne puisse pas brûler tous vos fonds aux frais), y compris la diminution légèrement à RBF la transaction.

Deuxièmement, la porte est désormais ouverte aux protocoles multipartites pour permettre des garanties granulaires sur ce à quoi les transactions hors chaîne s’engagent. Certains utilisateurs peuvent désormais recevoir une garantie sur la façon dont leurs pièces seront dépensées, mais ne pas se soucier de ce que certains autres groupes d’utilisateurs font avec le leur. Je peux être sûr qu’un TXFieldDelector garantit que mes pièces sont gérées correctement, et je n’ai pas à me soucier de l’endroit où vont les pièces de quelqu’un d’autre.

En combinaison avec CheckssigFromstack (CSFS), TXHASH peut faciliter un système de Sighash complètement généralisé. Le drapeau Sighash fait partie d’une signature qui communique les parties de la transaction contre lesquelles vérifier la signature. Ils sont actuellement:

  • Sighash_ALL – Signe toutes les entrées et sorties
  • Sighash_none – Signe toutes les entrées et aucune sortie
  • Sighash_Single – Signe toutes les entrées et la sortie avec le même index que cette entrée

Aucun de ces drapeaux Sighash ne permet d’ajouter de nouvelles entrées à une transaction sans les invalider, mais chacune a une version AnyonECanPay qui ne signe que ses propres entrées et les sorties appropriées, permettant à quiconque d’autre d’ajouter de nouvelles entrées et de nouvelles sorties pour la version anyonEcanPay de Sighash_None et Sighash_Single.

En étant capable de «relancer» de nouveaux txFieldSelectors à l’aide de CSF, les utilisateurs peuvent imiter un système Sighash qui leur permet de choisir exactement les éléments individuels d’une transaction que la signature commet ou non.

TXHASH permet également d’appliquer l’égalité entre la valeur des entrées et des sorties en utilisant des txFieldDelectors individuels qui s’engagent uniquement dans un champ de valeur unique d’une entrée ou d’une sortie que vous souhaitez inspecter, puis de s’assurer que leurs hachages sont les mêmes sur la pile.

Réflexions de clôture

Txhash est un suralimentation potentielle de CTV, permettant un degré incroyablement granulaire d’introspection de la transaction de dépenses qui peut être incroyablement puissant, en particulier en combinaison avec quelque chose comme les CSF.

Cependant, cette puissance est suffisamment expressive pour ouvrir la porte à un espace de conception incroyablement grand. Celui qui pourrait potentiellement avoir un effet matériel sur les incitations globales du bitcoin. Des choses comme assurer l’égalité du montant entre les sorties ou les entrées se rapprochent très près du territoire de ce qui est nécessaire pour l’échange automatisé sans confiance en chaîne. Il s’agit d’une série sérieuse de valeur extractible de mineurs (MEV), qui a été un problème d’incitation et de centralisation très grave pour que d’autres blockchains puissent faire face.

Txhash ne devrait absolument pas être rejeté, car il fournit des primitives incroyablement puissantes pour que les développeurs de protocoles puissent en profiter, les implications potentielles de l’ordre du second ordre de ce que les gens vont construire avec lui devraient être pesées contre les positifs.

Laisser un commentaire