<oembed><type>rich</type><version>1.0</version><author_name>npub1nc78dlt7hp3v5dl32qu3m678h2j0ss374glcjnz8df75xcx7ngpq4gw452</author_name><author_url>https://nostr.ae/npub1nc78dlt7hp3v5dl32qu3m678h2j0ss374glcjnz8df75xcx7ngpq4gw452</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-02-19&#xA;📝 Original message:Twisting your words a bit I read:&#xA;&#xA;* you want to support relay of transactions that can be changed on the fly, but you consider it wrong to modify them.&#xA;* #3 is already not forwarded, but you still find it relevant to support it.&#xA;&#xA;Rational use cases of #3 will be pretty hard to find given the fact that they can be changed on the fly. We are down to inclusion in blocks by miners for special purposes - or did I miss out something?&#xA;&#xA;I think that we could guarantee fewer incidents by making version 1 transactions unmalleable and then optionally introduce a version 3 that supported the malleability feature. That way most existing problematic implementations would be fixed and no doors were closed for people experimenting with other stuff - tx v 3 would probably then be called experimental transactions.&#xA;&#xA;/M&#xA;&#xA;&#xA;On Feb 19, 2014, at 3:38 PM, Pieter Wuille &lt;pieter.wuille at gmail.com&gt; wrote:&#xA;&#xA;&gt; On Wed, Feb 19, 2014 at 3:11 PM, Michael Gronager &lt;gronager at mac.com&gt; wrote:&#xA;&gt;&gt; Why introduce a new transaction version for this purpose ? Wouldn&#39;t it be more elegant to simply let:&#xA;&gt;&gt; &#xA;&gt;&gt; 1. the next bitcoin version &#34;prettify&#34; all relayed transactions as deterministic transactions fulfilling the scheme 1-6 effectively blocking any malleability attack? If miners would upgrade then all transactions in blocks would have a deterministic hash.&#xA;&gt; &#xA;&gt; I consider actively mutating other&#39;s transactions worse than not&#xA;&gt; relaying them. If we want people to make their software deal with&#xA;&gt; malleability, either will work.&#xA;&gt; &#xA;&gt; Regarding deterministic hash: that&#39;s impossible. Some signature hash&#xA;&gt; types are inherently (and intentionally) malleable. I don&#39;t think we&#xA;&gt; should pretend to want to change that. The purpose is making&#xA;&gt; non-malleability a choice the sender of a transaction can make.&#xA;&gt; &#xA;&gt; Most of the rules actually are enforced by IsStandard already now.&#xA;&gt; Only #1 and #7 aren&#39;t. #1 affects the majority of all transactions, so&#xA;&gt; changing it right now would be painful. #7 only affects multisig.&#xA;&gt; &#xA;&gt;&gt; 2. In a version later one could block relay of non deterministic transactions, as well as the acceptance of blocks with non-confirming transactions.&#xA;&gt;&gt; &#xA;&gt;&gt; To non-standard conforming clients this &#34;prettify&#34; change of hash would be seen as a constant malleability attack, but given the &#34;prettify&#34; code it is to fix any client into producing only conforming transactions, just by running the transaction through it before broadcast.&#xA;&gt;&gt; &#xA;&gt;&gt; There is a possible fork risk in step 2. above - if a majority of miners still havn&#39;t upgraded to 1 when 2 is introduced. We could monitor % non conforming transaction in a block and only introduce 2. once that number is sufficiently small for a certain duration - criteria:&#xA;&gt;&gt; * Switch on forcing of unmalleable transactions in blocks when there has been only conforming transactions for 1000 blocks.&#xA;&gt; &#xA;&gt; The problem in making these rules into consensus rule (affecting&#xA;&gt; tx/block validity) is that some rules (in particular #3) may not be&#xA;&gt; wanted by everyone, as they effectively limit the possibilities of the&#xA;&gt; script language further. As it is ultimately only about protecting&#xA;&gt; senders who care about non-malleability, introducing a new transaction&#xA;&gt; version is a very neat way of accomplishing that. The new block&#xA;&gt; version number is only there to coordinate the rollout, and choosing&#xA;&gt; an automatic forking point.&#xA;&gt; &#xA;&gt; -- &#xA;&gt; Pieter&#xA;&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 496 bytes&#xA;Desc: Message signed with OpenPGP using GPGMail&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20140219/f91a05d2/attachment.sig&gt;</html></oembed>