{"type":"rich","version":"1.0","author_name":"npub1tjephawh7fdf6358jufuh5eyxwauzrjqa7qn50pglee4tayc2ntqcjtl6r","author_url":"https://nostr.ae/npub1tjephawh7fdf6358jufuh5eyxwauzrjqa7qn50pglee4tayc2ntqcjtl6r","provider_name":"njump","provider_url":"https://nostr.ae","html":"📅 Original date posted:2014-02-19\n📝 Original message:On Wed, Feb 19, 2014 at 3:11 PM, Michael Gronager \u003cgronager at mac.com\u003e wrote:\n\u003e Why introduce a new transaction version for this purpose ? Wouldn't it be more elegant to simply let:\n\u003e\n\u003e 1. the next bitcoin version \"prettify\" 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.\n\nI consider actively mutating other's transactions worse than not\nrelaying them. If we want people to make their software deal with\nmalleability, either will work.\n\nRegarding deterministic hash: that's impossible. Some signature hash\ntypes are inherently (and intentionally) malleable. I don't think we\nshould pretend to want to change that. The purpose is making\nnon-malleability a choice the sender of a transaction can make.\n\nMost of the rules actually are enforced by IsStandard already now.\nOnly #1 and #7 aren't. #1 affects the majority of all transactions, so\nchanging it right now would be painful. #7 only affects multisig.\n\n\u003e 2. In a version later one could block relay of non deterministic transactions, as well as the acceptance of blocks with non-confirming transactions.\n\u003e\n\u003e To non-standard conforming clients this \"prettify\" change of hash would be seen as a constant malleability attack, but given the \"prettify\" code it is to fix any client into producing only conforming transactions, just by running the transaction through it before broadcast.\n\u003e\n\u003e There is a possible fork risk in step 2. above - if a majority of miners still havn'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:\n\u003e * Switch on forcing of unmalleable transactions in blocks when there has been only conforming transactions for 1000 blocks.\n\nThe problem in making these rules into consensus rule (affecting\ntx/block validity) is that some rules (in particular #3) may not be\nwanted by everyone, as they effectively limit the possibilities of the\nscript language further. As it is ultimately only about protecting\nsenders who care about non-malleability, introducing a new transaction\nversion is a very neat way of accomplishing that. The new block\nversion number is only there to coordinate the rollout, and choosing\nan automatic forking point.\n\n-- \nPieter"}
