Covenant All The Things


CATT is a proposal to collectively enable a set of independently specified opcodes that together enable a very wide range of use cases. The idea is to provide very raw and simple building blocks that can be used by developers to build use cases instead of focussing on use case-specific opcodes.

The different parts of CATT are the following:

  • OP_TXHASH (and OP_CHECKTXHASHVERIFY), as described here
  • OP_CAT, an opcode to concatenate stack items that formerly existed on Bitcoin but hash been disabled
    • or alternatively an opcode to calculate the SHA-256 hash of concatenated data, called OP_SHA256CAT by Salvatore or OP_MULTISHA256 by Rusty
  • OP_CHECKSIGFROMSTACK, an opcode to check signatures for arbitrary messages, that is currently active on Elements
  • an opcode to tweak a public key with a scalar, like either
    • OP_TWEAKVERIFY like active in Elements
    • OP_TWEAK, a non-VERIFY version of the above (alternatively named OP_KEYADDTWEAK by Rusty)

An extended version of CATT can additionally include the following:

  • OP_TX, enabling generalized direct introspection
  • 64-bit arithmetic opcodes


The individual pieces of this transaction are specified in different BIPs:

Edit this page on GitHub