In Mel's data model, every coin/UTXO is locked by a covenant, or a program that constrains what sort of transaction can spend it. Common covenants include:

  • Checking that a transaction is signed by a particular public key

  • Checking that a transaction is signed by some subset of keys (a multisig covenant)

  • Encoding arbitrary stateful logic using self-propagating covenants

On the blockchain level, covenants are written in the low-level MelVM language, but in practice covenants are programmed using the high-level Melodeon language. More info on specific programming patterns can be found in the Melodeon guide.

Last updated