-
Notifications
You must be signed in to change notification settings - Fork 37.7k
Bury taproot deployment #23505
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bury taproot deployment #23505
Conversation
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
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. |
Is there an earlier block height we can use? |
ACK 88884ae |
It seems that 692262 is the earliest block height. |
if it's just that block with an invalid spend we could do BIP340Exception for that block hash and always on since genesis? |
Proposed in #23536 |
This would also have my preference. |
I wouldn't call it "preference". #23536 and this pull request are doing two different things. One is setting the script verification flags starting from genesis, regardless of the activation status. This one is turning the activation into a height based one. If #23536 is merged first, this one will be an RPC-only change. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Concept and code-review ACK 88884ae
It is impossible to hit those lines of code unless there is hardware or software corruption. Thus, make sure to abort the node in case they are hit to avoid further corruption. See also the previous discussions: * https://github.com/bitcoin/bitcoin/pull/19438/files#r661202215 * https://github.com/bitcoin/bitcoin/pull/19438/files#r662494456 Also, remove whitespace for better readability and grep-ability. (Can be reviewed with --word-diff-regex=. option)
ACK 88884ae |
88884ae
to
fa73540
Compare
Force pushed with two changes:
Should be easy to re-review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
re-ACK fa73540
Trivial re-review via git range-diff 88884ae9...fa735401
plus verified that the block hash of height 709632 matches on my node.
POW/miners do not decide protocol rules. It would be nice to see more nodes enforcing Taproot first. OTOH, this software will activate Taproot based on the POW regardless of user enforcement, so maybe a separate issue. shrug |
Indeed, this is a separate discussion. |
I don't think this will be needed, since taproot activated at the genesis block after #23536 |
I'll likely open a follow-up after #23536 as an alternative to this pull. |
Now that the decision to activate taproot at block height 709632 has been buried under more than 5 months of POW, the deployment should be buried in a future release (see benefits below). If this patch is first included in version 23.0, the decision will be buried by ~10 months of POW at release time.
Benefits:
-testactivationheight=name@height
(introduced in test: Activate all regtest softforks at height 1, unless overridden #22818) can be used.For reference, previous buried versionbits deployments were:
Unlike previous buried deployments, this one is not a non-backwards compatible change, as explained in BIP90 (section considerations): https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki#considerations . Due to the use of a minimum activation height, there can not exist an alternative chain where the activation occurred at a lower block height than that.
Obviously this patch can still result in a theoretical consensus split (though a "backwards compatible" one) if there were a massive reorg that activated taproot at a higher (or no) block height. In this case the BIP90 considerations on large reorgs apply.
This changes the output of the
getblockchaininfo
RPC. I will add release notes when and if this patch is merged.