<oembed><type>rich</type><version>1.0</version><author_name>npub17rld56k4365lfphyd8u8kwuejey5xcazdxptserx03wc4jc9g24stx9l2h</author_name><author_url>https://nostr.ae/npub17rld56k4365lfphyd8u8kwuejey5xcazdxptserx03wc4jc9g24stx9l2h</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2022-04-21&#xA;📝 Original message:On Thu, Apr 21, 2022 at 10:05:20AM -0500, Jeremy Rubin via bitcoin-dev wrote:&#xA;&gt; I can probably make some show up sometime soon. Note that James&#39; vault uses&#xA;&gt; one at the top-level https://github.com/jamesob/simple-ctv-vault, but I&#xA;&gt; think the second use of it (since it&#39;s not segwit wrapped) wouldn&#39;t be&#xA;&gt; broadcastable since it&#39;s nonstandard.&#xA;&#xA;The whole point of testing is so that bugs like &#34;wouldn&#39;t be broadcastable&#xA;since it&#39;s nonstandard&#34; get fixed. If these things are still in the&#xA;&#34;interesting thought experiment&#34; stage, but nobody but Jeremy is&#xA;interested enough to start making them consistent with the proposed&#xA;consensus and policy rules, it seems very premature to be changing&#xA;consensus or policy rules.&#xA;&#xA;&gt; One case where you actually use less space is if you have a few different&#xA;&gt; sets of customers at N different fee priority level. Then, you might need&#xA;&gt; to have N independent batches, or risk overpaying against the customer&#39;s&#xA;&gt; priority level. Imagine I have 100 tier 1 customers and 1000 tier 2&#xA;&gt; customers. If I batcher tier 1 with tier 2, to provide tier 1 guarantees&#xA;&gt; I&#39;d need to pay tier 1 rate for 10x the customers. With CTV, I can combine&#xA;&gt; my batch into a root and N batch outputs. This eliminates the need for&#xA;&gt; inputs, signatures, change outputs, etc per batch, and can be slightly&#xA;&gt; smaller. Since the marginal benefit on that is still pretty small, having&#xA;&gt; bare CTV improves the margin of byte wise saving.&#xA;&#xA;Bare CTV only saves bytes when *spending* -- but this is when you&#39;re&#xA;creating the 1100 outputs, so an extra 34 or 67 bytes of witness data&#xA;seems fairly immaterial (0.05% extra vbytes?). It doesn&#39;t make the small&#xA;commitment tx any smaller.&#xA;&#xA;ie, scriptPubKey looks like:&#xA; - bare ctv: [push][32 bytes][op_nop4]&#xA; - p2wsh: [op_0][push][32 bytes]&#xA; - p2tr: [op_1][push][32 bytes]&#xA;&#xA;while witness data looks like:&#xA; - bare ctv: empty scriptSig, no witness&#xA; - pw2sh: empty scriptSig, witness = &#34;[push][32 bytes][op_nop4]&#34;&#xA; - p2tr: empty scriptSig, witness = 33B control block,&#xA;         &#34;[push][32 bytes][op_nop4]&#34;&#xA;&#xA;You might get more a benefit from bare ctv if you don&#39;t pay all 1100&#xA;outputs in a single tx when fees go lower; but if so, you&#39;re also wasting&#xA;quite a bit more block space in that case due to the intermediate&#xA;transactions you&#39;re introducing, which makes it seem unlikely that&#xA;you care about the extra 9 or 17 vbytes bare CTV would save you per&#xA;intermediate tx...&#xA;&#xA;I admit that I am inclined towards micro-optimising things to save&#xA;those bytes if it&#39;s easy, which does incline me towards bare CTV; but&#xA;the closest thing we have to real user data suggests that nobody&#39;s going&#xA;to benefit from that possibility anyway.&#xA;&#xA;&gt; Even if we got rid of bare ctv, segwit v0 CTV would still exist, so we&#xA;&gt; couldn&#39;t use OP_SUCCESSx there either. segwitv0 might be desired if someone&#xA;&gt; has e.g. hardware modules or MPC Threshold Crypto that only support ECDSA&#xA;&gt; signatures, but still want CTV.&#xA;&#xA;If you desire new features, then you might have to upgrade old hardware&#xA;that can&#39;t support them.&#xA;&#xA;Otherwise that would be an argument to never use OP_SUCCESSx: someone&#xA;might want to use whatever new feature we might imagine on hardware that&#xA;only supports ECDSA signatures.&#xA;&#xA;Cheers,&#xA;aj</html></oembed>