Jeremy Rubin proposes OP_CHECKTEMPLATEVERIFY (CTV) to enable covenants
Developer Jeremy Rubin publishes a technical proposal for a new opcode, OP_CHECKTEMPLATEVERIFY (CTV), to enable covenant-like transaction templates.
On April 26, 2019, Bitcoin developer Jeremy Rubin published a formal proposal for a new opcode, "OP_CHECKTEMPLATEVERIFY" (commonly abbreviated CTV), on GitHub and discussed it on the Bitcoin-Dev mailing list. Rubin framed CTV as a covenants-style primitive that enables transactions to commit to a spending template: a script can enforce that future spends must match a pre-specified transaction structure.
He argued this would simplify secure vault constructions, enable more efficient batch spending, and improve custody-safe workflows by allowing pre-authorized spending paths without trusting third parties. The proposal included reference code and a technical rationale describing how CTV differs from existing script capabilities and how it could reduce on-chain bloat for certain multisig or payment-channel patterns.
The announcement sparked vigorous debate across the Bitcoin developer community — on GitHub threads, the Bitcoin-Dev mailing list, and Twitter — with supporters noting potential security and UX benefits and skeptics raising concerns about long-term policy and centralization risks.The discussion continued through developer meetings and drew responses from node implementers and wallet maintainers evaluating the tradeoffs of adding new primitives to the Bitcoin scripting system.