<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Dec 12, 2018 at 7:06 PM Anthony Towns &lt;<a href="mailto:aj@erisian.com.au">aj@erisian.com.au</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Dec 11, 2018 at 05:50:24PM -0500, Russell O&#39;Connor via bitcoin-dev wrote:<br>
&gt; On Sun, Dec 9, 2018 at 2:13 PM Johnson Lau &lt;<a href="mailto:jl2012@xbt.hk" target="_blank">jl2012@xbt.hk</a>&gt; wrote:<br>
&gt;     The current proposal is that a 64-byte signature will be used for the<br>
&gt;     default “signing all” sighash, and 65-byte for other sighash types. The<br>
&gt;     space saved will allow a few more txs in a block, so I think it worths<br>
&gt;     doing. However, this also makes witness weight estimation more difficult in<br>
&gt;     multisig cases.<br>
<br>
This seems strange to me -- why wouldn&#39;t you just assume every signature<br>
is 65 witness bytes, and just be grateful for the prioritisation benefit<br>
if someone chooses a shorter signature? Your error margin is just 0.25<br>
vbytes per signature.<br></blockquote><div><br></div><div>The issue is that the proposal is to sign the actual weight, rather than sign an upper bound on the weight.</div><div>The problem with signing an upper bound, is that you need to specify that upper bound someplace in the transaction, and we are out of sneaky places to stash that data.</div><div>Signing the actual weight is easy because the total weight is implicit, but now you need to know the total weight before signing.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
&gt; I tend to think in opposite terms. Is there a proof that any script can be<br>
&gt; transformed into an equivalent one that avoids witness weight malleability?<br>
<br>
An alternative generalisation: is there a proof that all valid witnesses<br>
will have a weight within some small range?<br>
<br>
&gt; Moreover, even if witness weight malleability is entirely avoidable, it always<br>
&gt; seems to come at a cost.  Taking as an example libwally&#39;s proposed &quot;<br>
&gt; csv_2of3_then_2&quot; Script, it begins with &quot;OP_DEPTH OP_1SUB OP_1SUB&quot;<br>
<br>
(DEPTH 2 NUMNOTEQUAL seems like it would have been more obvious...)<br>
<br></blockquote><div>I think the 1SUB idea was derived from the <span class="gmail-pl-en">csv_2of2_then_1 Script where DEPTH 1SUB is shorter than DEPTH 1 NUMNOTEQUAL.<br></span></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Cheers,<br>
aj<br>
<br>
</blockquote></div></div>