You build a transaction with the To addresses, attach your UTXOs, and show whatever’s needed to unlock them. Then broadcast.

Before it’s included in a block, Bob can’t be SURE he’ll get the coins. EVERY ownership change MUST touch the chain to become immutable.

#m=image%2Fjpeg&dim=1191x670&blurhash=iADS%25P_059nmwuXn009bM%7C%7D%5EMgN%7BtQagf94mj%3BWB6%7Cl8%24LMzOai%5E%3DtxBkD00rt%2C%2CWTOGIU_4W%3DR.4TxVf%2BM%7CxBS4k%5BS6xs&x=88f9bcb0507eadb4359a919f44ced66be1f2ddf1056a5bda5e36636e8970111b

Reply to this note

Please Login to reply.

Discussion

OP_CTV, Check Template Verify, proposes a new primitive added to the family: check that the SPENDING transaction, hashed, matches one we defined.

It’s kind of like using Tx data as the key for the lock, instead of a private key. And if YOU build the address, YOU decide the terms.

#m=image%2Fjpeg&dim=1192x672&blurhash=iBBWY*8%5EM%7Bxv4ox%5E00Rk_2%3FbD%24ozt7aeoLayofR*00Ip-%3Bs%2CxZRO%7Ept74oWBV%40t7j%5BWXRj%25MRjRi%7EVemITbbkXkXD*NG-p&x=d26abb0dd8bb9c4b41f29adb2b9205c603d82bde91a0338f31f6eb22e7f2a66b

If CTV was live, Bob can make his address key be a signed but unbroadcast Tx sending to Charlie’s address. Nodes will reject any other spend as invalid.

If Bob hands that Tx to Charlie, he can SEE Bob can’t spend them differently. And pay himself out any time, without asking Bob.

#m=image%2Fjpeg&dim=1192x669&blurhash=iDD0AP%7ES4%3AI%5EMxxa%25LNL00%7EErZIWtRR%24t8t8NG9FFZcE-.rqRnNeNLVsxC00NN-Ui%5DtRNGIVjE%3Fa8%5En%23xuNHa%24nhs7ozks&x=87fb386b20b37aa79c7066ff1b00c4cb7da3de3e8e7456b81827a21a9bb9a770

If you choose to ACCEPT payment via CTV, the payer needs to pass you the Template for every step between your coins and the mined Tx.

That’s what you need to fully exit if you want. We always have to store data: private keys, channel states for LN, now spend paths for CTV.

#m=image%2Fjpeg&dim=958x670&blurhash=r5B3%24gL30A%5EN00r%2CIs4p%25g*f4ZEl%3FWIBrpOWXSxu1X.0%3D%5D9H%3Fd%25hRQxbIU00Mc%24_S%25%3FvtTxZ%25LIUbxowjYa*WTV%40oga%5EV%5D%3Fw-%3AxZRSD%24E1WFV%3Dxu&x=368e9f7ce313fab67d6af1690bbb7169708c83ee74119c9a655bbbd077538e81

We burden the chain with only 1 transaction, yet get more than 1 ownership change, or said differently: irreversible commitments.

What if Charlie did the same thing in creating HIS address, with someone HE needs to pay?

What if they did it too?

#m=image%2Fjpeg&dim=1193x669&blurhash=iDD9q%3B_09ZIvRQs8-%3BNH00%7EDnAIWozbXofxvM%7B9YAXpb-owIRkNyNIVsw%5B00WG%251s7ozR.IUjE%3FH4mxBt7NIWXs8ngozp0&x=17ba9658e51d6b21db07c5af96eff67e8f5dc2107a7d18d01d2d5da510978810

What if each layer paid many people, not just one?

We can go as deep as we can coordinate in advance.

When Alice makes that ONE payment on chain, EVERYONE in the tree is paid:

The guy before them CAN’T take coins back, and keyholders can all exit whenever they want.

#m=image%2Fjpeg&dim=1192x669&blurhash=iHEo*%2BV%3BX9E3RQxWxuR-4n%7EWR7RkozWnoft8NGD%259%5ByDxZw%5DafNLSOV%3Fs802M%7D%252aJt7R.IUsm%25MDingt7R-R*s%2CjDozkr&x=12493c317e26b3f4a521ca6b8aa397d505f8b0da47e20e9b127862271d7b90aa

Instead of each L1 Tx being one ownership change, we can plant a whole tree full of many users, all sovereign, but only using 1 UTXO of block space.

If the leaves were lightning channels, you can even be spending sats freely - only updating the tree rarely for channel closures.

#m=image%2Fjpeg&dim=1106x671&blurhash=iD9asXxaRRoyMzx%40MyW.RkD8Vvx%40V%5BoxozaxbFay%3F%5BtQV%5DkBV%5Boze%3AWBaeMhbaoMWBoxnmW-WBa_i%25btjbaykUjIX5e%3Aoe&x=e0dde6b60451a24531945c751fc8a5a8b97a9e9c19b1977e724c94b467225953

Wait: Don’t we have to mine this huge pile of Tx eventually, for everyone to REALLY get their coins?

If we collaborate, NO! We can build alternate spend paths. But that’s a whole thread.

You now understand covenants 101: commitments made *without always touching the chain*.

#m=image%2Fjpeg&dim=1118x668&blurhash=i8BzB%7D%3F%5B00DPVt9ZIA%3FH%25N%24%3AQ%3FDiNYScMyRQ%25M%25fEbti-pt8s%3Bs%3Ax%5DWCMx00DjWB%3Fb%3Fvt8spM%7BE0IURjsoxu%25MxuRjIUMx&x=63b4dcf0ac4f4e43b44c443a7fd3746da00b765dbc08b483ab0bdd78446f32c7

This is awesome! Thank you!

I wish I had more visibility on nostr. I get pretty much nothing on here when I post content

Can you consolidate into one long note next time? Nostr doesn't have arbitrary character limits like Xitter.

Nostr is a lot smaller than twitter. It is more focused on bitcoin, though. I think there is good potential to educate plebs on here. Thank you for migrating these threads. I have wanted to dig into how CTV enables these higher level constructs. 🙂 👍

man, same

zero interaction whatsoever on my occasional development posts. I get that it's technical, but isn't most of nostr?

followed

Being a reply guy seems to be a decent way to get followers. It worked today! Otherwise, I think, just post consistently and be patient. Nostr is very small still and there's no algorithm to game so you shouldn't expect the same engagement numbers as other networks.

A ton of good info here. I've only heard about CTV argued about by folks way above my technical understanding (for what seems like a really long time now) but haven't seen so neat and logically put together. Will study further & ask questions, seems worthy of a full length article imo