From 59e8040f1988c82a697bc63933f82afb6db5fbaa Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Fri, 20 Dec 2024 16:57:22 -0600 Subject: [PATCH 01/43] Disallow 64 byte transactions --- bip-XXXX.mediawiki | 140 +++++++++++++++++++++++++++++++++ bip-XXXX/2-BitcoinMerkle.pdf | Bin 0 -> 200880 bytes bip-XXXX/64byte-tx-mainnet.txt | 5 ++ 3 files changed, 145 insertions(+) create mode 100644 bip-XXXX.mediawiki create mode 100644 bip-XXXX/2-BitcoinMerkle.pdf create mode 100644 bip-XXXX/64byte-tx-mainnet.txt diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki new file mode 100644 index 0000000000..6d2dea4603 --- /dev/null +++ b/bip-XXXX.mediawiki @@ -0,0 +1,140 @@ +
+  BIP: ?
+  Layer: Consensus (soft fork)
+  Title: Disallow 64 byte transactions
+  Author: Chris Stewart 
+  Status: Draft
+  Type: Specification
+  License: BSD-3-Clause
+  Created: ?
+
+ +==Abstract== + +This BIP describes the rationale for disallowing transactions that are serialized to 64 bytes without the transaction's witness. +We describe the weaknesses to the merkle tree included in bitcoin block headers, various exploits for those weaknesses. + +==Motivation== + +Bitcoin block headers include a commitment to the set of transactions in a given +block, which is implemented by constructing a Merkle tree of transaction id’s +(double-SHA256 hash of a transaction) and including the root of the tree in the +block header. This in turn allows for proving to a Bitcoin light client that a +given transaction is in a given block by providing a path through the tree to the +transaction. However, Bitcoin’s particular construction of the Merkle tree has +several security weaknesses, including at least two forms of block malleability +that have an impact on the consensus logic of Bitcoin Core, and an attack on +light clients, where an invalid transaction could be ”proven” to appear in a block +by doing substantially less work than a SHA256 hash collision would require. +This has been prevented by relay policy since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64 byte transactions in bitcoin core relay] + +==Specification== + +This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without it's witness. + +==Rationale== + +=== Block malleability === + +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 nodes in the merkle tree. + +Assume we have a valid bitcoin block with 2 transactions in it - T0 and T1. +The merkle root for this block is H(T0||T1). +A user could find a malicious 64 byte transaction Tm that serializes to T0||T1. +Next the malicious user relays the block containing the malicious Tm rather than the +valid bitcoin transactions T0 and T1. + +==== Block malleability with consensus INVALID transactions ==== + +The peer receiving the malicious block marks the block as invalid as Tm +is not a valid transaction according to network consensus rules. +Other peers on the network receive the valid block containing T0 and T1 +add the block to their blockchain. Peers that receive the invalid block before the valid block +will never come to consensus with their peers due to the malicious user finding a collision +within the block's merkle root. Finding this collision approximately 22 bits worth of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle +root which is a hash of a 64-byte quantity that deserializes validly, it’s enough +to just do 8 bits of work to find a workable coinbase (which will hash to the first +32 bytes), plus another ≈22 bits of work ((1/5) ∗224, so slightly less) to find +a workable second transaction which will hash to the second 32 bytes) – a very +small amount of computation.] + +This attack vector was fixed in 0.6.2[https://bitcoin.org/en/alert/2012-05-14-dos#risks CVE-2012-2459], re-introduced in 0.13.x[https://github.com/bitcoin/bitcoin/pull/7225 #7225] and patched again in +0.14[https://github.com/bitcoin/bitcoin/pull/9765 #9765] of bitcoin core. + +==== Block malleability with consensus VALID transactions ==== + +Producing a valid bitcoin transaction Tm that adheres to network consesnsus +rules requires 224 bits of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf Note that the first transaction in a block must be a coinbase, and as discussed +above, that largely constrains the first 32 bytes of the first transaction: only +the 4 version bytes are unconstrained. So it would take at least 28*8= 224 bits +of work to find the first node in a given row of the tree that would match the +first half of a coinbase, in addition to the amount of work required to grind the +second half of the transaction to something meaningful (which is much easier – +only 16 bytes or so are constrained, so approximately 128 bits of work to find a collision). Of course, any of the rows in the Merkle tree could be used, but it nevertheless seems clear that this should be computationally infeasible.]. +This is computationally and financially expensive but theoretically possible. This can lead to a persistent chain split on the network. + +=== Attack on SPV clients === + +BIP37[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP37]provides a partial merkle tree format[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki#user-content-Partial_Merkle_branch_format Partial Merkle Tree Format] +that allows you to verify your bitcoin transaction is included in a merkle root embedded in a bitcoin block header. +Notably this format does not commit to the height of the merkle tree. + +Suppose a (valid) 64-byte transaction T is included in a block with the property that the second 32 bytes (which +are less constrained than the first 32 bytes) are constructed so that they collide +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[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/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 of 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.]. + +This could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase transaction could mitigate this attack. +To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. +As mentioned above, this is computionally and financially expensive, but theoretically possible. + +==Backward compatibility== + +There have been 5 64 byte transactions that have occcurred in the bitcoin blockchain as of this +writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64byte-tx-mainnet.txt 64 byte transactions in the bitcoin blockchain] +With the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64 byte transaction in the bitcoin blockchain] +occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. + +TODO + +==Reference implementation== + + +/** + * We want to enforce certain rules (specifically the 64-byte transaction check) + * before we call CheckBlock to check the merkle root. This allows us to enforce + * malleability checks which may interact with other CheckBlock checks. + * This is currently called both in AcceptBlock prior to writing the block to + * disk and in ConnectBlock. + * Note that as this is called before merkle-tree checks so must never return a + * non-malleable error condition. + */ +static bool ContextualBlockPreCheck(const CBlock& block, BlockValidationState& state, const ChainstateManager& chainman, const CBlockIndex* pindexPrev) +{ + if (DeploymentActiveAfter(pindexPrev, chainman, Consensus::DEPLOYMENT_64BYTETX)) { + for (const auto& tx : block.vtx) { + if (::GetSerializeSize(TX_NO_WITNESS(tx)) == 64) { + return state.Invalid(BlockValidationResult::BLOCK_MUTATED, "64-byte-transaction", strprintf("size of tx %s without witness is 64 bytes", tx->GetHash().ToString())); + } + } + } + + return true; +} + + +https://github.com/bitcoin-inquisition/bitcoin/pull/24/files + +== Rationale == + + + +==Copyright== +This BIP is licensed under the [https://opensource.org/license/BSD-3-Clause BSD-3-Clause License]. + +==Acknowledgements== + +Suhas Daftuar, AJ Towns, Sergio Demian Lerner, Greg Maxwell, Matt Corallo, Antoine Poinsont, Dave Harding and Erik Voskuil diff --git a/bip-XXXX/2-BitcoinMerkle.pdf b/bip-XXXX/2-BitcoinMerkle.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2ab5fe50ec8455b3f3eab519a9bb66d393812ac3 GIT binary patch literal 200880 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 Date: Thu, 13 Feb 2025 15:12:44 -0600 Subject: [PATCH 02/43] Update bip-XXXX.mediawiki Co-authored-by: Mark "Murch" Erhardt --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 6d2dea4603..894ae5724c 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -26,7 +26,7 @@ several security weaknesses, including at least two forms of block malleability that have an impact on the consensus logic of Bitcoin Core, and an attack on light clients, where an invalid transaction could be ”proven” to appear in a block by doing substantially less work than a SHA256 hash collision would require. -This has been prevented by relay policy since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64 byte transactions in bitcoin core relay] +This has been prevented by relay policy since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay] ==Specification== From 4c551282261a726ae83780ffa5064f78a72717ae Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Thu, 13 Feb 2025 15:12:51 -0600 Subject: [PATCH 03/43] Update bip-XXXX.mediawiki Co-authored-by: Mark "Murch" Erhardt --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 894ae5724c..e461154e33 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -17,7 +17,7 @@ We describe the weaknesses to the merkle tree included in bitcoin block headers, ==Motivation== Bitcoin block headers include a commitment to the set of transactions in a given -block, which is implemented by constructing a Merkle tree of transaction id’s +block, which is implemented by constructing a Merkle tree of transaction ids (double-SHA256 hash of a transaction) and including the root of the tree in the block header. This in turn allows for proving to a Bitcoin light client that a given transaction is in a given block by providing a path through the tree to the From 56fbcc7f383c7ede3c11383fb10e6a97231bf876 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Thu, 13 Feb 2025 15:13:00 -0600 Subject: [PATCH 04/43] Update bip-XXXX.mediawiki Co-authored-by: Mark "Murch" Erhardt --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index e461154e33..6b8876c57c 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -30,7 +30,7 @@ This has been prevented by relay policy since 2018[https://github.com/bitco ==Specification== -This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without it's witness. +This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without its witness. ==Rationale== From 3b293e9c6cac48e115cb03b5534412809b07fc7e Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Thu, 13 Feb 2025 15:13:10 -0600 Subject: [PATCH 05/43] Update bip-XXXX.mediawiki Co-authored-by: Mark "Murch" Erhardt --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 6b8876c57c..a015cf9a2f 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -5,8 +5,8 @@ Author: Chris Stewart Status: Draft Type: Specification - License: BSD-3-Clause Created: ? + License: BSD-3-Clause ==Abstract== From 72d6db3f02c20fc33dd755c44d5a11618bce041c Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Thu, 13 Feb 2025 15:13:26 -0600 Subject: [PATCH 06/43] Update bip-XXXX.mediawiki Co-authored-by: Mark "Murch" Erhardt --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index a015cf9a2f..e0c8992c63 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -1,7 +1,7 @@
   BIP: ?
   Layer: Consensus (soft fork)
-  Title: Disallow 64 byte transactions
+  Title: Disallow 64-byte transactions
   Author: Chris Stewart 
   Status: Draft
   Type: Specification

From c0dfb6d25ae2ea323b25a08590ef29c89689eb48 Mon Sep 17 00:00:00 2001
From: Chris Stewart 
Date: Thu, 13 Feb 2025 15:13:36 -0600
Subject: [PATCH 07/43] Update bip-XXXX.mediawiki

Co-authored-by: Mark "Murch" Erhardt 
---
 bip-XXXX.mediawiki | 1 +
 1 file changed, 1 insertion(+)

diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki
index e0c8992c63..3fbba01f91 100644
--- a/bip-XXXX.mediawiki
+++ b/bip-XXXX.mediawiki
@@ -3,6 +3,7 @@
   Layer: Consensus (soft fork)
   Title: Disallow 64-byte transactions
   Author: Chris Stewart 
+  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-?
   Status: Draft
   Type: Specification
   Created: ?

From b35f42608f1f967b112b1c9739a404391971f501 Mon Sep 17 00:00:00 2001
From: Chris Stewart 
Date: Thu, 13 Feb 2025 15:13:45 -0600
Subject: [PATCH 08/43] Update bip-XXXX.mediawiki

Co-authored-by: Mark "Murch" Erhardt 
---
 bip-XXXX.mediawiki | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki
index 3fbba01f91..006662db01 100644
--- a/bip-XXXX.mediawiki
+++ b/bip-XXXX.mediawiki
@@ -65,7 +65,7 @@ This attack vector was fixed in 0.6.2[https://bitcoin.org/en/alert/2012-05-
 
 ==== Block malleability with consensus VALID transactions ====
 
-Producing a valid bitcoin transaction Tm that adheres to network consesnsus
+Producing a valid bitcoin transaction Tm that adheres to network consensus
 rules requires 224 bits of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf Note that the first transaction in a block must be a coinbase, and as discussed
 above, that largely constrains the first 32 bytes of the first transaction: only
 the 4 version bytes are unconstrained. So it would take at least 28*8= 224 bits

From 9e6c34373c644892bedfd373e909ca46c0ffb62a Mon Sep 17 00:00:00 2001
From: Chris Stewart 
Date: Thu, 13 Feb 2025 15:17:49 -0600
Subject: [PATCH 09/43] Update bip-XXXX.mediawiki

Co-authored-by: Mark "Murch" Erhardt 
---
 bip-XXXX.mediawiki | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki
index 006662db01..fa5395ec43 100644
--- a/bip-XXXX.mediawiki
+++ b/bip-XXXX.mediawiki
@@ -5,7 +5,7 @@
   Author: Chris Stewart 
   Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-?
   Status: Draft
-  Type: Specification
+  Type: Standards Track
   Created: ?
   License: BSD-3-Clause
 
From ebbe441c564615417b0a955a417809271dc59e44 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Thu, 13 Feb 2025 15:20:59 -0600 Subject: [PATCH 10/43] Use hyphen --- bip-XXXX.mediawiki | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index fa5395ec43..12e1888626 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -37,12 +37,12 @@ This BIP disallows bitcoin transactions that are serialized to 64 bytes in lengt === Block malleability === -64 byte transactions introduce block malleability. Malicious peers can construct consensus valid and invalid 64 byte +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 nodes in the merkle tree. Assume we have a valid bitcoin block with 2 transactions in it - T0 and T1. The merkle root for this block is H(T0||T1). -A user could find a malicious 64 byte transaction Tm that serializes to T0||T1. +A user could find a malicious 64-byte transaction Tm that serializes to T0||T1. Next the malicious user relays the block containing the malicious Tm rather than the valid bitcoin transactions T0 and T1. @@ -94,9 +94,9 @@ As mentioned above, this is computionally and financially expensive, but theoret ==Backward compatibility== -There have been 5 64 byte transactions that have occcurred in the bitcoin blockchain as of this -writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64byte-tx-mainnet.txt 64 byte transactions in the bitcoin blockchain] -With the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64 byte transaction in the bitcoin blockchain] +There have been 5 64-byte transactions that have occcurred in the bitcoin blockchain as of this +writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64byte-tx-mainnet.txt 64-byte transactions in the bitcoin blockchain] +With the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the bitcoin blockchain] occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. TODO From ed044d76bd85be2ab2ba435a05ddffc595cef58f Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 24 Feb 2025 16:56:38 -0600 Subject: [PATCH 11/43] Add note about 64 byte transactions not being allowed by the RPC interface, fix typo --- bip-XXXX.mediawiki | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 12e1888626..f44d69b4b6 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -27,7 +27,7 @@ several security weaknesses, including at least two forms of block malleability that have an impact on the consensus logic of Bitcoin Core, and an attack on light clients, where an invalid transaction could be ”proven” to appear in a block by doing substantially less work than a SHA256 hash collision would require. -This has been prevented by relay policy since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay] +This has been prevented by relay policy and RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay and RPC interface]. ==Specification== @@ -88,7 +88,7 @@ was included in a bitcoin block rather than T with 81 bits[https://github.c 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 of 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.]. -This could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase transaction could mitigate this attack. +This could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. As mentioned above, this is computionally and financially expensive, but theoretically possible. From 5c2d07f5ffb9a3e8b32467f50d51df6d09dee59f Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Fri, 28 Feb 2025 16:37:43 -0600 Subject: [PATCH 12/43] Move content in rationale section into motivation section --- bip-XXXX.mediawiki | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index f44d69b4b6..e389b98aec 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -29,12 +29,6 @@ light clients, where an invalid transaction could be ”proven” to appear in a by doing substantially less work than a SHA256 hash collision would require. This has been prevented by relay policy and RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay and RPC interface]. -==Specification== - -This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without its witness. - -==Rationale== - === Block malleability === 64-byte transactions introduce block malleability. Malicious peers can construct consensus valid and invalid 64-byte @@ -92,6 +86,13 @@ This could be mitigated by knowing the depth of the merkle tree. Requiring SPV c To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. As mentioned above, this is computionally and financially expensive, but theoretically possible. +==Specification== + +This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without its witness. + +==Rationale== + + ==Backward compatibility== There have been 5 64-byte transactions that have occcurred in the bitcoin blockchain as of this From df671612c9c8e6f76c9f9cda1a990a2c0e9fb1b1 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Sat, 1 Mar 2025 10:26:54 -0600 Subject: [PATCH 13/43] Address more feedback --- bip-XXXX.mediawiki | 29 +++++++++++++++++++++---- bip-XXXX/nonstandard-hashlock-utxos.txt | 6 +++++ 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 bip-XXXX/nonstandard-hashlock-utxos.txt diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index e389b98aec..6638badb71 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -82,9 +82,7 @@ was included in a bitcoin block rather than T with 81 bits[https://github.c 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 of 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.]. -This could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. -To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. -As mentioned above, this is computionally and financially expensive, but theoretically possible. + ==Specification== @@ -92,6 +90,13 @@ This BIP disallows bitcoin transactions that are serialized to 64 bytes in lengt ==Rationale== +=== SPV clients == + +Attacks on SPV clients could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. +To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. +As mentioned above, this is computionally and financially expensive, but theoretically possible. This design would increase the size +of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/29?u=chris_stewart_5 Base proof: 80 byte header + 448 byte partial merkle tree = 528 bytes. Proof with coinbase tx, assuming the coinbase tx is in the left half of the tree and the tx to prove is in the right half of the tree: 80 byte header + 416 bytes partial merkle tree for coinbase tx + 416 bytes partial merkle tree for tx = 912 bytes.] + ==Backward compatibility== @@ -100,7 +105,23 @@ writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64by With the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the bitcoin blockchain] occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. -TODO +### Pre segwit 64-byte transactions + +64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the bitcoin network, bitcoin transactions cannot have a digital signature smaller than 9 bytes.] +The largest scriptSig a 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] + +There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/nonstandard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 nonstandard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] +non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. + +Pre-segwit 64-byte transactions that spend a nonstandard utxo that are inherently malleable[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction]. +Policy rules such as `CLEANSTACK`, `MINIMALDATA`, `PUSHONLY` are policy rules - not consensus. If a user has a way to confirm an already non-standard +64-byte transaction - they can malleate the transaction by violating policy rules to change the size of the transaction to a size other than 64 bytes. + +#### Segwit 64-byte transactions + +This BIP disallows single-input single output segwit transactions that pay to a 2 byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] +The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2 byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1 byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] +for this type of transaction is ephemeral anchor outputs[https://bitcoinops.org/en/topics/ephemeral-anchors/ What are ephemeral anchor outputs? This allows anyone on the network to use that output as the input to a child transaction. This allows anyone to create the fee-paying child, even if they don’t receive any of the other outputs from the parent transaction. This allows ephemeral anchors to function as fee sponsorship but without requiring any consensus changes.] ==Reference implementation== diff --git a/bip-XXXX/nonstandard-hashlock-utxos.txt b/bip-XXXX/nonstandard-hashlock-utxos.txt new file mode 100644 index 0000000000..dc4aa1c127 --- /dev/null +++ b/bip-XXXX/nonstandard-hashlock-utxos.txt @@ -0,0 +1,6 @@ +af32bb06f12f2ae5fdb7face7cd272be67c923e86b7a66a76ded02d954c2f94d:0 +faf8989ed87c5a667a1ead813aea718727e01767c124193297eaf409ff4645e5:1 +c4b46c5d88327d7af6254820562327c5f11b6ee5449da04b7cfd3710b48b6f55:0 +702c36851ed202495c2bec1dd0cefb448b50fafd3a5cdd5058c18ca53fc2c3d1:0 +6f8a70aac37786b1f619d40250b8bca1a1f6da487146a7e81091f611068a23ef:0 +fb01987b540ec286973aac248fab643de82813af452d958056fee8de9f4535ab:0 \ No newline at end of file From ccd27455187f26228372dcb26551ae54217006fd Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Sat, 1 Mar 2025 10:31:50 -0600 Subject: [PATCH 14/43] fix formatting --- bip-XXXX.mediawiki | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 6638badb71..ef3f4a9bd0 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -90,14 +90,13 @@ This BIP disallows bitcoin transactions that are serialized to 64 bytes in lengt ==Rationale== -=== SPV clients == +===SPV clients=== Attacks on SPV clients could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. As mentioned above, this is computionally and financially expensive, but theoretically possible. This design would increase the size of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/29?u=chris_stewart_5 Base proof: 80 byte header + 448 byte partial merkle tree = 528 bytes. Proof with coinbase tx, assuming the coinbase tx is in the left half of the tree and the tx to prove is in the right half of the tree: 80 byte header + 416 bytes partial merkle tree for coinbase tx + 416 bytes partial merkle tree for tx = 912 bytes.] - ==Backward compatibility== There have been 5 64-byte transactions that have occcurred in the bitcoin blockchain as of this @@ -105,7 +104,7 @@ writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64by With the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the bitcoin blockchain] occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. -### Pre segwit 64-byte transactions +====Pre segwit 64-byte transactions==== 64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the bitcoin network, bitcoin transactions cannot have a digital signature smaller than 9 bytes.] The largest scriptSig a 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] @@ -114,10 +113,10 @@ There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/n non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. Pre-segwit 64-byte transactions that spend a nonstandard utxo that are inherently malleable[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction]. -Policy rules such as `CLEANSTACK`, `MINIMALDATA`, `PUSHONLY` are policy rules - not consensus. If a user has a way to confirm an already non-standard +Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are policy rules - not consensus. If a user has a way to confirm an already non-standard 64-byte transaction - they can malleate the transaction by violating policy rules to change the size of the transaction to a size other than 64 bytes. -#### Segwit 64-byte transactions +====Segwit 64-byte transactions==== This BIP disallows single-input single output segwit transactions that pay to a 2 byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2 byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1 byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] From 1bea07e994fa28892ba2b57b126e5cb02a2ea57a Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 3 Mar 2025 15:22:43 -0600 Subject: [PATCH 15/43] fixes --- bip-XXXX.mediawiki | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index ef3f4a9bd0..2d5e416d21 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -15,6 +15,10 @@ This BIP describes the rationale for disallowing transactions that are serialized to 64 bytes without the transaction's witness. We describe the weaknesses to the merkle tree included in bitcoin block headers, various exploits for those weaknesses. +==Specification== + +This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without its witness. + ==Motivation== Bitcoin block headers include a commitment to the set of transactions in a given @@ -32,13 +36,13 @@ This has been prevented by relay policy and RPC interface since 2018[https: === Block malleability === 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 nodes in the merkle tree. +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 - T0 and T1. +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 user could find a malicious 64-byte transaction Tm that serializes to T0||T1. Next the malicious user relays the block containing the malicious Tm rather than the -valid bitcoin transactions T0 and T1. +valid bitcoin transactions that correspond with T0 and T1. ==== Block malleability with consensus INVALID transactions ==== @@ -82,12 +86,6 @@ was included in a bitcoin block rather than T with 81 bits[https://github.c 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 of 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.]. - - -==Specification== - -This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without its witness. - ==Rationale== ===SPV clients=== From 3e7a4c59056fc673077645357c022c67b761fd2c Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:24:11 -0500 Subject: [PATCH 16/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 2d5e416d21..478e38aa26 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -13,7 +13,7 @@ ==Abstract== This BIP describes the rationale for disallowing transactions that are serialized to 64 bytes without the transaction's witness. -We describe the weaknesses to the merkle tree included in bitcoin block headers, various exploits for those weaknesses. +We describe the weaknesses to the Merkle tree included in bitcoin block headers, and various exploits for those weaknesses. ==Specification== From 4fa6251ad8c0b66e844f16bae60483a8c55f02b8 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:24:33 -0500 Subject: [PATCH 17/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 478e38aa26..c543199e3d 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -17,7 +17,7 @@ We describe the weaknesses to the Merkle tree included in bitcoin block headers, ==Specification== -This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without its witness. +This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without their witness. ==Motivation== From 969998347c1d0461050e1a83b9a6b3019afba411 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:24:54 -0500 Subject: [PATCH 18/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index c543199e3d..a3dee473c2 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -31,7 +31,7 @@ several security weaknesses, including at least two forms of block malleability that have an impact on the consensus logic of Bitcoin Core, and an attack on light clients, where an invalid transaction could be ”proven” to appear in a block by doing substantially less work than a SHA256 hash collision would require. -This has been prevented by relay policy and RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay and RPC interface]. +This has been prevented by relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay and RPC interface]. === Block malleability === From c04753b7ae892aba2a5e7cf9b64c5136a9fa4468 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:25:35 -0500 Subject: [PATCH 19/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index a3dee473c2..f8425c4ab1 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -49,7 +49,7 @@ valid bitcoin transactions that correspond with T0 and T1. The peer receiving the malicious block marks the block as invalid as Tm is not a valid transaction according to network consensus rules. Other peers on the network receive the valid block containing T0 and T1 -add the block to their blockchain. Peers that receive the invalid block before the valid block +and add the block to their blockchain. Peers that receive the invalid block before the valid block will never come to consensus with their peers due to the malicious user finding a collision within the block's merkle root. Finding this collision approximately 22 bits worth of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle root which is a hash of a 64-byte quantity that deserializes validly, it’s enough From db292d3990f199088522446cec21e5d218c18592 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:26:43 -0500 Subject: [PATCH 20/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index f8425c4ab1..d0abc7627d 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -110,7 +110,7 @@ The largest scriptSig a 64-byte transaction can have is 4 bytes.[https://de There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/nonstandard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 nonstandard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. -Pre-segwit 64-byte transactions that spend a nonstandard utxo that are inherently malleable[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction]. +Pre-segwit 64-byte transactions that spend a nonstandard utxo that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are policy rules - not consensus. If a user has a way to confirm an already non-standard 64-byte transaction - they can malleate the transaction by violating policy rules to change the size of the transaction to a size other than 64 bytes. From ada44ae22425cc1ea1e7d3cefd4da86caf4fd334 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:31:01 -0500 Subject: [PATCH 21/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index d0abc7627d..4e0b509035 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -118,7 +118,7 @@ Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are policy rules - not co This BIP disallows single-input single output segwit transactions that pay to a 2 byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2 byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1 byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] -for this type of transaction is ephemeral anchor outputs[https://bitcoinops.org/en/topics/ephemeral-anchors/ What are ephemeral anchor outputs? This allows anyone on the network to use that output as the input to a child transaction. This allows anyone to create the fee-paying child, even if they don’t receive any of the other outputs from the parent transaction. This allows ephemeral anchors to function as fee sponsorship but without requiring any consensus changes.] +for this type of transaction is ephemeral anchor outputs.[https://bitcoinops.org/en/topics/ephemeral-anchors/ What are ephemeral anchor outputs? This allows anyone on the network to use that output as the input to a child transaction. This allows anyone to create the fee-paying child, even if they don’t receive any of the other outputs from the parent transaction. This allows ephemeral anchors to function as fee sponsorship but without requiring any consensus changes.] ==Reference implementation== From 2b8ded1bc8cb1dbb8c856a91f09584503951a86d Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:32:35 -0500 Subject: [PATCH 22/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 4e0b509035..65b31eb3aa 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -99,7 +99,7 @@ of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup- There have been 5 64-byte transactions that have occcurred in the bitcoin blockchain as of this writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64byte-tx-mainnet.txt 64-byte transactions in the bitcoin blockchain] -With the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the bitcoin blockchain] +with the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the bitcoin blockchain] occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. ====Pre segwit 64-byte transactions==== From c675f663168a40a5be1f4dcc3838e802d5b2ff45 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:38:54 -0500 Subject: [PATCH 23/43] typo --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 65b31eb3aa..4550a9d0d3 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -51,7 +51,7 @@ is not a valid transaction according to network consensus rules. Other peers on the network receive the valid block containing T0 and T1 and add the block to their blockchain. Peers that receive the invalid block before the valid block will never come to consensus with their peers due to the malicious user finding a collision -within the block's merkle root. Finding this collision approximately 22 bits worth of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle +within the block's merkle root. Finding this collision is approximately 22 bits worth of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle root which is a hash of a 64-byte quantity that deserializes validly, it’s enough to just do 8 bits of work to find a workable coinbase (which will hash to the first 32 bytes), plus another ≈22 bits of work ((1/5) ∗224, so slightly less) to find From c6bcc0019dc075438987314fdbdafdfa469c81a2 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 10:50:51 -0500 Subject: [PATCH 24/43] more rewording / cleanup --- bip-XXXX.mediawiki | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 4550a9d0d3..69956c2897 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -31,7 +31,7 @@ several security weaknesses, including at least two forms of block malleability that have an impact on the consensus logic of Bitcoin Core, and an attack on light clients, where an invalid transaction could be ”proven” to appear in a block by doing substantially less work than a SHA256 hash collision would require. -This has been prevented by relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay and RPC interface]. +This has been prevented by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay and RPC interface]. === Block malleability === @@ -51,7 +51,7 @@ is not a valid transaction according to network consensus rules. Other peers on the network receive the valid block containing T0 and T1 and add the block to their blockchain. Peers that receive the invalid block before the valid block will never come to consensus with their peers due to the malicious user finding a collision -within the block's merkle root. Finding this collision is approximately 22 bits worth of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle +within the block's merkle root. Finding this collision is approximately 22 bits worth of work.[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle root which is a hash of a 64-byte quantity that deserializes validly, it’s enough to just do 8 bits of work to find a workable coinbase (which will hash to the first 32 bytes), plus another ≈22 bits of work ((1/5) ∗224, so slightly less) to find @@ -59,7 +59,7 @@ a workable second transaction which will hash to the second 32 bytes) – a very small amount of computation.] This attack vector was fixed in 0.6.2[https://bitcoin.org/en/alert/2012-05-14-dos#risks CVE-2012-2459], re-introduced in 0.13.x[https://github.com/bitcoin/bitcoin/pull/7225 #7225] and patched again in -0.14[https://github.com/bitcoin/bitcoin/pull/9765 #9765] of bitcoin core. +0.14[https://github.com/bitcoin/bitcoin/pull/9765 #9765] of Bitcoin Core. ==== Block malleability with consensus VALID transactions ==== @@ -111,7 +111,7 @@ There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/n non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. Pre-segwit 64-byte transactions that spend a nonstandard utxo that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] -Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are policy rules - not consensus. If a user has a way to confirm an already non-standard +Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are not consensus rules. If a user has a way to confirm an already non-standard 64-byte transaction - they can malleate the transaction by violating policy rules to change the size of the transaction to a size other than 64 bytes. ====Segwit 64-byte transactions==== From 3ccbdade4af6b4f4aaa67a87478f15ab8ec25994 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 15:55:57 -0500 Subject: [PATCH 25/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 69956c2897..e07b13f6e1 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -12,7 +12,7 @@ ==Abstract== -This BIP describes the rationale for disallowing transactions that are serialized to 64 bytes without the transaction's witness. +This BIP describes the rationale for disallowing transactions that are serialized to 64 bytes without the transaction's witness. We describe the weaknesses to the Merkle tree included in bitcoin block headers, and various exploits for those weaknesses. ==Specification== From 24228a9f6c5a8974f09941e87b82093443f04554 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 15:56:05 -0500 Subject: [PATCH 26/43] Update bip-XXXX.mediawiki Co-authored-by: Jon Atack --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index e07b13f6e1..406e5a6378 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -46,7 +46,7 @@ valid bitcoin transactions that correspond with T0 and T1. ==== Block malleability with consensus INVALID transactions ==== -The peer receiving the malicious block marks the block as invalid as Tm +The peer receiving the malicious block marks the block as invalid as Tm is not a valid transaction according to network consensus rules. Other peers on the network receive the valid block containing T0 and T1 and add the block to their blockchain. Peers that receive the invalid block before the valid block From 7dc22a9a5113d4cf6a7325409e35101d5d11791d Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 16:15:55 -0500 Subject: [PATCH 27/43] Add reference to the bitcoin core commit relaxing tx standard size from 82 bytes -> 65 bytes --- bip-XXXX.mediawiki | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index 406e5a6378..e099557511 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -31,7 +31,7 @@ several security weaknesses, including at least two forms of block malleability that have an impact on the consensus logic of Bitcoin Core, and an attack on light clients, where an invalid transaction could be ”proven” to appear in a block by doing substantially less work than a SHA256 hash collision would require. -This has been prevented by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows 64-byte transactions in Bitcoin Core relay and RPC interface]. +This has been prevented by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows transactions that are less than 82 bytes in size from Bitcoin Core relay and RPC interface][https://github.com/bitcoin/bitcoin/commit/8c5b3646b5afe8a61f5c66478d8e11f0d2ce5108 Reduces the minimum transaction size required for a transaction to be considered standard from 82 bytes to 65 bytes]. === Block malleability === @@ -146,6 +146,8 @@ static bool ContextualBlockPreCheck(const CBlock& block, BlockValidationState& s } +The sample implementation is currently open here: + https://github.com/bitcoin-inquisition/bitcoin/pull/24/files == Rationale == From a3d12410d3e3361932e44f34f8420331cf5f9b59 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 10 Mar 2025 16:16:34 -0500 Subject: [PATCH 28/43] Fix missing tag --- bip-XXXX.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index e099557511..a5c18e8103 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -31,7 +31,7 @@ several security weaknesses, including at least two forms of block malleability that have an impact on the consensus logic of Bitcoin Core, and an attack on light clients, where an invalid transaction could be ”proven” to appear in a block by doing substantially less work than a SHA256 hash collision would require. -This has been prevented by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows transactions that are less than 82 bytes in size from Bitcoin Core relay and RPC interface][https://github.com/bitcoin/bitcoin/commit/8c5b3646b5afe8a61f5c66478d8e11f0d2ce5108 Reduces the minimum transaction size required for a transaction to be considered standard from 82 bytes to 65 bytes]. +This has been prevented by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows transactions that are less than 82 bytes in size from Bitcoin Core relay and RPC interface][https://github.com/bitcoin/bitcoin/commit/8c5b3646b5afe8a61f5c66478d8e11f0d2ce5108 Reduces the minimum transaction size required for a transaction to be considered standard from 82 bytes to 65 bytes]. === Block malleability === From 23e01bf1876c2667eda1c8fd6bd235c8fdf42ef1 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Mon, 21 Apr 2025 11:25:27 -0500 Subject: [PATCH 29/43] Add assigned BIP number to preamble --- bip-XXXX.mediawiki | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki index a5c18e8103..f414a5a981 100644 --- a/bip-XXXX.mediawiki +++ b/bip-XXXX.mediawiki @@ -1,9 +1,9 @@
-  BIP: ?
+  BIP: 53
   Layer: Consensus (soft fork)
   Title: Disallow 64-byte transactions
   Author: Chris Stewart 
-  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-?
+  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-53
   Status: Draft
   Type: Standards Track
   Created: ?

From a8fd2164231be5147fd36118a344a11e19bbcce8 Mon Sep 17 00:00:00 2001
From: Chris Stewart 
Date: Tue, 22 Apr 2025 11:22:39 -0500
Subject: [PATCH 30/43] Add BIP53 entry to README, rename BIP-XXXX.mediawiki ->
 bip-0053.mediawiki

---
 README.mediawiki   |   6 ++
 bip-XXXX.mediawiki | 162 ---------------------------------------------
 2 files changed, 6 insertions(+), 162 deletions(-)
 delete mode 100644 bip-XXXX.mediawiki

diff --git a/README.mediawiki b/README.mediawiki
index 56bed4e076..8c9b9d81e0 100644
--- a/README.mediawiki
+++ b/README.mediawiki
@@ -300,6 +300,12 @@ Those proposing changes should consider that ultimately consent may rest with th
 | Michael Dubrovsky, Bogdan Penkovsky
 | Standard
 | Draft
+| [[bip-0053.mediawiki|53]]
+| Consensus (soft fork)
+| Disallow 64-byte transactions
+| Chris Stewart
+| Standard
+| Draft
 
 |-
 | [[bip-0060.mediawiki|60]]
diff --git a/bip-XXXX.mediawiki b/bip-XXXX.mediawiki
deleted file mode 100644
index f414a5a981..0000000000
--- a/bip-XXXX.mediawiki
+++ /dev/null
@@ -1,162 +0,0 @@
-
-  BIP: 53
-  Layer: Consensus (soft fork)
-  Title: Disallow 64-byte transactions
-  Author: Chris Stewart 
-  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-53
-  Status: Draft
-  Type: Standards Track
-  Created: ?
-  License: BSD-3-Clause
-
- -==Abstract== - -This BIP describes the rationale for disallowing transactions that are serialized to 64 bytes without the transaction's witness. -We describe the weaknesses to the Merkle tree included in bitcoin block headers, and various exploits for those weaknesses. - -==Specification== - -This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without their witness. - -==Motivation== - -Bitcoin block headers include a commitment to the set of transactions in a given -block, which is implemented by constructing a Merkle tree of transaction ids -(double-SHA256 hash of a transaction) and including the root of the tree in the -block header. This in turn allows for proving to a Bitcoin light client that a -given transaction is in a given block by providing a path through the tree to the -transaction. However, Bitcoin’s particular construction of the Merkle tree has -several security weaknesses, including at least two forms of block malleability -that have an impact on the consensus logic of Bitcoin Core, and an attack on -light clients, where an invalid transaction could be ”proven” to appear in a block -by doing substantially less work than a SHA256 hash collision would require. -This has been prevented by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows transactions that are less than 82 bytes in size from Bitcoin Core relay and RPC interface][https://github.com/bitcoin/bitcoin/commit/8c5b3646b5afe8a61f5c66478d8e11f0d2ce5108 Reduces the minimum transaction size required for a transaction to be considered standard from 82 bytes to 65 bytes]. - -=== Block malleability === - -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 user could find a malicious 64-byte transaction Tm that serializes to T0||T1. -Next the malicious user relays the block containing the malicious Tm rather than the -valid bitcoin transactions that correspond with T0 and T1. - -==== Block malleability with consensus INVALID transactions ==== - -The peer receiving the malicious block marks the block as invalid as Tm -is not a valid transaction according to network consensus rules. -Other peers on the network receive the valid block containing T0 and T1 -and add the block to their blockchain. Peers that receive the invalid block before the valid block -will never come to consensus with their peers due to the malicious user finding a collision -within the block's merkle root. Finding this collision is approximately 22 bits worth of work.[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle -root which is a hash of a 64-byte quantity that deserializes validly, it’s enough -to just do 8 bits of work to find a workable coinbase (which will hash to the first -32 bytes), plus another ≈22 bits of work ((1/5) ∗224, so slightly less) to find -a workable second transaction which will hash to the second 32 bytes) – a very -small amount of computation.] - -This attack vector was fixed in 0.6.2[https://bitcoin.org/en/alert/2012-05-14-dos#risks CVE-2012-2459], re-introduced in 0.13.x[https://github.com/bitcoin/bitcoin/pull/7225 #7225] and patched again in -0.14[https://github.com/bitcoin/bitcoin/pull/9765 #9765] of Bitcoin Core. - -==== Block malleability with consensus VALID transactions ==== - -Producing a valid bitcoin transaction Tm that adheres to network consensus -rules requires 224 bits of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf Note that the first transaction in a block must be a coinbase, and as discussed -above, that largely constrains the first 32 bytes of the first transaction: only -the 4 version bytes are unconstrained. So it would take at least 28*8= 224 bits -of work to find the first node in a given row of the tree that would match the -first half of a coinbase, in addition to the amount of work required to grind the -second half of the transaction to something meaningful (which is much easier – -only 16 bytes or so are constrained, so approximately 128 bits of work to find a collision). Of course, any of the rows in the Merkle tree could be used, but it nevertheless seems clear that this should be computationally infeasible.]. -This is computationally and financially expensive but theoretically possible. This can lead to a persistent chain split on the network. - -=== Attack on SPV clients === - -BIP37[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP37]provides a partial merkle tree format[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki#user-content-Partial_Merkle_branch_format Partial Merkle Tree Format] -that allows you to verify your bitcoin transaction is included in a merkle root embedded in a bitcoin block header. -Notably this format does not commit to the height of the merkle tree. - -Suppose a (valid) 64-byte transaction T is included in a block with the property that the second 32 bytes (which -are less constrained than the first 32 bytes) are constructed so that they collide -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[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/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 of 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.]. - -==Rationale== - -===SPV clients=== - -Attacks on SPV clients could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. -To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. -As mentioned above, this is computionally and financially expensive, but theoretically possible. This design would increase the size -of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/29?u=chris_stewart_5 Base proof: 80 byte header + 448 byte partial merkle tree = 528 bytes. Proof with coinbase tx, assuming the coinbase tx is in the left half of the tree and the tx to prove is in the right half of the tree: 80 byte header + 416 bytes partial merkle tree for coinbase tx + 416 bytes partial merkle tree for tx = 912 bytes.] - -==Backward compatibility== - -There have been 5 64-byte transactions that have occcurred in the bitcoin blockchain as of this -writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64byte-tx-mainnet.txt 64-byte transactions in the bitcoin blockchain] -with the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the bitcoin blockchain] -occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. - -====Pre segwit 64-byte transactions==== - -64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the bitcoin network, bitcoin transactions cannot have a digital signature smaller than 9 bytes.] -The largest scriptSig a 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] - -There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/nonstandard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 nonstandard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] -non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. - -Pre-segwit 64-byte transactions that spend a nonstandard utxo that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] -Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are not consensus rules. If a user has a way to confirm an already non-standard -64-byte transaction - they can malleate the transaction by violating policy rules to change the size of the transaction to a size other than 64 bytes. - -====Segwit 64-byte transactions==== - -This BIP disallows single-input single output segwit transactions that pay to a 2 byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] -The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2 byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1 byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] -for this type of transaction is ephemeral anchor outputs.[https://bitcoinops.org/en/topics/ephemeral-anchors/ What are ephemeral anchor outputs? This allows anyone on the network to use that output as the input to a child transaction. This allows anyone to create the fee-paying child, even if they don’t receive any of the other outputs from the parent transaction. This allows ephemeral anchors to function as fee sponsorship but without requiring any consensus changes.] - -==Reference implementation== - - -/** - * We want to enforce certain rules (specifically the 64-byte transaction check) - * before we call CheckBlock to check the merkle root. This allows us to enforce - * malleability checks which may interact with other CheckBlock checks. - * This is currently called both in AcceptBlock prior to writing the block to - * disk and in ConnectBlock. - * Note that as this is called before merkle-tree checks so must never return a - * non-malleable error condition. - */ -static bool ContextualBlockPreCheck(const CBlock& block, BlockValidationState& state, const ChainstateManager& chainman, const CBlockIndex* pindexPrev) -{ - if (DeploymentActiveAfter(pindexPrev, chainman, Consensus::DEPLOYMENT_64BYTETX)) { - for (const auto& tx : block.vtx) { - if (::GetSerializeSize(TX_NO_WITNESS(tx)) == 64) { - return state.Invalid(BlockValidationResult::BLOCK_MUTATED, "64-byte-transaction", strprintf("size of tx %s without witness is 64 bytes", tx->GetHash().ToString())); - } - } - } - - return true; -} - - -The sample implementation is currently open here: - -https://github.com/bitcoin-inquisition/bitcoin/pull/24/files - -== Rationale == - - - -==Copyright== -This BIP is licensed under the [https://opensource.org/license/BSD-3-Clause BSD-3-Clause License]. - -==Acknowledgements== - -Suhas Daftuar, AJ Towns, Sergio Demian Lerner, Greg Maxwell, Matt Corallo, Antoine Poinsont, Dave Harding and Erik Voskuil From c9f72c1a8f67a5c708072db45d038d3aa7593d30 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 11:24:32 -0500 Subject: [PATCH 31/43] Add missing '-' for BIP53 entry on README table --- README.mediawiki | 1 + 1 file changed, 1 insertion(+) diff --git a/README.mediawiki b/README.mediawiki index 8c9b9d81e0..a121197a8a 100644 --- a/README.mediawiki +++ b/README.mediawiki @@ -300,6 +300,7 @@ Those proposing changes should consider that ultimately consent may rest with th | Michael Dubrovsky, Bogdan Penkovsky | Standard | Draft +|- | [[bip-0053.mediawiki|53]] | Consensus (soft fork) | Disallow 64-byte transactions From 47d96480c76921c346c830a574890408a21e889d Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 11:25:13 -0500 Subject: [PATCH 32/43] Actually add rename bip-0053.mediawiki doc --- bip-0053.mediawiki | 162 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 bip-0053.mediawiki diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki new file mode 100644 index 0000000000..f414a5a981 --- /dev/null +++ b/bip-0053.mediawiki @@ -0,0 +1,162 @@ +
+  BIP: 53
+  Layer: Consensus (soft fork)
+  Title: Disallow 64-byte transactions
+  Author: Chris Stewart 
+  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-53
+  Status: Draft
+  Type: Standards Track
+  Created: ?
+  License: BSD-3-Clause
+
+ +==Abstract== + +This BIP describes the rationale for disallowing transactions that are serialized to 64 bytes without the transaction's witness. +We describe the weaknesses to the Merkle tree included in bitcoin block headers, and various exploits for those weaknesses. + +==Specification== + +This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without their witness. + +==Motivation== + +Bitcoin block headers include a commitment to the set of transactions in a given +block, which is implemented by constructing a Merkle tree of transaction ids +(double-SHA256 hash of a transaction) and including the root of the tree in the +block header. This in turn allows for proving to a Bitcoin light client that a +given transaction is in a given block by providing a path through the tree to the +transaction. However, Bitcoin’s particular construction of the Merkle tree has +several security weaknesses, including at least two forms of block malleability +that have an impact on the consensus logic of Bitcoin Core, and an attack on +light clients, where an invalid transaction could be ”proven” to appear in a block +by doing substantially less work than a SHA256 hash collision would require. +This has been prevented by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows transactions that are less than 82 bytes in size from Bitcoin Core relay and RPC interface][https://github.com/bitcoin/bitcoin/commit/8c5b3646b5afe8a61f5c66478d8e11f0d2ce5108 Reduces the minimum transaction size required for a transaction to be considered standard from 82 bytes to 65 bytes]. + +=== Block malleability === + +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 user could find a malicious 64-byte transaction Tm that serializes to T0||T1. +Next the malicious user relays the block containing the malicious Tm rather than the +valid bitcoin transactions that correspond with T0 and T1. + +==== Block malleability with consensus INVALID transactions ==== + +The peer receiving the malicious block marks the block as invalid as Tm +is not a valid transaction according to network consensus rules. +Other peers on the network receive the valid block containing T0 and T1 +and add the block to their blockchain. Peers that receive the invalid block before the valid block +will never come to consensus with their peers due to the malicious user finding a collision +within the block's merkle root. Finding this collision is approximately 22 bits worth of work.[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle +root which is a hash of a 64-byte quantity that deserializes validly, it’s enough +to just do 8 bits of work to find a workable coinbase (which will hash to the first +32 bytes), plus another ≈22 bits of work ((1/5) ∗224, so slightly less) to find +a workable second transaction which will hash to the second 32 bytes) – a very +small amount of computation.] + +This attack vector was fixed in 0.6.2[https://bitcoin.org/en/alert/2012-05-14-dos#risks CVE-2012-2459], re-introduced in 0.13.x[https://github.com/bitcoin/bitcoin/pull/7225 #7225] and patched again in +0.14[https://github.com/bitcoin/bitcoin/pull/9765 #9765] of Bitcoin Core. + +==== Block malleability with consensus VALID transactions ==== + +Producing a valid bitcoin transaction Tm that adheres to network consensus +rules requires 224 bits of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf Note that the first transaction in a block must be a coinbase, and as discussed +above, that largely constrains the first 32 bytes of the first transaction: only +the 4 version bytes are unconstrained. So it would take at least 28*8= 224 bits +of work to find the first node in a given row of the tree that would match the +first half of a coinbase, in addition to the amount of work required to grind the +second half of the transaction to something meaningful (which is much easier – +only 16 bytes or so are constrained, so approximately 128 bits of work to find a collision). Of course, any of the rows in the Merkle tree could be used, but it nevertheless seems clear that this should be computationally infeasible.]. +This is computationally and financially expensive but theoretically possible. This can lead to a persistent chain split on the network. + +=== Attack on SPV clients === + +BIP37[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP37]provides a partial merkle tree format[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki#user-content-Partial_Merkle_branch_format Partial Merkle Tree Format] +that allows you to verify your bitcoin transaction is included in a merkle root embedded in a bitcoin block header. +Notably this format does not commit to the height of the merkle tree. + +Suppose a (valid) 64-byte transaction T is included in a block with the property that the second 32 bytes (which +are less constrained than the first 32 bytes) are constructed so that they collide +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[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/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 of 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.]. + +==Rationale== + +===SPV clients=== + +Attacks on SPV clients could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. +To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. +As mentioned above, this is computionally and financially expensive, but theoretically possible. This design would increase the size +of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/29?u=chris_stewart_5 Base proof: 80 byte header + 448 byte partial merkle tree = 528 bytes. Proof with coinbase tx, assuming the coinbase tx is in the left half of the tree and the tx to prove is in the right half of the tree: 80 byte header + 416 bytes partial merkle tree for coinbase tx + 416 bytes partial merkle tree for tx = 912 bytes.] + +==Backward compatibility== + +There have been 5 64-byte transactions that have occcurred in the bitcoin blockchain as of this +writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64byte-tx-mainnet.txt 64-byte transactions in the bitcoin blockchain] +with the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the bitcoin blockchain] +occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. + +====Pre segwit 64-byte transactions==== + +64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the bitcoin network, bitcoin transactions cannot have a digital signature smaller than 9 bytes.] +The largest scriptSig a 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] + +There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/nonstandard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 nonstandard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] +non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. + +Pre-segwit 64-byte transactions that spend a nonstandard utxo that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] +Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are not consensus rules. If a user has a way to confirm an already non-standard +64-byte transaction - they can malleate the transaction by violating policy rules to change the size of the transaction to a size other than 64 bytes. + +====Segwit 64-byte transactions==== + +This BIP disallows single-input single output segwit transactions that pay to a 2 byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] +The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2 byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1 byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] +for this type of transaction is ephemeral anchor outputs.[https://bitcoinops.org/en/topics/ephemeral-anchors/ What are ephemeral anchor outputs? This allows anyone on the network to use that output as the input to a child transaction. This allows anyone to create the fee-paying child, even if they don’t receive any of the other outputs from the parent transaction. This allows ephemeral anchors to function as fee sponsorship but without requiring any consensus changes.] + +==Reference implementation== + + +/** + * We want to enforce certain rules (specifically the 64-byte transaction check) + * before we call CheckBlock to check the merkle root. This allows us to enforce + * malleability checks which may interact with other CheckBlock checks. + * This is currently called both in AcceptBlock prior to writing the block to + * disk and in ConnectBlock. + * Note that as this is called before merkle-tree checks so must never return a + * non-malleable error condition. + */ +static bool ContextualBlockPreCheck(const CBlock& block, BlockValidationState& state, const ChainstateManager& chainman, const CBlockIndex* pindexPrev) +{ + if (DeploymentActiveAfter(pindexPrev, chainman, Consensus::DEPLOYMENT_64BYTETX)) { + for (const auto& tx : block.vtx) { + if (::GetSerializeSize(TX_NO_WITNESS(tx)) == 64) { + return state.Invalid(BlockValidationResult::BLOCK_MUTATED, "64-byte-transaction", strprintf("size of tx %s without witness is 64 bytes", tx->GetHash().ToString())); + } + } + } + + return true; +} + + +The sample implementation is currently open here: + +https://github.com/bitcoin-inquisition/bitcoin/pull/24/files + +== Rationale == + + + +==Copyright== +This BIP is licensed under the [https://opensource.org/license/BSD-3-Clause BSD-3-Clause License]. + +==Acknowledgements== + +Suhas Daftuar, AJ Towns, Sergio Demian Lerner, Greg Maxwell, Matt Corallo, Antoine Poinsont, Dave Harding and Erik Voskuil From 81ba1d29e3ee11d61874213209693130c6e98316 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 11:26:35 -0500 Subject: [PATCH 33/43] fix comments uri --- bip-0053.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index f414a5a981..05d1a02575 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -3,7 +3,7 @@ Layer: Consensus (soft fork) Title: Disallow 64-byte transactions Author: Chris Stewart - Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-53 + Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0053 Status: Draft Type: Standards Track Created: ? From 13c98f84c4e869258e00227ac7caefe2c2780cca Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 11:54:49 -0500 Subject: [PATCH 34/43] Add valid date --- bip-0053.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index 05d1a02575..38bbd96168 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -6,7 +6,7 @@ Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0053 Status: Draft Type: Standards Track - Created: ? + Created: 2024-12-20 License: BSD-3-Clause
From 980ba8936b1c2b4974b5098ed9542884708d0093 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 12:38:25 -0500 Subject: [PATCH 35/43] Fix date --- bip-0053.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index 38bbd96168..c579fad154 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -6,7 +6,7 @@ Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0053 Status: Draft Type: Standards Track - Created: 2024-12-20 + Created: 2025-04-11 License: BSD-3-Clause From bd815e97e7fb9741596e8bfdd4320c80ec1e487e Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 12:40:21 -0500 Subject: [PATCH 36/43] Be consistent with Merkle capitalization --- bip-0053.mediawiki | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index c579fad154..0331a127ab 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -36,10 +36,10 @@ This has been prevented by Bitcoin Core's relay policy and the RPC interface sin === Block malleability === 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. +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). +The Merkle root for this block is H(T0||T1). A user could find a malicious 64-byte transaction Tm that serializes to T0||T1. Next the malicious user relays the block containing the malicious Tm rather than the valid bitcoin transactions that correspond with T0 and T1. @@ -51,7 +51,7 @@ is not a valid transaction according to network consensus rules. Other peers on the network receive the valid block containing T0 and T1 and add the block to their blockchain. Peers that receive the invalid block before the valid block will never come to consensus with their peers due to the malicious user finding a collision -within the block's merkle root. Finding this collision is approximately 22 bits worth of work.[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle +within the block's Merkle root. Finding this collision is approximately 22 bits worth of work.[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf to produce a block that has a Merkle root which is a hash of a 64-byte quantity that deserializes validly, it’s enough to just do 8 bits of work to find a workable coinbase (which will hash to the first 32 bytes), plus another ≈22 bits of work ((1/5) ∗224, so slightly less) to find @@ -75,25 +75,25 @@ This is computationally and financially expensive but theoretically possible. Th === Attack on SPV clients === -BIP37[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP37]provides a partial merkle tree format[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki#user-content-Partial_Merkle_branch_format Partial Merkle Tree Format] -that allows you to verify your bitcoin transaction is included in a merkle root embedded in a bitcoin block header. -Notably this format does not commit to the height of the merkle tree. +BIP37[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP37]provides a partial Merkle tree format[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki#user-content-Partial_Merkle_branch_format Partial Merkle Tree Format] +that allows you to verify your bitcoin transaction is included in a Merkle root embedded in a bitcoin block header. +Notably this format does not commit to the height of the Merkle tree. Suppose a (valid) 64-byte transaction T is included in a block with the property that the second 32 bytes (which are less constrained than the first 32 bytes) are constructed so that they collide 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[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/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 of 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. This also reduces implementation complexity of 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.]. ==Rationale== ===SPV clients=== -Attacks on SPV clients could be mitigated by knowing the depth of the merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. +Attacks on SPV clients could be mitigated by knowing the depth of the Merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. As mentioned above, this is computionally and financially expensive, but theoretically possible. This design would increase the size -of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/29?u=chris_stewart_5 Base proof: 80 byte header + 448 byte partial merkle tree = 528 bytes. Proof with coinbase tx, assuming the coinbase tx is in the left half of the tree and the tx to prove is in the right half of the tree: 80 byte header + 416 bytes partial merkle tree for coinbase tx + 416 bytes partial merkle tree for tx = 912 bytes.] +of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/29?u=chris_stewart_5 Base proof: 80 byte header + 448 byte partial Merkle tree = 528 bytes. Proof with coinbase tx, assuming the coinbase tx is in the left half of the tree and the tx to prove is in the right half of the tree: 80 byte header + 416 bytes partial Merkle tree for coinbase tx + 416 bytes partial Merkle tree for tx = 912 bytes.] ==Backward compatibility== @@ -125,7 +125,7 @@ for this type of transaction is ephemeral anchor outputs.[https://bitcoinop /** * We want to enforce certain rules (specifically the 64-byte transaction check) - * before we call CheckBlock to check the merkle root. This allows us to enforce + * before we call CheckBlock to check the Merkle root. This allows us to enforce * malleability checks which may interact with other CheckBlock checks. * This is currently called both in AcceptBlock prior to writing the block to * disk and in ConnectBlock. From cd4ad3767416ebd8a404b8052dc0799a572b3252 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 12:43:07 -0500 Subject: [PATCH 37/43] consistently use 'non-standard' throughout the doc --- bip-0053.mediawiki | 4 ++-- ...ard-hashlock-utxos.txt => non-standard-hashlock-utxos.txt} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename bip-XXXX/{nonstandard-hashlock-utxos.txt => non-standard-hashlock-utxos.txt} (100%) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index 0331a127ab..09ffe886bc 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -107,10 +107,10 @@ occurring at block height 419,606[https://mempool.space/block/0000000000000 64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the bitcoin network, bitcoin transactions cannot have a digital signature smaller than 9 bytes.] The largest scriptSig a 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] -There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/nonstandard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 nonstandard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] +There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/non-standard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 non-standard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. -Pre-segwit 64-byte transactions that spend a nonstandard utxo that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] +Pre-segwit 64-byte transactions that spend a non-standard utxo that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are not consensus rules. If a user has a way to confirm an already non-standard 64-byte transaction - they can malleate the transaction by violating policy rules to change the size of the transaction to a size other than 64 bytes. diff --git a/bip-XXXX/nonstandard-hashlock-utxos.txt b/bip-XXXX/non-standard-hashlock-utxos.txt similarity index 100% rename from bip-XXXX/nonstandard-hashlock-utxos.txt rename to bip-XXXX/non-standard-hashlock-utxos.txt From 734490db0b4a6d418aa817e390bc9699bd98d60f Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 12:44:03 -0500 Subject: [PATCH 38/43] Rename folder from bip-XXXXX/ -> bip-0053/ --- {bip-XXXX => bip-0053}/2-BitcoinMerkle.pdf | Bin {bip-XXXX => bip-0053}/64byte-tx-mainnet.txt | 0 .../non-standard-hashlock-utxos.txt | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {bip-XXXX => bip-0053}/2-BitcoinMerkle.pdf (100%) rename {bip-XXXX => bip-0053}/64byte-tx-mainnet.txt (100%) rename {bip-XXXX => bip-0053}/non-standard-hashlock-utxos.txt (100%) diff --git a/bip-XXXX/2-BitcoinMerkle.pdf b/bip-0053/2-BitcoinMerkle.pdf similarity index 100% rename from bip-XXXX/2-BitcoinMerkle.pdf rename to bip-0053/2-BitcoinMerkle.pdf diff --git a/bip-XXXX/64byte-tx-mainnet.txt b/bip-0053/64byte-tx-mainnet.txt similarity index 100% rename from bip-XXXX/64byte-tx-mainnet.txt rename to bip-0053/64byte-tx-mainnet.txt diff --git a/bip-XXXX/non-standard-hashlock-utxos.txt b/bip-0053/non-standard-hashlock-utxos.txt similarity index 100% rename from bip-XXXX/non-standard-hashlock-utxos.txt rename to bip-0053/non-standard-hashlock-utxos.txt From 2da76cc13672671c3f73bf6ac1d6c0111ba48bda Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 12:59:20 -0500 Subject: [PATCH 39/43] Addres more Murch review --- bip-0053.mediawiki | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index 09ffe886bc..1e7e892d83 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -31,7 +31,7 @@ several security weaknesses, including at least two forms of block malleability that have an impact on the consensus logic of Bitcoin Core, and an attack on light clients, where an invalid transaction could be ”proven” to appear in a block by doing substantially less work than a SHA256 hash collision would require. -This has been prevented by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows transactions that are less than 82 bytes in size from Bitcoin Core relay and RPC interface][https://github.com/bitcoin/bitcoin/commit/8c5b3646b5afe8a61f5c66478d8e11f0d2ce5108 Reduces the minimum transaction size required for a transaction to be considered standard from 82 bytes to 65 bytes]. +This has been mitigated by Bitcoin Core's relay policy and the RPC interface since 2018[https://github.com/bitcoin/bitcoin/pull/11423/commits/7485488e907e236133a016ba7064c89bf9ab6da3 PR #11423 disallows transactions that are less than 82 bytes in size from Bitcoin Core relay and RPC interface][https://github.com/bitcoin/bitcoin/commit/8c5b3646b5afe8a61f5c66478d8e11f0d2ce5108 Reduces the minimum transaction size required for a transaction to be considered standard from 82 bytes to 65 bytes]. === Block malleability === @@ -55,7 +55,7 @@ within the block's Merkle root. Finding this collision is approximately 22 bits root which is a hash of a 64-byte quantity that deserializes validly, it’s enough to just do 8 bits of work to find a workable coinbase (which will hash to the first 32 bytes), plus another ≈22 bits of work ((1/5) ∗224, so slightly less) to find -a workable second transaction which will hash to the second 32 bytes) – a very +a workable second transaction which will hash to the second 32 bytes)– a very small amount of computation.] This attack vector was fixed in 0.6.2[https://bitcoin.org/en/alert/2012-05-14-dos#risks CVE-2012-2459], re-introduced in 0.13.x[https://github.com/bitcoin/bitcoin/pull/7225 #7225] and patched again in @@ -76,7 +76,7 @@ This is computationally and financially expensive but theoretically possible. Th === Attack on SPV clients === BIP37[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP37]provides a partial Merkle tree format[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki#user-content-Partial_Merkle_branch_format Partial Merkle Tree Format] -that allows you to verify your bitcoin transaction is included in a Merkle root embedded in a bitcoin block header. +that allows you to verify that your bitcoin transaction is included in a Merkle root embedded in a bitcoin block header. Notably this format does not commit to the height of the Merkle tree. Suppose a (valid) 64-byte transaction T is included in a block with the property that the second 32 bytes (which @@ -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[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/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 of 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. 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.]. ==Rationale== @@ -104,8 +104,8 @@ occurring at block height 419,606[https://mempool.space/block/0000000000000 ====Pre segwit 64-byte transactions==== -64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the bitcoin network, bitcoin transactions cannot have a digital signature smaller than 9 bytes.] -The largest scriptSig a 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] +Pre-segwit 64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the bitcoin network, bitcoin transactions cannot have a digital signature smaller than 9 bytes.] +The largest scriptSig a pre-segwit 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/non-standard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 non-standard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. @@ -116,8 +116,8 @@ Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are not consensus rules. ====Segwit 64-byte transactions==== -This BIP disallows single-input single output segwit transactions that pay to a 2 byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] -The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2 byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1 byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] +This BIP disallows single-input single-output segwit transactions that pay to a 2 byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] +The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2 byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1-byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] for this type of transaction is ephemeral anchor outputs.[https://bitcoinops.org/en/topics/ephemeral-anchors/ What are ephemeral anchor outputs? This allows anyone on the network to use that output as the input to a child transaction. This allows anyone to create the fee-paying child, even if they don’t receive any of the other outputs from the parent transaction. This allows ephemeral anchors to function as fee sponsorship but without requiring any consensus changes.] ==Reference implementation== From f797b9f5ef2ed7f0ef91985cf8a4f7c0970e2119 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 14:09:50 -0500 Subject: [PATCH 40/43] consistently use 'Bitcoin' rather than 'bitcoin' --- bip-0053.mediawiki | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index 1e7e892d83..99776a5871 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -13,11 +13,11 @@ ==Abstract== This BIP describes the rationale for disallowing transactions that are serialized to 64 bytes without the transaction's witness. -We describe the weaknesses to the Merkle tree included in bitcoin block headers, and various exploits for those weaknesses. +We describe the weaknesses to the Merkle tree included in Bitcoin block headers, and various exploits for those weaknesses. ==Specification== -This BIP disallows bitcoin transactions that are serialized to 64 bytes in length without their witness. +This BIP disallows Bitcoin transactions that are serialized to 64 bytes in length without their witness. ==Motivation== @@ -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. +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 user could find a malicious 64-byte transaction Tm that serializes to T0||T1. Next the malicious 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 with T0 and T1. ==== Block malleability with consensus INVALID transactions ==== @@ -63,7 +63,7 @@ This attack vector was fixed in 0.6.2[https://bitcoin.org/en/alert/2012-05- ==== Block malleability with consensus VALID transactions ==== -Producing a valid bitcoin transaction Tm that adheres to network consensus +Producing a valid Bitcoin transaction Tm that adheres to network consensus rules requires 224 bits of work[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf Note that the first transaction in a block must be a coinbase, and as discussed above, that largely constrains the first 32 bytes of the first transaction: only the 4 version bytes are unconstrained. So it would take at least 28*8= 224 bits @@ -76,13 +76,13 @@ This is computationally and financially expensive but theoretically possible. Th === Attack on SPV clients === BIP37[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP37]provides a partial Merkle tree format[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki#user-content-Partial_Merkle_branch_format Partial Merkle Tree Format] -that allows you to verify that your bitcoin transaction is included in a Merkle root embedded in a bitcoin block header. +that allows you to verify that your Bitcoin transaction is included in a Merkle root embedded in a Bitcoin block header. Notably this format does not commit to the height of the Merkle tree. Suppose a (valid) 64-byte transaction T is included in a block with the property that the second 32 bytes (which are less constrained than the first 32 bytes) are constructed so that they collide 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[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/2-BitcoinMerkle.pdf An attacker who can do 81 bits of work (followed by another 40 bits of work, to +was included in a Bitcoin block rather than T with 81 bits[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/bip-XXXX/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.]. @@ -97,18 +97,18 @@ of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup- ==Backward compatibility== -There have been 5 64-byte transactions that have occcurred in the bitcoin blockchain as of this -writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64byte-tx-mainnet.txt 64-byte transactions in the bitcoin blockchain] -with the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the bitcoin blockchain] +There have been 5 64-byte transactions that have occcurred in the Bitcoin blockchain as of this +writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64byte-tx-mainnet.txt 64-byte transactions in the Bitcoin blockchain] +with the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the Bitcoin blockchain] occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. ====Pre segwit 64-byte transactions==== -Pre-segwit 64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the bitcoin network, bitcoin transactions cannot have a digital signature smaller than 9 bytes.] +Pre-segwit 64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the Bitcoin network, Bitcoin transactions cannot have a digital signature smaller than 9 bytes.] The largest scriptSig a pre-segwit 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/non-standard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 non-standard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] -non standard hashlock utxos in the bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. +non standard hashlock utxos in the Bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. Pre-segwit 64-byte transactions that spend a non-standard utxo that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are not consensus rules. If a user has a way to confirm an already non-standard From acda401f9c4bd150dfb082e1356e4d6c646f6433 Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 14:13:57 -0500 Subject: [PATCH 41/43] fix acronym capitalization: utxo -> UTXO --- bip-0053.mediawiki | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index 99776a5871..e48add19ae 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -104,13 +104,13 @@ occurring at block height 419,606[https://mempool.space/block/0000000000000 ====Pre segwit 64-byte transactions==== -Pre-segwit 64-byte transactions cannot spend a utxo protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the Bitcoin network, Bitcoin transactions cannot have a digital signature smaller than 9 bytes.] +Pre-segwit 64-byte transactions cannot spend a UTXO protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the Bitcoin network, Bitcoin transactions cannot have a digital signature smaller than 9 bytes.] The largest scriptSig a pre-segwit 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] -There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/non-standard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 non-standard hashlock utxos that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] -non standard hashlock utxos in the Bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. +There are 6[https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/non-standard-hashlock-utxos.txt As of block `00000000000000000001194ae6be942619bf61aa70822b9643d01c1a441bf2b7` there exist 6 non-standard hashlock UTXOs that could theoretically have a 0-3 byte pre-image. None of them have a 0-3 byte pre-image.] +non standard hashlock UTXOs in the Bitcoin blockchain. None of them have a 0-3 byte pre-image. This means they cannot be spent by a 64-byte transaction. -Pre-segwit 64-byte transactions that spend a non-standard utxo that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] +Pre-segwit 64-byte transactions that spend a non-standard UTXO that are inherently malleable.[https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#trust-free-unconfirmed-transaction-dependency-chain Details on how to malleate a pre-segwit transaction] Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are not consensus rules. If a user has a way to confirm an already non-standard 64-byte transaction - they can malleate the transaction by violating policy rules to change the size of the transaction to a size other than 64 bytes. From 5a890366db2f8cf4a3a2a4c38e1c65590d45e6ef Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Tue, 22 Apr 2025 14:21:57 -0500 Subject: [PATCH 42/43] Remove extra 'Rationale' section, addressed missed code review from Murch --- bip-0053.mediawiki | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index e48add19ae..3955d68019 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -93,7 +93,7 @@ to fool an SPV client in this way.] of work. This also reduces implementat Attacks on SPV clients could be mitigated by knowing the depth of the Merkle tree. Requiring SPV clients to request both the coinbase and payment transaction could mitigate this attack. To produce a valid coinbase transaction at the same depth that our fake transaction F occurs at would require 224 bits of work. As mentioned above, this is computionally and financially expensive, but theoretically possible. This design would increase the size -of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/29?u=chris_stewart_5 Base proof: 80 byte header + 448 byte partial Merkle tree = 528 bytes. Proof with coinbase tx, assuming the coinbase tx is in the left half of the tree and the tx to prove is in the right half of the tree: 80 byte header + 416 bytes partial Merkle tree for coinbase tx + 416 bytes partial Merkle tree for tx = 912 bytes.] +of SPV proofs by 70%.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/29?u=chris_stewart_5 Base proof: 80-byte header + 448-byte partial Merkle tree = 528 bytes. Proof with coinbase tx, assuming the coinbase tx is in the left half of the tree and the tx to prove is in the right half of the tree: 80-byte header + 416 bytes partial Merkle tree for coinbase tx + 416 bytes partial Merkle tree for tx = 912 bytes.] ==Backward compatibility== @@ -102,7 +102,7 @@ writing [https://github.com/Christewart/bips/blob/2024-12-20-64bytetxs/64by with the last transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612[https://mempool.space/tx/7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612 Last 64-byte transaction in the Bitcoin blockchain] occurring at block height 419,606[https://mempool.space/block/000000000000000000308f1efc24419f34a3bafcc2b53c32dd57e4502865fd84 Block 419,606]. -====Pre segwit 64-byte transactions==== +====Pre-segwit 64-byte transactions==== Pre-segwit 64-byte transactions cannot spend a UTXO protected by a digital signature.[https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki After BIP66 was activated on the Bitcoin network, Bitcoin transactions cannot have a digital signature smaller than 9 bytes.] The largest scriptSig a pre-segwit 64-byte transaction can have is 4 bytes.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73] @@ -116,8 +116,8 @@ Policy rules such as CLEANSTACK, MINIMALDATA, PUSHONLY are not consensus rules. ====Segwit 64-byte transactions==== -This BIP disallows single-input single-output segwit transactions that pay to a 2 byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] -The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2 byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1-byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] +This BIP disallows single-input single-output segwit transactions that pay to a 2-byte witness program.[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/73#p-4382-future-segwit-versions-10 BIP141 says witness programs can be 2 bytes in size, which makes the scriptPubKey a total of 4 bytes] +The only known use case[https://bitcoin.stackexchange.com/a/110664 Why do we have 2-byte witness programs? The original rationale for the lower end of the range of valid witness program lengths is that 2 bytes is enough to guarantee no ambiguity of how the program would be pushed (some 1-byte values can - and according to standardness, must - be pushed with OP_n, and dealing with those would have complicated the matter).] for this type of transaction is ephemeral anchor outputs.[https://bitcoinops.org/en/topics/ephemeral-anchors/ What are ephemeral anchor outputs? This allows anyone on the network to use that output as the input to a child transaction. This allows anyone to create the fee-paying child, even if they don’t receive any of the other outputs from the parent transaction. This allows ephemeral anchors to function as fee sponsorship but without requiring any consensus changes.] ==Reference implementation== @@ -150,8 +150,6 @@ The sample implementation is currently open here: https://github.com/bitcoin-inquisition/bitcoin/pull/24/files -== Rationale == - ==Copyright== From fd3bc98ba467ffbdb6e1df463a3cf9e64d0781bf Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Wed, 23 Apr 2025 13:20:06 -0500 Subject: [PATCH 43/43] Update bip-0053.mediawiki Co-authored-by: Mark "Murch" Erhardt --- bip-0053.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-0053.mediawiki b/bip-0053.mediawiki index 3955d68019..9ba63f0d81 100644 --- a/bip-0053.mediawiki +++ b/bip-0053.mediawiki @@ -157,4 +157,4 @@ This BIP is licensed under the [https://opensource.org/license/BSD-3-Clause BSD- ==Acknowledgements== -Suhas Daftuar, AJ Towns, Sergio Demian Lerner, Greg Maxwell, Matt Corallo, Antoine Poinsont, Dave Harding and Erik Voskuil +Suhas Daftuar, AJ Towns, Sergio Demian Lerner, Greg Maxwell, Matt Corallo, Antoine Poinsot, Dave Harding and Eric Voskuil