BIP-MalFix is a Bitcoin (Cash) improvement proposal for a small breaking change that allows creating non-malleable transactions.How does it work?
Currently the inputs of a transaction point the transaction they are spending using their TXID which is the full hash of the transaction.
With MalFix, this field is replaced by a new "UTXID" field which contains (for new v3 transactions) the hash of the transaction without its input scripts.
That way, even if the signature of an off-chain transaction is malleated, every dependent transaction is still valid.How does this compare to SegWit? Security
Both SegWit and MalFix introduce a new non-malleable reference to a transaction. With MalFix, this is only used in the 'prev_tx_out' field of an input. In SegWit this replaces the identifier using in the merkle tree and in the P2P protocol.
The drawback of the SegWit solution is that it reduces long term security, as signatures are no longer needed to securely update the UTXO-set.Scope
MalFix aims to fix only malleability; a one step at the time approach that may be better suited in a consensus network. SegWit fixes several (not uncontroversial) things on the side.Impact
BIP-MalFix is a minimal change, but a change that effects every wallet, as they need to understand the new "utxo" field in order to be able to spend v3 transactions.
SegWit is a much more complicated change, which aims to ease the upgrade path as it doesn't force any other software to upgrade.
In short; MalFix minimizes the impact on the base layer, whereas SegWit minimizes the complications of the update.Do we need a malleability fix?
Tricky question. As a change minimalist I am not really in favour of fixing malleability. It helps only the specific case of an chain multisig transaction with off chain dependent transactions. Although this may aid for exampl...