Summary
The "Miner forward compatibility" section currently says:
Bitcoin Core version 29.0 and later will not generate a block template that violates the timestamp restrictions introduced in this BIP.
This BIP introduces two timestamp restrictions (Specification, given a block at height N):
N % 2016 == 0: T<sub>N</sub> ≥ T<sub>N−1</sub> − 7200N % 2016 == 2015: T<sub>N</sub> ≥ T<sub>N−2015</sub>
Bitcoin Core 29.0 only accounts for the first one. It gained that in bitcoin/bitcoin#31376 (miner: never create a template which exploits the timewarp bug), with getblocktemplate's mintime following in bitcoin/bitcoin#31600; both are first contained in v29.0. (28.0 already had the template-side adjustment, but gated on enforce_BIP94, so it applied to testnet4/regtest only — 29.0 is the first release where it is unconditional and mintime agrees with it.)
The second restriction was only added to the block template code in bitcoin/bitcoin#35949 (miner: Enforce Murch-Zawy rule (BIP54)), merged 2026-09-07 and so far contained only in v32.0rc1. I checked the 29.x, 30.x and 31.x stable tags for a backport; there is none.
Both rules live in the same GetMinimumTime() helper, which feeds the template header via UpdateTime() and getblocktemplate's mintime/curtime alike, so templates and the RPC fields gain each restriction at the same time.
So versions 29.x through 31.x do not satisfy the blanket wording, which this PR corrects.
Changes
- Split the sentence in two, one per restriction, matching the existing per-version style of the neighbouring paragraphs.
- Scope the "extremely unlikely" explanation to each restriction: the grace period only exists for the first-block rule, so it no longer reads as justifying both.
- Qualify the
curtime/mintimeadvice. It previously promised blocks "valid according to this proposal", which is not true on 29.x–31.x at the last block of a period — exactly the gap the version split makes explicit. - Add the
[Core 32.0]link definition, and a1.0.1changelog entry with the matchingVersionheader.
No normative change; this only makes the implementation timeline and the miner guidance accurate.
Open questions for the author/editors
- The 32.0 link. 32.0 is not released yet (
v32.0rc1), sohttps://bitcoincore.org/en/releases/32.0404s until it ships. I used the release-page URL for consistency with the[Core 0.16.1],[Core 29.0]and[Core 30.0]definitions —[Core 30.0]was likewise added after 30.0 shipped. Happy to point it at bitcoin/bitcoin#35949 instead (there is in-file precedent in[Core BIP 54 implem]), or to hold this until 32.0 is out. Your call. - Changelog. BIP3 requires post-Complete changes to be tracked, and gives a PATCH bump for "important clarifications", so I added
1.0.1and theVersionheader that BIP3 also requires once a changelog exists. The three previous post-Complete edits to this file did not bump it, so if you consider this too minor to record, I will drop that part. - Pre-existing, not addressed here. The last sentence of the paragraph says a timestamp below
mintime"already leads to creating an invalid block". That is not categorically true: Core's template floor usesMAX_TIMEWARP = 600while this BIP permitsT<sub>N−1</sub>− 7200, so a timestamp in between is belowmintimeyet valid. Left alone as out of scope — let me know if you want it corrected in the same PR.