<oembed><type>rich</type><version>1.0</version><author_name>npub1e46n428mcyfwznl7nlsf6d3s7rhlwm9x3cmkuqzt3emmdpadmkaqqjxmcu</author_name><author_url>https://nostr.ae/npub1e46n428mcyfwznl7nlsf6d3s7rhlwm9x3cmkuqzt3emmdpadmkaqqjxmcu</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2019-03-08&#xA;📝 Original message:Replies inline.&#xA;&#xA;On 3/8/19 3:57 PM, Russell O&#39;Connor wrote:&#xA;&gt; On Thu, Mar 7, 2019 at 2:50 PM Matt Corallo &lt;lf-lists at mattcorallo.com &#xA;&gt; &lt;mailto:lf-lists at mattcorallo.com&gt;&gt; wrote:&#xA;&gt; It&#39;s very easy to construct a practical script using OP_CODESEPARATOR.&#xA;&gt; &#xA;&gt; IF &lt;2&gt; &lt;ALICEPUBKEY&gt; &lt;BOBPUBKEY&gt; &lt;2&gt; CHECKMULTISIGVERIFY ELSE &#xA;&gt; CODESEPARATOR &lt;ALICEPUBKEY&gt; CHECKSIGVERFY ENDIF&#xA;&gt; &#xA;&gt; Now when someone hands Alice, the CFO of XYZ corp., some transaction, &#xA;&gt; she has the option of either signing it unilaterally herself, or &#xA;&gt; creating a partial signature such that the transaction additionally &#xA;&gt; needs Bob, the CEOs signature as well, and Alice&#39;s choice is committed &#xA;&gt; to the blockchain for auditing purposes later.&#xA;&gt; &#xA;&gt; Now, there are many things you might object about this scheme, but my &#xA;&gt; point is that (A) regardless of what you think about this scheme, it, or &#xA;&gt; similar schemes, may have been devised by users, and (B) users may have &#xA;&gt; already committed funds to such schemes, and due to P2SH you cannot know &#xA;&gt; that this is not the case.&#xA;&#xA;The common way to set that up is to have a separate key, but, ok, fair &#xA;enough. That said, the argument that &#34;it may be hidden by P2SH!&#34; isn&#39;t &#xA;sufficient here. It has to *both* be hidden by P2SH and have never been &#xA;spent from (either on mainnet or testnet) or be lock-timed a year in the &#xA;future. I&#39;m seriously skeptical that someone is using a highly esoteric &#xA;scheme and has just been pouring money into it without ever having &#xA;tested it or having withdrawn any money from it whatsoever. This is just &#xA;a weird argument.&#xA;&#xA;&#xA;&gt; Please don&#39;t strawman my position.  I am not suggesting we don&#39;t fix a &#xA;&gt; vulnerability in Bitcoin.  I am suggesting we find another way.  One &#xA;&gt; that limits the of risk destroying other people&#39;s money.&#xA;&gt; &#xA;&gt; Here is a more concrete proposal:  No matter how bad OP_CODESEPARATOR &#xA;&gt; is, it cannot be worse than instead including another input that spends &#xA;&gt; another identically sized UTXO.  So how about we soft-fork in a rule &#xA;&gt; that says that an input&#39;s weight is increased by an amount equal to the &#xA;&gt; number of OP_CODESEPARATORs executed times the sum of weight of the UTXO &#xA;&gt; being spent and 40 bytes, the weight of a stripped input. The risk of &#xA;&gt; destroying other people&#39;s money is limited and AFAIU it would completely &#xA;&gt; address the vulnerabilities caused by OP_CODESEPARATOR.&#xA;&#xA;You&#39;re already arguing that someone has such an esoteric use of script, &#xA;suggesting they aren&#39;t *also* creating pre-signed, long-locktimed &#xA;transactions with many inputs isn&#39;t much of a further stretch &#xA;(especially since this may result in the fee being non-standardly low if &#xA;you artificially increase its weight).&#xA;&#xA;Note that &#34;just limit number of OP_CODESEPARATOR calls&#34; results in a ton &#xA;of complexity and reduces the simple analysis that fees (almost) have &#xA;today vs just removing it allows us to also remove a ton of code.&#xA;&#xA;Further note that if you don&#39;t remove it getting the efficiency wins &#xA;right is even harder because instead of being able to cache sighashes &#xA;you now have to (at a minimum) wipe the cache between each &#xA;OP_CODESEPARATOR call, which results in a ton of additional &#xA;implementation complexity.&#xA;&#xA;&gt; &#xA;&gt;      &gt; I suggest an alternative whereby the execution of OP_CODESEPARATOR&#xA;&gt;      &gt; increases the transactions weight suitably as to temper the&#xA;&gt;      &gt; vulnerability caused by it.  Alternatively there could be some&#xA;&gt;     sort of&#xA;&gt;      &gt; limit (maybe 1) on the maximum number of OP_CODESEPARATORs&#xA;&gt;     allowed to be&#xA;&gt;      &gt; executed per script, but that would require an argument as to why&#xA;&gt;      &gt; exceeding that limit isn&#39;t reasonable.&#xA;&gt; &#xA;&gt;     You could equally argue, however, that any such limit could render some&#xA;&gt;     moderately-large transaction unspendable, so I&#39;m somewhat skeptical of&#xA;&gt;     this argument. Note that OP_CODESEPARATOR is non-standard, so getting&#xA;&gt;     them mined is rather difficult in any case.&#xA;&gt; &#xA;&gt; &#xA;&gt; I already know of people who&#39;s funds are tied up due to in other changes &#xA;&gt; to Bitcoin Core&#39;s default relay policy.  Non-standardness is not an &#xA;&gt; excuse to take other people&#39;s tied up funds and destroy them permanently.&#xA;&#xA;Huh?! The whole point of non-standardness in this context is to (a) make &#xA;soft-forking something out safer by derisking miners not upgrading right &#xA;away and (b) signal something that may be a candidate for soft-forking &#xA;out so that we get feedback. Who is getting things disabled who isn&#39;t &#xA;bothering to *tell* people that their use-case is being hurt?!</html></oembed>