Your suggested modification seems sound. Though, a script author could do something similar right now by prefacing his IF with this:
OP_DUP OP_DUP OP_0 OP_EQUAL OP_SWAP OP_1 OP_EQUAL OP_BOOLOR OP_NOTIF OP_RETURN OP_ENDIF [actual OP_IF goes here] That checks whether the input is 0 or 1, and runs OP_RETURN if not. Your way is cleaner, though. On Fri, Nov 6, 2015 at 1:13 AM, jl2012 via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org> wrote: > I have a new BIP draft for fixing OP_IF and OP_NOTIF malleability. Please > comment: > https://github.com/jl2012/bips/blob/master/opifmalleability.mediawiki > > Copied below: > > BIP: x > Title: Dealing with OP_IF and OP_NOTIF malleability > Author: jl2012 <jl2...@xbt.hk> > Status: Draft > Type: Standards Track > Created: 2015-11-06 > > Abstract > > As an supplement to BIP62, this document specifies proposed changes to the > Bitcoin transaction validity rules in order to make malleability of > transactions with OP_IF and OP_NOTIF impossible. > > Motivation > > OP_IF and OP_NOTIF are flow control codes in the Bitcoin script system. The > programme flow is decided by whether the top stake value is 0 or not. > However, this behavior opens a source of malleability as a third party may > alter a non-zero flow control value to any other non-zero value without > invalidating the transaction. > > As of November 2015, OP_IF and OP_NOTIF are not commonly used in the > blockchain. However, as more sophisticated functions such as > OP_CHECKLOCKTIMEVERITY are being introduced, OP_IF and OP_NOTIF will become > more popular and the related malleability should be fixed. This proposal > serves as a supplement to BIP62 and should be implemented with other > malleability fixes together. > > Specification > > If the transaction version is 3 or above, the flow control value for OP_IF > and OP_NOTIF must be either 0 or 1, or the transaction fails. > > This is to be implemented with BIP62. > > Compatibility > > This is a softfork. To ensure OP_IF and OP_NOTIF transactions created before > the introduction of this BIP will still be accpeted by the network, the new > rules only apply to transactions of version 3 or above. > > For people who want to preserve the original behaviour of OP_IF and > OP_NOTIF, an OP_0NOTEQUAL could be used before the flow control code to > transform any non-zero value to 1. > > Reference > > BIP62: https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki > > _______________________________________________ > bitcoin-dev mailing list > bitcoin-dev@lists.linuxfoundation.org > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev _______________________________________________ bitcoin-dev mailing list bitcoin-dev@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev