Posted by salvatoshi
Mar 17, 2025/12:29 UTC
The work on formalizing the semantics of OP_CHECKCONTRACTVERIFY
(OP_CCV
) has led to the drafting of a Bitcoin Improvement Proposal (BIP) and an implementation draft for bitcoin-core, highlighting the opcode's potential to enable state-carrying Unspent Transaction Outputs (UTXOs). This innovation allows UTXOs to carry data, rules, and a specified amount of coins, which can be introspected and modified upon spending. The OP_CCV
opcode supports Pay-to-Taproot (P2TR) inputs and outputs, facilitating the comparison of public keys through various forms of tweaking. This process enables the commitment of additional arbitrary data within a public key, providing a method to introspect embedded data in the current input or enforce specific program and data values in the output.
One of the core advantages of OP_CCV
includes its full compatibility with taproot, allowing for efficient keypath spending without imposing extra computational burdens on nodes. It maintains a logical separation between the program (the taptree) and the data, ensuring that accessing embedded data does not incur additional witness byte costs unless required. However, it is important to note that OP_CCV
is only compatible with P2TR and that tweaking operations are computationally intensive compared to other approaches.
The opcode also introduces a novel approach to handling transaction amounts, offering three options: assigning the entire unassigned amount from the current input to the output, deducting a specified portion from the current input's amount to assign to the output, or ignoring the output's amount during script checking. This flexibility in specifying amount flows enhances the ergonomic design of scripts, accommodating a wide range of transaction designs including 1-to-1 transfers, many-to-1 aggregations, and partial amount transactions.
Despite suggestions to separate script introspection from amount logic, integrating both aspects provides a cohesive and efficient mechanism for validating transactions. This integration covers most practical scenarios for amount checks in transactions, potentially extending to direct equality checks on output amounts with future opcodes. The implementation of OP_CCV
alongside OP_CAT
, OP_PAIRCOMMIT
, or hypothetical opcodes like OP_VECTORCOMMIT
could further enrich the scripting capabilities within Bitcoin, supporting complex contract designs such as fully featured vaults.
In conclusion, the development and discussion around OP_CHECKCONTRACTVERIFY
underscore its significance in advancing Bitcoin's scripting language, offering both theoretical insights and practical applications. The community's feedback on the specifications, implementation, and potential use cases will be crucial in refining this proposal and exploring its full potential within the ecosystem.
TLDR
We’ll email you summaries of the latest discussions from authoritative bitcoin sources, like bitcoin-dev, lightning-dev, and Delving Bitcoin.
We'd love to hear your feedback on this project?
Give Feedback