CATT
Covenant All The Things
Introduction
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
(andOP_CHECKTXHASHVERIFY
), as described hereOP_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 orOP_MULTISHA256
by Rusty
- or alternatively an opcode to calculate the SHA-256 hash of concatenated data, called
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 ElementsOP_TWEAK
, a non-VERIFY version of the above (alternatively namedOP_KEYADDTWEAK
by Rusty)
An extended version of CATT can additionally include the following:
OP_TX
, enabling generalized direct introspection- 64-bit arithmetic opcodes
Specification
The individual pieces of this transaction are specified in different BIPs:
OP_TXHASH
: draft BIPOP_CAT
: draft BIPOP_CHECKSIGFROMSTACK
: no BIP yet, but already implemented and active in ElementsOP_TWEAKVERIFY
: no BIP yet, but already implemented and active in Elements- 64-bit arithmetic: proposed by Rusty