This is an implementation of BIP-119 OP_CHECKTEMPLATEVERIFY. It has been rebased on top of Taproot / ST. The specification has been otherwise unrevised since publication nearly a year and half ago.
Minus tests and deployment, it’s about 180 LOC.
This branch activates against regtest so you can test on your local node.
This PR includes standardness rules for a bare single CTV Hash script, which has applications for congestion control. Other than that there is limited support for bare scripts using CTV, although the patches to #16766 lay the groundwork for better wallet support with proper IsTrusted parents scanning, which can be amended later to handle chains of irrefutable transactions.
You can learn more about the design of BIP-119 at https://utxos.org/. In particular I recommend the workshop transcript and slides https://utxos.org/workshops/ for a thorough review of how CTV works.
You can stress test CTV for complex examples by trying out the Sapio compiler: learn.sapio-lang.org. There is also some support for CTV in miniscript via the Sapio Rust Miniscript Fork.
Discussion welcome at ##ctv-bip-review in Libera.
If you would like to connect to a signet, I operate one you can connect to with the parameters below.
0[signet]
1signetchallenge=512102946e8ba8eca597194e7ed90377d9bbebc5d17a9609ab3e35e706612ee882759351ae
2addnode=50.18.75.225
You may also wish to have the below parameters for things to work nicely:
0server = 1
1txindex=1
2rpcport=18332
3rpcworkqueue=1000
4fallbackfee=0.0002
5minrelaytxfee=0