Live prices are currently unavailable — the exchange feed could not be reached and no recent cached reading is held.

Emerging Technology

Covenants

A covenant is a spending condition that restricts not just who can spend an output but how they may spend it. Bitcoin's current script can express the first and only weakly the second. A family of proposals would change that, and none of them is deployed.

Last reviewed 2026-09-21Source: Bitcoin Optech covenant proposal overview; BIP 341 (Taproot)Covenants are proposals. None is deployed, and no adoption or timeline is asserted.

A proposal, not a deployed feature

Covenants are a family of proposals rather than a single one, and none of them has been adopted as a consensus change. They are not part of Bitcoin Core, there is no protocol-level support for them, and any description of what they would enable is a description of a design rather than of something a user can rely on. The pages here treat them accordingly.

The proposals differ in mechanism and in scope. Some would add a new opcode that inspects the spending transaction; others would restrict the set of scripts an output can be spent into. The common thread is that they would let a script make a statement about the future rather than only about the present, which is the capability Bitcoin's current script deliberately lacks.

The reason the capability is absent is worth stating. Bitcoin's script is intentionally limited, and the limits are part of what makes the system analysable. A covenant adds expressive power, and expressive power is exactly what the design has historically been cautious about. The debate is not about whether the proposals work but about whether the capability is worth the change.

What they would enable

The most discussed application is a vault. A vault is an output that can only be spent to a predetermined destination, or only after a delay, or only through a two-stage process that gives the owner time to react to a theft. A covenant makes the restriction enforceable by the script rather than by a policy the wallet is trusted to follow, which is a meaningful difference for a holder worried about key compromise.

A second application is congestion control. A covenant could commit an output to being spent in a particular way at a particular time, which would allow a group of users to coordinate their transactions without a central coordinator. The idea is that a covenant can encode a schedule that the participants agree to in advance, removing the need to trust whoever runs the coordination.

A third is the construction of more capable payment channels. Several of the proposals would make it possible to build channel designs that are simpler or more flexible than what is available today, which is the same motivation behind the SIGHASH_ANYPREVOUT proposal. The two are often discussed together because they address related limitations.

The debate

The argument in favour is that the capability is useful and that the proposals have been reviewed carefully. Vaults address a real problem, congestion control addresses a real problem, and the constructions are designed to be opt-in: a user who does not want a covenant simply does not create one. On this view the change is additive and the risk is manageable.

The argument against is that a covenant changes what an output can be, and that the change is not as contained as it appears. A covenant that restricts how coins can be spent can also be used to restrict them in ways the creator did not intend, and the composability of the new opcodes with existing script is hard to reason about in full. The concern is not that a specific attack is known but that the surface area grows.

There is also a disagreement about urgency. One position holds that the proposals should be adopted once they are well understood; another holds that the burden of proof for a consensus change is high and that the absence of a compelling need is itself a reason to wait. Both positions are represented in the public discussion, and the page presents them rather than resolving them.

What is implemented, and what is not

What is specified is a family of proposals rather than a single change. Each one sets out an opcode or a restriction, the scripts it would apply to, and the validation rules that would enforce it. The specifications are complete enough to implement, and reference implementations and test vectors have been produced in the proposal process.

What is implemented is limited to that proposal work. No covenant opcode is active on the Bitcoin network, none is part of Bitcoin Core's consensus rules, and no node enforces one. A transaction relying on a covenant would be rejected today. The vault, congestion-control and channel constructions described above likewise cannot be deployed on the main chain without the consensus change.

What is not deployed is therefore everything that depends on the capability: covenant-enforced vaults, covenant-based congestion control, and the more capable channel designs. The proposals carry Draft status or remain discussion documents, and the page presents them as such rather than implying a timeline. A reader should treat every capability described here as proposed, not available.

Sources and references

The description of the proposals and the debate around them is taken from the proposals themselves and the public discussion. Covenants are presented here as proposals; no deployment, adoption or incident is asserted.

  • The covenant proposal overview. Bitcoin Optech, Covenants: collects the proposals, their mechanisms and their current status in the proposal process.
  • The vault construction. Bitcoin, BIP 341: Taproot: defines the script-tree structure that a covenant-based vault would build on.
  • The script limits a covenant would change. Bitcoin, Bitcoin Developer Guide — Transactions: describes the spending conditions Bitcoin's script can express today.