> For the complete documentation index, see [llms.txt](https://docs.melproject.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.melproject.org/concepts/covenants.md).

# Covenants

In Mel's [data model](/concepts/data-model.md), 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](/resources/melvm-spec.md) language, but in practice covenants are programmed using the high-level [Melodeon](https://melodeonlang.org/) language. More info on specific programming patterns can be found in the [Melodeon guide](https://guide.melodeonlang.org/).
