<div dir="ltr">Hi Gregory,<br><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">In particular not covering the ID allows for transaction replay which<br>
can result in monetary losses far more severe than any possible<br>
mishandling of malleability could result in. Byzantine attackers can<br>
costlessly replay your old transactions any time anyone reuses an<br>
address, even accidentally (which cannot be easily prevented since<br>
they can race).<br></blockquote><div><br></div>With the SIGHASH_WITHOUT_PREV_VALUE flag, signatures have to explicitly specify that they are to be signed without the previous UTXO&#39;s value/amount. This means that, at worst, replay attacks can send the money to the same place it was sent before (which in many cases is likely not be a loss of funds), and only if the amount sent to the reused address is the exact same as it was before. I don&#39;t think this is worse than an attacker being able to mutate their transaction and extort a merchant who accepts zero-conf transactions. Anyway, not signing the input ID wouldn&#39;t exactly be the norm, there would be a defined set of flags for standard use cases. Not signing the input TXID would only be used in specialized cases, such as setting up micropayment channels. <div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">There are no free lunches;  the proposal linked to there is itself a<br>
game of wack-a-mole with assorted masking flags; </blockquote><div><br></div><div>I agree that it is also a bit of wac-a-mole, but the defined space of issues is possibly more limited here. There are only X number of things that can be signed/not signed in a transaction, and the &#39;Build your own nHashType&#39; proposal enables you to fully specify which of those are being signed. If you don&#39;t want to get burned by not fully signing your transactions, then don&#39;t use the non-standard sighash flags.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">many of which we have<br>
no notion of if they&#39;re useful for any particular application(s); </blockquote><div><br></div><div>A few of the flags, indeed, may not ever be useful. But we can&#39;t predict the future, and I think it&#39;s better to build in a more flexible solution now than to wish we had more flexible nHashTypes later.</div><div><br></div><div>To the original point of this thread, hopefully the suggested proposal won&#39;t be necessary as wallets will upgrade to use version 3 transactions and the rules associated with them over time. </div><div><br></div><div>Best,</div><div>Stephen</div></div></div></div>