OP_CHECKTEMPLATEVERIFY - 0XB3
Opcode 0xb3 proposé dans le BIP-0119, en remplacement de OP_NOP4. Il impose que la transaction de dépense corresponde exactement à un gabarit prédéfini, ce qui en fait un mécanisme de covenant non récursif.
L’opcode lit l’élément au sommet de la pile sans le retirer. Si cet élément fait 32 octets, il est comparé au DefaultCheckTemplateVerifyHash calculé à partir de la transaction courante et de l’index de l’input en cours d’exécution. Ce hash est le SHA256 de la concaténation sérialisée de : la version de la transaction, le locktime, le hash des scriptSigs (s’ils sont non vides), le nombre d’inputs, le hash des séquences, le nombre d’outputs, le hash des outputs et l’index de l’input courant. Si les deux valeurs ne correspondent pas, le script échoue. Si l’élément ne fait pas 32 octets, l’opcode se comporte comme un OP_NOP afin de permettre de futures extensions.
En contraignant la quasi-totalité des champs de la transaction de dépense, CTV permet de spécifier à l’avance les sorties exactes sans recourir à des signatures ou à des clés éphémères. Cette propriété ouvre la voie à des applications telles que les arbres de paiement pour le contrôle de congestion, les vaults, les joinpools ou l’amélioration de l’efficacité des DLC. Cette proposition est pour le moment toujours en brouillon.