We drop taproot from getdeploymentinfo RPC, rather than mark it as buried, because this is not a buried deployment in the sense of BIP 90. This is because the activation height has been completely removed from the code, unlike the hardcoded DEPLOYMENT_SEGWIT height which is still relied on.1
DEPLOYMENT_SEGWIT is used in IsBlockMutated to determine if witness data is allowed, it’s used for BIP147, to trigger NeedsRedownload() for users who upgraded after a decade, and for a few other things. ↩︎
DrahtBot
commented at 2:34 pm on September 30, 2022:
contributor
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
If your review is incorrectly listed, please copy-paste <!–meta-tag:bot-skip–> into the comment that the bot should ignore.
Conflicts
Reviewers, this pull request conflicts with the following ones:
#34677 (kernel: Chainparams and headerssync updates pre-31.0 by achow101)
#34049 (rpc: Disallow captures in RPCMethodImpl by ajtowns)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
luke-jr
commented at 2:04 pm on October 2, 2022:
member
Concept ~0, but I object the claim in general that commits “sufficiently buried by other commits, and thus less likely to be reverted”. Git isn’t PoW, and “burying” commits does not make them less likely to be reverted.
Sjors
commented at 9:22 am on October 3, 2022:
member
@luke-jr changed the wording to “is (probably) included in v24.0”.
ajtowns
commented at 3:47 am on October 8, 2022:
contributor
This should be updating MinBIP9WarningHeight above the taproot activation height (otherwise you should see "warnings": "Unknown new rules activated (versionbit 2)" due to miner signalling)
Sjors force-pushed
on Nov 1, 2022
Sjors
commented at 9:41 am on November 1, 2022:
member
in
src/consensus/params.h:99
in
8f96e52405outdated
95@@ -94,7 +96,7 @@ struct Params {
96 * BIP 16 exception blocks. */
97 int SegwitHeight;
98 /** Don't warn about unknown BIP 9 activations below this height.
99- * This prevents us from warning about the CSV and segwit activations. */
100+ * This prevents us from warning about the CSV,segwit and taproot activations. */
DrahtBot removed the label
Needs rebase
on Aug 18, 2023
Sjors force-pushed
on Aug 18, 2023
Sjors
commented at 11:12 am on August 18, 2023:
member
Rebased after kernel changes. Fixed a regression in getblocktemplate’s rules result, and added a test for tit.
in
src/rpc/mining.cpp:951
in
b5d8ddbcb9outdated
859@@ -860,8 +860,14 @@ static RPCHelpMan getblocktemplate()
860 result.pushKV("capabilities", aCaps);
861862 UniValue aRules(UniValue::VARR);
863+ // See getblocktemplate changes in BIP 9:
864+ // ! indicates a more subtle change to the block structure or generation transaction
865+ // Otherwise clients may assume the rule will not impact usage of the template as-is.
866 aRules.push_back("csv");
867- if (!fPreSegWit) aRules.push_back("!segwit");
868+ if (!fPreSegWit) {
Added. IIUC the WarningBitsConditionChecker uses ComputeBlockVersion (also used by the miner), which in turn uses VersionBitsConditionChecker, which uses vDeployments to determine if a softfork is STARTED or LOCKED_IN. If so it won’t issue the warning. This logic is rather convoluted…
Sjors force-pushed
on Oct 23, 2023
DrahtBot added the label
CI failed
on Oct 23, 2023
DrahtBot removed the label
CI failed
on Oct 26, 2023
barrystyle referenced this in commit
6eb671c734
on Dec 16, 2023
Sjors force-pushed
on Jan 9, 2024
Sjors
commented at 9:06 am on January 9, 2024:
member
DrahtBot added the label
CI failed
on Jan 14, 2024
Sjors force-pushed
on Feb 13, 2024
DrahtBot removed the label
CI failed
on Feb 13, 2024
DrahtBot added the label
Needs rebase
on Mar 5, 2024
Sjors force-pushed
on Mar 7, 2024
Sjors
commented at 10:36 am on March 7, 2024:
member
Rebased due to (trivial) merge conflict after #29547.
I should also point out that Silent Payments makes use of the Taproot activation height (e.g. for a more efficient indexer), but I don’t think that’s a good reason to keep these consensus params around.
DrahtBot removed the label
Needs rebase
on Mar 7, 2024
Sjors force-pushed
on May 30, 2024
DrahtBot added the label
CI failed
on May 30, 2024
DrahtBot removed the label
CI failed
on May 30, 2024
DrahtBot added the label
CI failed
on Jul 15, 2024
DrahtBot removed the label
CI failed
on Jul 20, 2024
DrahtBot added the label
Needs rebase
on Aug 5, 2024
Sjors force-pushed
on Aug 12, 2024
Sjors
commented at 8:38 am on August 12, 2024:
member
DrahtBot requested review from l0rinc
on Mar 7, 2025
in
src/consensus/params.h:21
in
301e41985eoutdated
17@@ -18,21 +18,24 @@ namespace Consensus {
18 /**
19 * A buried deployment is one where the height of the activation has been hardcoded into
20 * the client implementation long after the consensus change has activated. See BIP 90.
21+ * Consensus changes for which the new rules enforced from genesis are not listed here.
DrahtBot removed the label
Needs rebase
on May 14, 2025
DrahtBot added the label
Needs rebase
on Jun 19, 2025
Sjors force-pushed
on Jun 19, 2025
Sjors
commented at 8:09 am on June 19, 2025:
member
Rebased after #31981 for minor conflict in mining_basic.py.
in
doc/bips.md:62
in
f08e573a87outdated
57@@ -58,7 +58,8 @@ BIPs that are implemented by Bitcoin Core:
58 Validation rules for Taproot (including Schnorr signatures and Tapscript
59 leaves) are implemented as of **v0.21.0** ([PR 19953](https://github.com/bitcoin/bitcoin/pull/19953)),
60 with mainnet activation as of **v0.21.1** ([PR 21377](https://github.com/bitcoin/bitcoin/pull/21377),
61- [PR 21686](https://github.com/bitcoin/bitcoin/pull/21686)).
62+ [PR 21686](https://github.com/bitcoin/bitcoin/pull/21686)),
63+ always active as of **v24.0** ([PR 23536](https://github.com/bitcoin/bitcoin/pull/23536)).
DrahtBot removed the label
Needs rebase
on Jun 19, 2025
fanquake referenced this in commit
79afe6b7c0
on Jun 19, 2025
Sjors force-pushed
on Jun 19, 2025
Sjors
commented at 3:02 pm on June 19, 2025:
member
Rebased after splitting the doc/bips.md changes off into #32776.
DrahtBot added the label
Needs rebase
on Sep 3, 2025
Remove Taproot activation height
Drop DEPLOYMENT_TAPROOT from consensus.vDeployments.
Bump MinBIP9WarningHeight.
Clarify what is considered a BuriedDeployment and
drop taproot from getdeploymentinfo RPC.
Add a test to getblocktemplate to ensure the taproot
rule is still set.
Co-Authored-By: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
ec17c82846
Sjors force-pushed
on Sep 3, 2025
Sjors
commented at 11:32 am on September 3, 2025:
member
DrahtBot removed the label
Needs rebase
on Sep 3, 2025
sedited
commented at 5:03 pm on December 28, 2025:
contributor
Concept ACK
Seems reasonable given that we say “Consensus changes for which the new rules are enforced from genesis are not listed here.”
sedited
commented at 9:07 am on February 24, 2026:
contributor
We drop taproot from getdeploymentinfo RPC, rather than mark it as buried, because this is not a buried deployment in the sense of BIP 90. This is because the activation height has been completely removed from the code, rather than hard coded.
Looking at this a bit more, how is the taproot deployment different here from the segwit deployment? AFAICT the segwit height is only used for checking the NeedsRedownload condition, and the purpose of that functionality has been questioned recently too. Can you elaborate on this in the motivation?
Sjors
commented at 9:26 am on February 24, 2026:
member
@seditedConsensus::DEPLOYMENT_SEGWIT is also used to determine whether a block is allowed to have witness data (IsBlockMutated) and for BIP147. I expanded the PR description.
darosior
commented at 8:08 pm on February 27, 2026:
member
Concept ACK.
I find it confusing that we don’t simply make it a buried deployment like we did for the past 5 soft forks. But since we always enforce it from genesis, it would probably be even more confusing (for instance setting -testactivationheight=taproot@42 wouldn’t have the intended effect).
Could you update the PR title? There is no Taproot activation height. Maybe “Remove Taproot BIP 9 deployment”?
darosior
commented at 8:14 pm on February 27, 2026:
member
But since we always enforce it from genesis, it would probably be even more confusing (for instance setting -testactivationheight=taproot@42 wouldn’t have the intended effect).
I guess it’s already equally confusing for -testactivationheight=segwit@42. Oh well..
Sjors renamed this:
Remove Taproot activation height
Remove Taproot BIP 9 deployment
on Feb 28, 2026
in
src/consensus/params.h:31
in
ec17c82846
26 DEPLOYMENT_HEIGHTINCB = std::numeric_limits<int16_t>::min(),
27 DEPLOYMENT_CLTV,
28 DEPLOYMENT_DERSIG,
29 DEPLOYMENT_CSV,
30+ // SCRIPT_VERIFY_WITNESS is enforced from genesis, but the check for downloading
31+ // missing witness data is not. BIP 147 also relies on hardcoded activation height.
ajtowns
commented at 5:20 pm on February 28, 2026:
I think it might be good (not necessarily in this PR) to change VBDeploymentInfo in deploymentinfo.h/cpp to perhaps specify the SCRIPT_VERIFY flags related to a deployment, or to add a std::string with some info about the deployment (EDIT: and to report this information via getdeploymentinfo).
I indeed prefer to leave this for a followup (and as you mention, maybe not needed).
in
src/rpc/blockchain.cpp:1448
in
ec17c82846
1445 RPCHelpMan getdeploymentinfo()
1446 {
1447 return RPCHelpMan{"getdeploymentinfo",
1448- "Returns an object containing various state info regarding deployments of consensus changes.",
1449+ "Returns an object containing various state info regarding deployments of consensus changes.\n"
1450+ "Consensus changes for which the new rules are enforced from genesis are not listed here.",
ajtowns
commented at 5:24 pm on February 28, 2026:
Since #32998 we report "script_flags": [ .., "TAPROOT", .. ] via getdeploymentinfo for all blocks except the hardcoded exceptions. I think that’s sufficient indication that the soft-fork is still enforced even if it’s not listed in the “deployments” section anymore. Maybe this comment would be better phrased as ‘are not listed here in “deployments”.’ ?
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-03-03 06:13 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me