Skip to content

Latest commit

 

History

History
43 lines (26 loc) · 1.77 KB

malleability-fix.mediawiki

File metadata and controls

43 lines (26 loc) · 1.77 KB

  BIP: MalFix
  Title: Malleability fix
  Author: Tomas van der Wansem <[email protected]>
  Status: Draft
  Created: 2016-12-14

Table of Contents

Abstract

This document proposes a change in the protocol, that allows the creation of non-malleable transactions.

Motivation

The advantages of creating non-malleable transactions are well known and discussed elsewhere [1]

Definitions

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.

Specification

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.

Deployment

This BIP will be deployed by "version bits" BIP9, using bit 5. Start date TBD.

Alternatives

  • 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.

References