{"number":54,"title":"Consensus Cleanup","authors":["Antoine Poinsot","Matt Corallo"],"status":"Complete","type":"Specification","layer":"Consensus (soft fork)","created":"2025-04-11","license":"CC0-1.0","requires":[],"replaces":[],"replacedBy":[],"discussion":[],"abstract":"This document proposes new consensus rules in order to fix the timewarp attack, reduce the worst case block validation time, prevent Merkle tree weaknesses, and avoid duplicate transactions without bip-0030 validation.","eli5":"Bundles fixes for several long-standing protocol weaknesses: the timewarp attack (manipulating block timestamps to speed up coin issuance), blocks that take extremely long to validate, Merkle tree flaws, and duplicate transactions. Together these soft-fork rule changes make the network more robust against rare but real attacks.","categories":["consensus","transactions"],"filename":"bip-0054.md","githubUrl":"https://github.com/bitcoin/bips/blob/master/bip-0054.md","format":"markdown","readingMinutes":11,"inbound":1,"revisions":30,"impact":67,"core":false,"references":[],"lastModified":"2026-10-02","html":"<h2 id=\"abstract\">Abstract</h2>\n<p>This document proposes new consensus rules in order to fix the timewarp attack, reduce the worst\ncase block validation time, prevent Merkle tree weaknesses, and avoid duplicate transactions without\n<a href=\"https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki\">bip-0030</a> validation.</p>\n<h2 id=\"motivation\">Motivation</h2>\n<p>This proposal addresses a number of long-standing vulnerabilities and weaknesses in the Bitcoin\nprotocol. Bundling these fixes together amortizes the fixed cost of deploying a Bitcoin soft fork.</p>\n<p>The <a href=\"https://bitcoin.stackexchange.com/questions/75831/what-is-time-warp-attack-and-how-does-it-work-in-general/75834#75834\">timewarp bug</a> makes it possible for a majority-hashrate attacker to arbitrarily\nlower mining difficulty, and therefore arbitrarily increase the block rate. In the worst case, an\nattacker can bring down the difficulty to its minimum within 38 days of starting the attack. Besides\nempowering a 51% attacker, the presence of this bug makes it harder to reason about miners&#39;\nincentives. Accelerating the block rate allows an attacker to steal block subsidy from future\nminers and increases available block space. It may be in the interest of short-sighted users and\nminers to exploit this vulnerability to materially increase the block rate without fatally hurting\nthe network.</p>\n<p>Specially crafted blocks may be expensive to process, <a href=\"https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/93\">taking up to</a> several\nminutes to validate even on high-end devices, and up to a few hours on lower-end devices. Long block\nvalidation times are a nuisance to users, increasing the cost to independently fully validate the\nconsensus rules. In addition they can be used by miners to attack their competition, creating\nperverse incentives, centralization pressures and leading to reduced network security.</p>\n<p>In computing a block&#39;s Merkle root, a transaction with exactly 64 bytes of non-witness data can be\ninterpreted both as an intermediate node in the tree and as a leaf in the tree. This makes it\npossible to trick an SPV verifier into accepting an inclusion proof for a transaction that is not\npart of a block, by pretending a 64-byte block transaction is actually an inner node[^9]. Invalidating\n64-byte transactions addresses this vulnerability without requiring users of SPV verifiers, or\nany other user of Merkle proofs, to rely on one of the available workarounds[^13] or even to know one is\nnecessary in the first place.</p>\n<p>Since <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki\">bip-0034</a> activation, explicit <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki\">bip-0030</a> validation is not necessary until\nblock height 1,983,702[^0]. Resuming <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki\">bip-0030</a> validation would unnecessarily increase block\nvalidation overhead and preclude alternative full node designs (such as <a href=\"https://github.com/bitcoin/bips/pull/1923\">bip-0182</a> Utreexo).\nEnforcing that new coinbase transactions are different from the early <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki\">bip-0034</a> violations\nmakes it possible to get rid of <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki\">bip-0030</a> validation forever.</p>\n<h2 id=\"specification\">Specification</h2>\n<p>For all blocks after activation the following new rules apply.</p>\n<p>Given a block at height <code>N</code>:</p>\n<ul>\n<li>if <code>N % 2016</code> is equal to 0, the timestamp of the block must be set to a value higher than or\nequal to the value of the timestamp of block at height <code>N-1</code> minus 7200 (T<sub>N</sub> &ge;\nT<sub>N−1</sub> − 7200) seconds;</li>\n<li>if <code>N % 2016</code> is equal to 2015, the timestamp of the block must be set to a value higher than\nor equal to the value of the timestamp of the block at height <code>N-2015</code> (T<sub>N</sub> &ge;\nT<sub>N−2015</sub>).</li>\n</ul>\n<p>A limit is set on the number of signature operations present in the scripts used to validate a\ntransaction. It applies to all transactions in the block except the coinbase transaction[^1]. For\neach input in the transaction, count the number of signature operations from <code>CHECKSIG</code>(<code>VERIFY</code>) and <code>CHECKMULTISIG</code>(<code>VERIFY</code>) in the input\nscriptSig and previous output&#39;s scriptPubKey, including the P2SH redeemScript. If the total summed\nover all transaction inputs is strictly higher than 2500, the transaction is invalid. The accounting is the\nsame as for <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki#specification\">bip-0016</a>, evaluating the scriptSig, scriptPubKey, and P2SH redeemScript\nseparately:</p>\n<ol>\n<li><code>CHECKSIG</code> and <code>CHECKSIGVERIFY</code> each count as 1 signature operation, whether or not they are evaluated.</li>\n<li><code>CHECKMULTISIG</code> and <code>CHECKMULTISIGVERIFY</code> immediately preceded by <code>OP_1</code> through <code>OP_16</code> are counted as 1 to 16 signature operations, whether or not they are evaluated.</li>\n<li>All other <code>CHECKMULTISIG</code> and <code>CHECKMULTISIGVERIFY</code> are counted as 20 signature operations, whether or not they are evaluated.</li>\n</ol>\n<p>Transactions whose witness-stripped serialized size is exactly 64 bytes are invalid.</p>\n<p>The coinbase transaction&#39;s <code>nLockTime</code> field must be set to the height of the block minus 1[^2]\nand its <code>nSequence</code> field must not be equal to 0xffffffff.</p>\n<h2 id=\"rationale\">Rationale</h2>\n<p>The restrictions on the timestamp of the first and last blocks of a difficulty adjustment period fix\nthe timewarp and Murch–Zawy vulnerabilities[^3]. The latter poses mostly theoretical concerns but is\nextremely low risk to fix: the duration of an adjustment period has never been, and should never be,\nnegative. The former is fixed by preventing the timestamp of the first block of a difficulty period\nfrom being lower than the previous block&#39;s, with a two-hour grace period. A <a href=\"https://github.com/TheBlueMatt/bips/blob/7f9670b643b7c943a0cc6d2197d3eabe661050c2/bip-XXXX.mediawiki\">previous\nproposal</a> to fix the timewarp attack used a ten-minute grace period instead, and this\napproach has been adopted for <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0094.mediawiki#time-warp-fix\">testnet4</a>. Out of an abundance of caution and because it only trivially worsens the\nblock rate increase under attack, a two-hour grace period is used here[^4].</p>\n<p>Disabling some Script operations and functionalities was <a href=\"https://github.com/TheBlueMatt/bips/blob/7f9670b643b7c943a0cc6d2197d3eabe661050c2/bip-XXXX.mediawiki\">previously proposed</a> to reduce\nthe worst case block validation time but was met with resistance due to confiscation concerns[^5]. A\ndelicate balance needs to be struck between minimizing the confiscation risks of a mitigation, even\nif merely theoretical, and bounding the costs one could impose on all other users of the system. To\nthat end, limiting potentially executed signature operations targets the exact harmful behaviour while\npreserving maximal flexibility in Script usage.\nSuch a limit reduces the worst case block validation time by a factor of 40 and drastically\nincreases the preparation cost of an attack, making it uneconomical for a miner[^6]. The maximum of\n2500 was chosen as the tightest value that did not make any non-pathological standard transaction\ninvalid[^7].</p>\n<p>64-byte transactions can only contain a scriptPubKey that lets anyone spend the funds, or one that\nburns them. They have also been non-standard since 2019 and never been used since 2016.  Several\nalternatives to invalidating them were previously proposed. Some believe the improvements for users\nof Merkle proofs are too marginal to be worth introducing a discontinuity in the set of valid\nwitness-stripped transaction sizes (discussion <a href=\"https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/41\">here</a>). Others have suggested instead committing to the Merkle\ntree depth in the header&#39;s version field[^8], or even invalidating Merkle tree nodes that correspond\nto a valid serialisation for a Bitcoin transaction[^14]. These options make some of the available\nworkarounds[^13] easier to deploy. The authors believe it is preferable to address the root cause by\ninvalidating 64-byte transactions. This fixes the vulnerability for users relying on Merkle proofs\nof non-64-byte transactions, without requiring a workaround.</p>\n<p>The <code>nLockTime</code> field of transactions is a natural place to store a block height and is currently\nunused in coinbase transactions. Using it to enforce that new coinbase transactions differ from\nearly <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki\">bip-0034</a> violations also allows applications to recover the block height without\nhaving to parse Script. Leveraging the existing timelock mechanism makes the check self-contained:\nthe same coinbase transaction cannot have been valid in a previous block[^11]. This simplifies both\nreasoning and client implementation, since the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki\">bip-0030</a> check can be skipped entirely past\nConsensus Cleanup activation, regardless of the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki\">bip-0034</a> activation status[^12]. One person\n<a href=\"https://groups.google.com/g/bitcoinminingdev/c/jlqlNHHNSNk\">raised the concern</a> that the <code>nLockTime</code> field would be an ideal extranonce\nfor ASIC controllers if such controllers ever became a bottleneck in mining operations. Others\n<a href=\"https://groups.google.com/g/bitcoinminingdev/c/jlqlNHHNSNk\">replied</a> that the same benefits could be achieved by using a dummy output\ninstead, should that ever become necessary. The authors <a href=\"https://gnusha.org/pi/bitcoindev/UsKuvCXXhSAnNVx5a0K2UfP3srAr3slW9mcOjtYk9LnolaOXfWrW9jpqbxsQQPkyQuZogkhz2Hbfwii2VsTm79vRDpgKduxk35hpBu_t7Do=@protonmail.com/\">believe</a> the\nbenefits of using <code>nLockTime</code> to differentiate coinbase transactions outweigh the theoretical\ncost of making it unavailable for extranonce rolling by ASIC controllers.</p>\n<h2 id=\"backward-compatibility\">Backward compatibility</h2>\n<p>This proposal only tightens the block validation rules: there is no block that is valid under the\nrules proposed in this BIP but not under the existing Bitcoin consensus rules. As a consequence\nthese changes are backward-compatible with non-upgraded node software. That said, the authors\nstrongly encourage node operators to upgrade in order to fully validate all consensus rules.</p>\n<h2 id=\"miner-forward-compatibility\">Miner forward compatibility</h2>\n<p>Bitcoin Core version <a href=\"https://bitcoincore.org/en/releases/29.0\">29.0</a> and later will not generate a block template that violates\nthe timestamp restrictions introduced in this BIP. Although it would be extremely unlikely due to\nthe grace period used in this proposal, miners should use the <code>curtime</code> or <code>mintime</code> field from the\n<code>getblocktemplate</code> result for their block&#39;s timestamp to make sure they always create blocks valid\naccording to this proposal. Note this is not a new requirement: using a timestamp lower than the\n<code>mintime</code> field from the <code>getblocktemplate</code> result already leads to creating an invalid block.</p>\n<p>Bitcoin Core version <a href=\"https://bitcoincore.org/en/releases/30.0\">30.0</a> and later will not generate a block template including a\ntransaction that violates the signature operations limit introduced in this BIP.</p>\n<p>Bitcoin Core version <a href=\"https://bitcoincore.org/en/releases/0.16.1\">0.16.1</a> and later will neither relay nor create block templates\nthat include transactions whose witness-stripped serialized size is exactly 64 bytes.</p>\n<p>The coinbase transaction is usually crafted by mining pool software. To the best of the authors&#39;\nknowledge, there does not exist an open source reference broadly in use today for such software.\nWe encourage mining pools to update their software to craft coinbase transactions that are\nforward-compatible with the changes proposed in this BIP.</p>\n<h2 id=\"reference-implementation\">Reference implementation</h2>\n<p>An implementation of BIP54 for Bitcoin Core is available <a href=\"https://github.com/bitcoin/bitcoin/pull/35793\">here</a>.</p>\n<h2 id=\"test-vectors\">Test vectors</h2>\n<p>Documented test vectors are available <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0054/test_vectors/\">here</a> for all mitigations\nintroduced in this BIP.</p>\n<h2 id=\"acknowledgements\">Acknowledgements</h2>\n<p>This document builds upon an <a href=\"https://github.com/TheBlueMatt/bips/blob/7f9670b643b7c943a0cc6d2197d3eabe661050c2/bip-XXXX.mediawiki\">earlier proposal</a> by Matt Corallo.</p>\n<p>The authors would like to thank everyone involved in researching the most appropriate mitigation for\neach of these bugs. We would like to thank in particular Anthony Towns and Sjors Provoost for their\ndirect contributions to this proposal, as well as @0xb10c and Brian Groll for providing the authors\nwith data to analyze the proposed mitigations. Thanks to Chris Stewart for digging up historical\nviolations to the new transaction size rule, which are partially reused in this BIP&#39;s test vectors.</p>\n<h2 id=\"copyright\">Copyright</h2>\n<p>This document is licensed under the Creative Commons CC0 1.0 Universal license.</p>\n<h2 id=\"changelog\">Changelog</h2>\n<ul>\n<li><strong>1.0.0</strong> (2026-05-22):<ul>\n<li>Complete planned work on the BIP.</li>\n</ul>\n</li>\n</ul>\n<p>[^0]: Block 1,983,702 is the earliest future block which could contain a duplicate coinbase\ntransaction while still respecting <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki\">bip-0034</a>. See <a href=\"https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/4\">this post</a> for a list\nof all such future blocks.\n[^1]: Technically this limit <em>cannot</em> apply to a coinbase transaction as the size of its sole\ninput&#39;s scriptSig is limited.\n[^2]: The locktime validation, which is also performed for coinbase transactions, enforces that the\nnLockTime value is the last block at which a transaction is invalid, not the first one at which it\nis valid.\n[^3]: The timewarp attack is described <a href=\"https://bitcoin.stackexchange.com/questions/75831/what-is-time-warp-attack-and-how-does-it-work-in-general/75834#75834\">here</a> and the Murch–Zawy attack <a href=\"https://delvingbitcoin.org/t/zawy-s-alternating-timestamp-attack/1062#variant-on-zawys-attack-2\">here</a>.\n[^4]: The testnet4 difficulty exception pushed blocks&#39; timestamps in the future when abused,\nrevealing how some broken pool software may produce blocks that don&#39;t respect a 10 minutes grace\nperiod. Some <a href=\"https://delvingbitcoin.org/t/timewarp-attack-600-second-grace-period/1326\">raised concerns</a> similarly broken software might be used on\nmainnet. Using a grace period of 2 hours instead of 10 minutes only reduces the expected block\ninterval time under attack by ~2.2 seconds. See <a href=\"https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/66\">this post</a> for more.\n[^5]: The argument is about someone having a timelocked presigned transaction using some of those\nfeatures in its output script. The transaction cannot be mined before activation. Such outputs would\nnot be covered by an amnesty for old UTxOs. See for instance <a href=\"https://gnusha.org/pi/bitcoindev/CAMZUoKneArC+YZ36YFwxNTKsDtJhEz5P2cosXKxJS8Rf_3Nyuw@mail.gmail.com\">here</a> and\n<a href=\"https://gnusha.org/pi/bitcoindev/CAMZUoK=1kgZLR1YZ+cJgzwmEOwrABYFs=2Ri=xGX=BCr+w=VQw@mail.gmail.com\">here</a> for discussions on this topic.\n[^6]: It is important to reduce the worst case block validation time as well as the ratio of\nvalidation time imposed over preparation cost. The former is to limit the damages an externally\nmotivated attacker can do. The latter is to disincentivize miners slowing down their competition by\nmining expensive blocks. See <a href=\"https://gnusha.org/pi/bitcoindev/VsltJ2PHqWfzG4BU9YETTXjL7fYBbJhjVXKZQyItemySIA1okvNee9kf0zAOyLMeJ4Nqv1VOrYbWns5nP4TANCWvPJYu1ew_yxQSaudizzk=@protonmail.com\">this thread</a> for more.\n[^7]: A non-pathological transaction would have a public key per signature operation and at least\none signature per input. Per standardness a single P2SH input may not have more than 15 signature\noperations. Even by using 1-of-15 <code>CHECKMULTISIG</code>s a transaction would bump against the maximum\nstandard transaction size before running into the newly introduced limit. To run against the newly\nintroduced limit but not the transaction size a transaction would need to spend P2SH inputs with a\nredeem script similar to <code>CHECKSIG DROP CHECKSIG DROP ...</code>. This type of redeem script serves no\npurpose beyond increasing its validation cost, which is exactly what this proposal aims to mitigate.\n[^8]: By Sergio Demian Lerner in a <a href=\"https://bitslog.com/2018/06/09/leaf-node-weakness-in-bitcoin-merkle-tree-design\">blog post</a>.\n[^9]: Conversely, pretending that the inner nodes on one level of the tree are the actual block\ntransactions is another source of complexity for full node implementations, which previously\nresulted in consensus bugs. For instance, Bitcoin Core versions between 0.13.0 and 0.13.2\nimplemented caching that made it vulnerable to this attack. See <a href=\"https://gnusha.org/pi/bitcoindev/CAFp6fsGtEm9p-ZQF_XqfqyQGzZK7BS2SNp2z680QBsJiFDraEA@mail.gmail.com\">this writeup</a> by\nSuhas Daftuar for a detailed explanation. Invalidating 64-byte transactions may avoid this risk, but\nthe issue is largely orthogonal to this proposal: it is fundamentally about caching validation\nstatus for malleable blocks.\n[^11]: Technically it could be argued a duplicate could in principle always be possible before block\n31,001 when <code>nLockTime</code> enforcement <a href=\"https://bitcoin.stackexchange.com/questions/90229/nlocktime-in-bitcoin-core\">was originally soft-forked</a>. But treating\ncoinbase transactions as not having duplicate past Consensus Cleanup activation would be consistent\nfor any implementation which enforces <code>nLockTime</code> from the genesis block, which is the behaviour\nnotably of Bitcoin Core but also of all other implementations the authors are aware of.\n[^12]: For instance Bitcoin Core only disables <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki\">bip-0030</a> validation for a specific chain\nwhere <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki\">bip-0034</a> violations have been manually inspected (see <a href=\"https://github.com/bitcoin/bitcoin/blob/390e7d61bd531505bb3d13f38316c282b85ed1dd/src/validation.cpp#L2401-L2459\">here</a>). Without the guarantee given by enforcing the timelock on coinbase transactions, this would\nhave to be perpetuated for the Consensus Cleanup.\n[^13]: The authors are aware of three workarounds for SPV verifiers. The first is to request a\nMerkle proof for the coinbase transaction in addition to the transaction of interest, to infer the\ndepth of the Merkle tree. The second is to reject Merkle proofs in which any inner node is also a\nvalid serialisation of a Bitcoin transaction. More details about these are available <a href=\"https://bitslog.com/2018/06/09/leaf-node-weakness-in-bitcoin-merkle-tree-design\">here</a>. A third workaround is to change the Merkle proof structure by requiring inner nodes to be\nprovided as the single-SHA256 of their preimage, instead of the double-SHA256. See <a href=\"https://bitslog.com/2018/08/21/simple-change-to-the-bitcoin-merkleblock-command-to-protect-from-leaf-node-weakness-in-transaction-merkle-tree/\">here</a> for a full description.\n[^14]: <a href=\"https://gnusha.org/pi/bitcoindev/f97afcc5-54ba-4284-8e9b-e8c35c7101f6n@googlegroups.com/\">Jeremy Rubin &quot;Prohibit Merkle Internal Node Preimages That Encode Minimal 64-Byte Transactions&quot; (mailing list)</a>.</p>\n","toc":[{"id":"abstract","title":"Abstract","level":2},{"id":"motivation","title":"Motivation","level":2},{"id":"specification","title":"Specification","level":2},{"id":"rationale","title":"Rationale","level":2},{"id":"backward-compatibility","title":"Backward compatibility","level":2},{"id":"miner-forward-compatibility","title":"Miner forward compatibility","level":2},{"id":"reference-implementation","title":"Reference implementation","level":2},{"id":"test-vectors","title":"Test vectors","level":2},{"id":"acknowledgements","title":"Acknowledgements","level":2},{"id":"copyright","title":"Copyright","level":2},{"id":"changelog","title":"Changelog","level":2}],"history":{"totalCommits":30,"firstCommit":"2025-03-03T16:29:40-05:00","lastUpdated":"2026-10-02T09:27:57-04:00","events":[{"sha":"927b6de9915c9262615a6399de51b200f81e5aa4","date":"2026-10-02T09:27:57-04:00","author":"Antoine Poinsot","message":"Address some wording nits in BIP 54 (#2313)","url":"https://github.com/bitcoin/bips/commit/927b6de9915c9262615a6399de51b200f81e5aa4","kind":"edit"},{"sha":"79334a16fc69414412029f259c67017c503930b2","date":"2026-07-24T08:54:48-06:00","author":"Jon Atack","message":"BIP54: update reference implementation","url":"https://github.com/bitcoin/bips/commit/79334a16fc69414412029f259c67017c503930b2","kind":"edit"},{"sha":"7c7e2f10a4ed096b10cd3ea0fd966286057f9c52","date":"2026-07-07T15:32:17-04:00","author":"Antoine Poinsot","message":"bip-0054: an SPV verifier that supports 64-byte txs would have to be modified","url":"https://github.com/bitcoin/bips/commit/7c7e2f10a4ed096b10cd3ea0fd966286057f9c52","kind":"edit"},{"sha":"9ec73fc6edd878c0df3676cf66e03abbdc00f889","date":"2026-07-07T14:57:40-04:00","author":"Antoine Poinsot","message":"bip-0054: mention Jeremy's alternative proposal in rationale","url":"https://github.com/bitcoin/bips/commit/9ec73fc6edd878c0df3676cf66e03abbdc00f889","kind":"edit"},{"sha":"c47655654c4d32158e1a3ab40ce2bb37992333ad","date":"2026-05-22T13:44:01-04:00","author":"Antoine Poinsot","message":"bip-0054: move to complete","url":"https://github.com/bitcoin/bips/commit/c47655654c4d32158e1a3ab40ce2bb37992333ad","kind":"status"},{"sha":"809ca9939a10026c398e35dab2e444a1e261e9ea","date":"2026-05-22T13:43:31-04:00","author":"Antoine Poinsot","message":"bip-0054: link to Bitcoin Core reference implementation rebased on latest version","url":"https://github.com/bitcoin/bips/commit/809ca9939a10026c398e35dab2e444a1e261e9ea","kind":"edit"},{"sha":"6c61126d742cade35cf658a1ca9565d530a35613","date":"2026-05-21T10:35:56-04:00","author":"Antoine Poinsot","message":"bip-0054: mention Luke's extranonce concern in rationale","url":"https://github.com/bitcoin/bips/commit/6c61126d742cade35cf658a1ca9565d530a35613","kind":"edit"},{"sha":"b75238ffb3059fa1857f1858f9bc99f8cbf7ea67","date":"2026-05-21T10:04:45-04:00","author":"Antoine Poinsot","message":"bip-0054: rephrase/dedup motivation and rationale for BIP 34 cleanup","url":"https://github.com/bitcoin/bips/commit/b75238ffb3059fa1857f1858f9bc99f8cbf7ea67","kind":"edit"},{"sha":"ec24fd371cd8cf1aabe3afcc63385155dea5c00d","date":"2026-05-21T10:54:23-04:00","author":"Antoine Poinsot","message":"bip-0054: more correct worst case validation times","url":"https://github.com/bitcoin/bips/commit/ec24fd371cd8cf1aabe3afcc63385155dea5c00d","kind":"edit"},{"sha":"19caed45a190aee8a0e7792d8e819d6de6ee5ae6","date":"2026-05-20T16:41:18-04:00","author":"Antoine Poinsot","message":"bip-0054: rephrase Timewarp motivation","url":"https://github.com/bitcoin/bips/commit/19caed45a190aee8a0e7792d8e819d6de6ee5ae6","kind":"edit"},{"sha":"f1f1c36ff24157c6c7de698a90fa3fff4ab8b337","date":"2026-05-17T17:43:21-04:00","author":"Antoine Poinsot","message":"bip-0054: add a footnote with known workarounds for SPV verifiers","url":"https://github.com/bitcoin/bips/commit/f1f1c36ff24157c6c7de698a90fa3fff4ab8b337","kind":"edit"},{"sha":"9e8e357b0388d532e277e03b0bf372b39fedcc44","date":"2026-05-17T17:09:11-04:00","author":"Antoine Poinsot","message":"bip-0054: disambiguate use of \"mitigation\"","url":"https://github.com/bitcoin/bips/commit/9e8e357b0388d532e277e03b0bf372b39fedcc44","kind":"edit"},{"sha":"47a2d725390a28d8fee0132bbba28e6ad7f6986f","date":"2026-05-15T11:09:46-04:00","author":"Antoine Poinsot","message":"bip-0054: less redundancy in 64-byte rationale, move caching risk to footnote","url":"https://github.com/bitcoin/bips/commit/47a2d725390a28d8fee0132bbba28e6ad7f6986f","kind":"rename"},{"sha":"8ae3af58e0503c8f0dd5ac2be924c6a4dcb7fbdd","date":"2026-05-15T10:50:34-04:00","author":"Antoine Poinsot","message":"bip-0054: state explicitly fake inclusion proofs only concern SPV verifier","url":"https://github.com/bitcoin/bips/commit/8ae3af58e0503c8f0dd5ac2be924c6a4dcb7fbdd","kind":"edit"},{"sha":"5c67f90fa81cdf4ab4a955b2a11f54a4727fef88","date":"2026-05-14T09:04:36-04:00","author":"Antoine Poinsot","message":"bip-0054: clarify rationale for invalidating 64-byte txs","url":"https://github.com/bitcoin/bips/commit/5c67f90fa81cdf4ab4a955b2a11f54a4727fef88","kind":"edit"},{"sha":"346f93844f9b7dc1df184edd7383f5cca5e0c02e","date":"2026-05-12T07:06:15-04:00","author":"Antoine Poinsot","message":"bip-0054: spell out in more places that 64 bytes is for witness-stripped size","url":"https://github.com/bitcoin/bips/commit/346f93844f9b7dc1df184edd7383f5cca5e0c02e","kind":"edit"},{"sha":"acf99fc16099fc4464df6b4f3cff4cfe2a84fecd","date":"2026-05-07T11:24:34+01:00","author":"nervana21","message":"BIP 54: grammar improvements (#2151)","url":"https://github.com/bitcoin/bips/commit/acf99fc16099fc4464df6b4f3cff4cfe2a84fecd","kind":"edit"},{"sha":"442e9628b3dcca1b65f0df8af2308f8260e00caa","date":"2026-02-27T14:27:01-08:00","author":"Murch","message":"Eliminate remaining \"user-content\" anchor links","url":"https://github.com/bitcoin/bips/commit/442e9628b3dcca1b65f0df8af2308f8260e00caa","kind":"edit"},{"sha":"1f21139957665eb624646a4cc3deccdccabbfb89","date":"2026-03-13T14:21:41-04:00","author":"Antoine Poinsot","message":"bip54: expand on rationale for non-final coinbase nSequence","url":"https://github.com/bitcoin/bips/commit/1f21139957665eb624646a4cc3deccdccabbfb89","kind":"status"},{"sha":"aef4d9e084daf7b57c6b8aac4a47d5b0611f0c9e","date":"2026-03-13T11:14:20-04:00","author":"Antoine Poinsot","message":"bip54: reword \"potentially executed\" language in sigops limit specification","url":"https://github.com/bitcoin/bips/commit/aef4d9e084daf7b57c6b8aac4a47d5b0611f0c9e","kind":"edit"},{"sha":"24e96e870fffaa257b465ce1f0370c14aac588e8","date":"2025-10-08T14:59:36-07:00","author":"Murch","message":"process: Created ↦ Assigned","url":"https://github.com/bitcoin/bips/commit/24e96e870fffaa257b465ce1f0370c14aac588e8","kind":"edit"},{"sha":"5207ef92a52d0b8902895b0dbb40823a4d698ec9","date":"2025-04-11T20:08:17-07:00","author":"Murch","message":"process: Author ↦ Authors","url":"https://github.com/bitcoin/bips/commit/5207ef92a52d0b8902895b0dbb40823a4d698ec9","kind":"edit"},{"sha":"59730dec4fb641a41589aa1b91d3c452f13e0e36","date":"2025-04-11T20:05:13-07:00","author":"Murch","message":"process: Remove Comments-URI and -Summary","url":"https://github.com/bitcoin/bips/commit/59730dec4fb641a41589aa1b91d3c452f13e0e36","kind":"edit"},{"sha":"a233bde4af52c6a11269e2e6dd9707abce441ffe","date":"2025-04-11T18:19:21-07:00","author":"Murch","message":"process: Standards Track ↦ Specification","url":"https://github.com/bitcoin/bips/commit/a233bde4af52c6a11269e2e6dd9707abce441ffe","kind":"edit"},{"sha":"1076d906782266e7a1f7eb4d2aa86c576574c398","date":"2025-11-25T12:46:53-05:00","author":"Antoine Poinsot","message":"bip-0054: update forward compat section with Bitcoin Core v30","url":"https://github.com/bitcoin/bips/commit/1076d906782266e7a1f7eb4d2aa86c576574c398","kind":"edit"},{"sha":"459298ab0e35f97072228f9984cd0b6973989895","date":"2025-11-12T13:13:58-05:00","author":"Greg Sanders","message":"bip54: clarify sigops counting, borrow bip16 language","url":"https://github.com/bitcoin/bips/commit/459298ab0e35f97072228f9984cd0b6973989895","kind":"edit"},{"sha":"0777a81367e36dd16af101fb264af141f199e86a","date":"2025-10-18T23:47:18-04:00","author":"Antoine Poinsot","message":"bip-0054: document the test vectors","url":"https://github.com/bitcoin/bips/commit/0777a81367e36dd16af101fb264af141f199e86a","kind":"edit"},{"sha":"89dfe03a6448a539bb487451921b950e7ece472c","date":"2025-10-18T23:43:11-04:00","author":"Antoine Poinsot","message":"bip-0054: add a reference implementation section","url":"https://github.com/bitcoin/bips/commit/89dfe03a6448a539bb487451921b950e7ece472c","kind":"edit"},{"sha":"32bcfd6801f192f13b8a8585226a1202438bd25b","date":"2025-09-03T16:55:29-04:00","author":"Antoine Poinsot","message":"bip54: fix off-by-one in creation date","url":"https://github.com/bitcoin/bips/commit/32bcfd6801f192f13b8a8585226a1202438bd25b","kind":"edit"},{"sha":"1ee43519dd2520fbd8ad5c264bd4198acdba4863","date":"2025-03-03T16:29:40-05:00","author":"Antoine Poinsot","message":"Consensus Cleanup BIP draft","url":"https://github.com/bitcoin/bips/commit/1ee43519dd2520fbd8ad5c264bd4198acdba4863","kind":"edit"}]}}