Twisting your words a bit I read:

* you want to support relay of transactions that can be changed on the fly, but 
you consider it wrong to modify them.
* #3 is already not forwarded, but you still find it relevant to support it.

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?

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.

/M


On Feb 19, 2014, at 3:38 PM, Pieter Wuille <pieter.wui...@gmail.com> wrote:

> On Wed, Feb 19, 2014 at 3:11 PM, Michael Gronager <grona...@mac.com> wrote:
>> Why introduce a new transaction version for this purpose ? Wouldn't it be 
>> more elegant to simply let:
>> 
>> 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.
> 
> I consider actively mutating other's transactions worse than not
> relaying them. If we want people to make their software deal with
> malleability, either will work.
> 
> Regarding deterministic hash: that's impossible. Some signature hash
> types are inherently (and intentionally) malleable. I don't think we
> should pretend to want to change that. The purpose is making
> non-malleability a choice the sender of a transaction can make.
> 
> Most of the rules actually are enforced by IsStandard already now.
> Only #1 and #7 aren't. #1 affects the majority of all transactions, so
> changing it right now would be painful. #7 only affects multisig.
> 
>> 2. In a version later one could block relay of non deterministic 
>> transactions, as well as the acceptance of blocks with non-confirming 
>> transactions.
>> 
>> 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.
>> 
>> 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:
>> * Switch on forcing of unmalleable transactions in blocks when there has 
>> been only conforming transactions for 1000 blocks.
> 
> The problem in making these rules into consensus rule (affecting
> tx/block validity) is that some rules (in particular #3) may not be
> wanted by everyone, as they effectively limit the possibilities of the
> script language further. As it is ultimately only about protecting
> senders who care about non-malleability, introducing a new transaction
> version is a very neat way of accomplishing that. The new block
> version number is only there to coordinate the rollout, and choosing
> an automatic forking point.
> 
> -- 
> Pieter

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development

Reply via email to