diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index 60d3996c94..ccc3f2fdf6 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -38,11 +38,11 @@ This has been mitigated by Bitcoin Core's relay policy and the RPC interface sin 64-byte transactions introduce block malleability. Malicious peers can construct consensus valid and invalid 64-byte transactions that have the same serialization as the concatenation of 2 hashes in the Merkle tree. -Assume we have a valid Bitcoin block with 2 transactions in it that have transaction ids of T0 and T1. -The Merkle root for this block is H(T0||T1). -A malicious user could find a 64-byte transaction Tm that serializes to T0||T1. +Assume we have a valid Bitcoin block with 2 transactions in it with Txid0 and Txid1. +The Merkle root for this block is H(Txid0||Txid1). +A malicious user could find a 64-byte transaction Tm that serializes to Txid0||Txid1. Next that user relays the block containing the malicious Tm rather than the -valid Bitcoin transactions that correspond with T0 and T1. +valid Bitcoin transactions that correspond to Txid0 and Txid1. ==== Block malleability with consensus INVALID transactions ==== @@ -84,7 +84,7 @@ are less constrained than the first 32 bytes) are constructed so that they colli with the hash of some other fake, invalid transaction F. The attacker can fool the SPV client into believing that F was included in a Bitcoin block rather than T with 81 bits[[bip-0053/2-BitcoinMerkle.pdf|An attacker who can do 81 bits of work (followed by another 40 bits of work, to construct the funding transaction whose coins will be spent by this one) is able -to fool an SPV client in this way.]] of work. This also reduces implementation complexity for SPV wallets[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/43 The steps needed to make sure a Merkle proof for a transaction is secure.]. +to fool an SPV client in this way.]] of work. Disallowing 64-byte transactions reduces implementation complexity for SPV wallets[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/43 The steps needed to make sure a Merkle proof for a 64-byte transaction is secure.]. ==Rationale==