BIP: MalFix Title: Malleability fix Author: Tomas van der Wansem <[email protected]> Status: Draft Created: 2016-12-14
This document proposes a change in the protocol, that allows the creation of non-malleable transactions.
The advantages of creating non-malleable transactions are well known and discussed elsewhere [1]
Immutable Transaction ID: The double SHA256 taken from a transaction after stripping it of all input scripts including their length prefixes.
UTXID - Unspent Transaction ID: Either the Immutable Transaction ID of a transaction with version 3 or higher, or the Transaction ID of a transaction with verion 1 or 2.
The previous-tx field of every output of every transaction which currently contains the TXID of the transaction being spend is replaced by a UTXID of the transaction being spend.
The TXID is still used in for construction of the merkle root and passed in INV messages.
This BIP will be deployed by "version bits" BIP9, using bit 5. Start date TBD.
- SegWit BIP 141 [2] also fixes malleability. It has the drawback that it fixes many things at once, which may make it difficult to reach consensus. For example, it introduces new limits that are difficult to reconcile with the Unlimited variants.
- Flexible Transactions [3] also fixes malleability. It has the drawback of introducing a new serialization format, which means that every software will need to support two very different formats indefinitely. This may be a high price to pay.