To spend bitcoins, the owner of the coins has to present an input that satisfies a predicate which matches the funds he/she is attempting to spend. This predicate is coded using a special programming language known as “Script“. Typically, a predicate requires a special digital signature that is determined by the public key fixed by the programmed script. However, construction of more complex predicates is possible.

Predicates function via restriction of who is authorized to spend the coins. Recently, new extensions to the “Script” language, e.g. CHECKSEQUENCEVERIFY, give predicates the capability to restrict the time at which a transaction is authorized. Nevertheless, predicates cannot choose which transactions are authorized, so if a user is authorized to spend bitcoins, he/she can send the coins to any address they wish.

What Are Bitcoin Covenants?

Covenants are however, capable of limiting how bitcoins might be spent, including locking how much should be spent and to which addresses. Covenants are special forms of bitcoin scripts that act via restricting how coins are to be spent. Covenants can occasionally be recursive via requiring coins to be spent to output addresses linked to the same covenant. Covenants’ scripts permit the storage and update of state, which enables one to create smart contracts that can execute a state machine via a chain of transactions.

Theoretically, it is almost impossible to utilize covenants across the bitcoin network, given the fact that the “Script” language does not include operations that permit reading of trasnsactions’ data. The sole possible way to interact with transactions’ data is via using CHECKSIG which acts to verify digital signatures used to sign messages created using transactions’ data. Accordingly, many blockchain developers have suggested extending the “Script” language to be able to support covenants via incorporating new operations to make it possible to interact in a direct manner with transactions’ data.

A recently published paper introduced an innovative approach to this problem. The paper introduced a novel way to deploy covenants across the bitcoin network via merely adding a new group of computational operations that do not access transactions’ data. Alternatively, the researchers leveraged the current CHECKSIG operation to retrieve the signed message which is built using transactions’ data. As such, it is simple to add conditions that can restrict which portion of transactions’ data is acceptable for a user’s given covenant.

The authors of the paper built on the approach presented in M¨oser’s work “Bitcoin Covenants”, which was presented in 2016’s International Conference of Financial Cryptograpny and Data Security to deploy vault transactions via “Elements Alpha”, which is a bitcoin sidechain that includes the required extensions to “Script”.

Conclusion:

Covenants are bitcoin Script pieces of code that restrict spending of funds. A newly published paper presented an innovative implementation using the new CHECKSIGFROMSTACK operation that validates a message’s signature which is passed as an argument. This new approach to covenants can open the door to new functionalities that can enhance bitcoin’s transactions.