> For the complete documentation index, see [llms.txt](https://cvnnt.gitbook.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cvnnt.gitbook.io/documentation/system-architecture/smart-contracts/covenants-covenant-programs.md).

# Covenants (covenant programs)

{% hint style="info" %}
Note: This section is currently under development.
{% endhint %}

Covenants (covenant smart contract programs) are self-executing onchain multiparty-signed programs that can operate both on UTXO level and abstraction (EVM) level.

Covenants handle all asset management operations on Covenant system, including cross-chain ones.&#x20;

Covenant is a smart contract program on Covenant, containing multiparty-signed clearly defined instructions and certain conditions on its underlying channeled asset outputs.

Covenants provide users with the ability to operate and rearrange (sell, buy, loan etc.) their UTXO output ownership in a trustless manner. The underlying BTC asset remains untouched in a self-custody multi-party-signed Bitcoin layer-based address until a particular UTXO output needs to be released (transferred) on Bitcoin Layer 1.

Covenants provide trustless, decentralized, deterministic and self-custody way for users to perform complex BitcoinDeFi operations.<br>

Types of covenants:<br>

* Plain covenant is a covenant created directly upon an asset.&#x20;
* Layered covenant is a covenant created upon another covenant.
* Fixed covenant is a user-defined covenant program with constant conditions or restrictions on how a Bitcoin transaction can be spent.
* Smart covenant is a user-defined covenant program with constant and smart contract-dependent variable conditions or restrictions on how a Bitcoin transaction can be spent.
