CTV Playground

Locking Transaction

Describe the future outputs you wish your transaction to commit to. They should take the form:

address1:1.2btc
address2:4323sats

You can use any combination of addresses and amounts (in sats or BTC) that you like. After you lock the Bitcoin into these outputs, you will NOT be able to send your Bitcoin anywhere else.

Regarding Fees

Fees are calculated very simply, by deducting 600 sats from every monetary output. So an output of 1000 sats will actually be mined with 400 sat. A production scheme would certainly have a more flexible fee structure.

Regarding OP_RETURN

OP_RETURN outputs are possible by appending another value to the end of an output below, like so:

bcrt1address:5btc:hello world

In this example above, an OP_RETURN with "hello world" is inserted right after the output. Note that in a simple CTV transaction, multiple OP_RETURN values are non-standard and will not be broadcast. However, in a congestion control tree each output will be in its own transaction and thus they will be considered standard.

Congestion Control

If you check Congestion Control under additional options, it will cause your outputs to be setup as a Congestion Control tree instead of a single spend. What this means is that the outputs will be unfurled in stages over multiple transactions. With the first spend transaction, the first address and another CTV commitment will be the outputs. A second transaction will spend that CTV to the second address and yet another CTV, etc., until all of the addresses are spent on-chain.

Additional Options
Implement the above outputs as a multi-transaction congestion control tree instead of a single spend
Use a taproot output instead of Segwit v0 (the default).