==== BIP 0147 - Dealing with dummy stack element malleability (soft fork) ====
[[dido:public:ra:xapend:xapend.b_stds:defact:bitcoin:bips| return to the Bitcoin Improvement Proposals ]]
Data sheet for Dealing with dummy stack element malleability
| Title | Dealing with dummy stack element malleability |
| Layer | Consensus (soft fork) |
| Author | Johnson Lau |
| Comments-Summary | No comments yet. |
| Comments-URI | [[https://github.com/bitcoin/bips/wiki/Comments:BIP-0147]] |
| Status | Final |
| Type | Standards Track |
| Created | 2016-09-02 |
| Post History | |
| Description | [[https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki]] |
| License | PD |
: **Note**: The following is an excerpt from the official [[dido:public:ra:xapend:xapend.a_glossary:b:bitcoin|Bitcoin]] site. It is provided here as a convenience and is not authoritative. Refer to the original document(s) as the authoritative reference.
=== Abstract ===
: //This document specifies proposed changes to the Bitcoin transaction validity rules to fix a malleability vector in the extra stack element consumed by ''OP_CHECKMULTISIG'' and ''OP_CHECKMULTISIGVERIFY''.//
=== Motivation ===
: //Signature malleability refers to the ability of any relay [[dido:public:ra:xapend:xapend.a_glossary:n:node|node]] on the network to transform the signature in transactions, with no access to the relevant private keys required. For non-segregated witness transactions, signature malleability will change the ''txid'' and invalidate any unconfirmed child transactions. Although the ''txid'' of segregated witness ([[dido:public:ra:xapend:xapend.b_stds:defact:bitcoin:bips:bip_0141| BIP141]]) transactions is not third party malleable, this malleability vector will change the ''wtxid'' and may reduce the efficiency of compact block relay ([[https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki | BIP152]]).//
: //A design flaw in ''OP_CHECKMULTISIG'' and ''OP_CHECKMULTISIGVERIFY'' causes them to consume an extra stack element ("dummy element") after signature [[dido:public:ra:xapend:xapend.a_glossary:v:validation|validation]]. The dummy element is not inspected in any manner, and could be replaced by any value without invalidating the [[dido:public:ra:xapend:xapend.a_glossary:s:script|script]]. This document specifies a new rule to fix this signature malleability.//