[0.21] Speedy trial activation for Taproot #21701
pull achow101 wants to merge 10 commits into bitcoin:0.21 from achow101:0.21-taproot-st changing 9 files +318 −165-
achow101 commented at 4:07 pm on April 15, 2021: member
-
tests: pull ComputeBlockVersion test into its own function
The intent here is to allow checking ComputeBlockVersion behaviour with each deployment, rather than only testdummy on mainnet. This commit does the trivial refactoring component of that change. Github-Pull: #21377 Rebased-From: 63879f0a4760c0c0f784029849cb5d21ee088abb
-
tests: test ComputeBlockVersion for all deployments
This generalises the ComputeBlockVersion test so that it can apply to any activation parameters we might set, and checks all the parameters set for each deployment on each chain, to simultaneously ensure that the deployments we have configured work sensibly, and that the test code does not suffer bitrot in the event that all interesting deployments are buried. Github-Pull: #21377 Rebased-From: 593274445004506c921d5d851361aefb3434d744
-
tests: clean up versionbits test
Simplify the versionbits unit test slightly to make the next set of changes a little easier to follow. Github-Pull: #21377 Rebased-From: 9e6b65f6fa205eee5c3b99343988adcb8d320460
-
versionbits: Add support for delayed activation
Github-Pull: #21377 Rebased-From: 73d4a706393e6dbd6b6d6b6428f8d3233ac0a2d8
-
achow101 renamed this:
[0.2] Speedy trial activation for Taproot
[0.21] Speedy trial activation for Taproot
on Apr 15, 2021 -
DrahtBot added the label Backport on Apr 15, 2021
-
in src/test/versionbits_tests.cpp:274 in 37c255cdeb outdated
266@@ -226,6 +267,13 @@ BOOST_AUTO_TEST_CASE(versionbits_test) 267 // Make sure that no deployment tries to set an invalid bit. 268 BOOST_CHECK_EQUAL(bitmask & ~(uint32_t)VERSIONBITS_TOP_MASK, bitmask); 269 270+ // Check min_activation_height is on a retarget boundary 271+ BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height % mainnetParams.nMinerConfirmationWindow, 0); 272+ // Check min_activation_height is 0 for ALWAYS_ACTIVE and never active deployments 273+ if (mainnetParams.vDeployments[i].nStartTime == Consensus::BIP9Deployment::ALWAYS_ACTIVE || mainnetParams.vDeployments[i].nStartTime == Consensus::BIP9Deployment::NEVER_ACTIVE) { 274+ BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height, 0);
MarcoFalke commented at 5:28 pm on April 15, 2021:0 BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height, 0U);
Looks like you are hitting some stupid compiler error
achow101 commented at 5:56 pm on April 15, 2021:Fixed.achow101 force-pushed on Apr 15, 2021Sjors commented at 6:14 pm on April 15, 2021: membertACK 724e4948004c8127f093db90f9d78e6ed9e46541on UbuntuI verified as follows:
0git checkout origin/0.21 1git checkout -b speedy-trial-backport 2git cherry-pick 63879f0a4760c0c0f784029849cb5d21ee088abb^..ffe33dfbd4c3b11e3475b022b6c1dd077613de79 3git cherry-pick f979b3237f1cfc28f9c4ccb07beab558d5357a55 4git diff 724e4948004c8127f093db90f9d78e6ed9e46541 5src/test/test_bitcoin --run_test=versionbits_tests
Git diff only shows a difference in the trailing
U
for this test (presumably related to #21701 (review)):BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height, 0U);
I had manually resolve a conflict for dd07e6da48040dc7eae46bc7941db48d98a669fd.
I also managed to spin up the node and see the softfork as “defined” in
getblockchaininfo
.
I’m unable to reproduce the CI failure on macOS 11.2.3 with homebrew Boost 1.75.0. It doesn’t happen for me with depends either.
achow101 commented at 10:45 pm on April 15, 2021: memberI don’t know why CI is having a hard time building this. I am able to do a gitian build of this branch, so it should be working.fanquake added this to the milestone 0.21.1 on Apr 16, 2021in src/test/versionbits_tests.cpp:271 in 724e494800 outdated
266@@ -226,6 +267,13 @@ BOOST_AUTO_TEST_CASE(versionbits_test) 267 // Make sure that no deployment tries to set an invalid bit. 268 BOOST_CHECK_EQUAL(bitmask & ~(uint32_t)VERSIONBITS_TOP_MASK, bitmask); 269 270+ // Check min_activation_height is on a retarget boundary 271+ BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height % mainnetParams.nMinerConfirmationWindow, 0);
fanquake commented at 0:53 am on April 16, 2021:0 BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height % mainnetParams.nMinerConfirmationWindow, 0U);
achow101 commented at 0:59 am on April 16, 2021:Donein src/test/versionbits_tests.cpp:274 in 724e494800 outdated
266@@ -226,6 +267,13 @@ BOOST_AUTO_TEST_CASE(versionbits_test) 267 // Make sure that no deployment tries to set an invalid bit. 268 BOOST_CHECK_EQUAL(bitmask & ~(uint32_t)VERSIONBITS_TOP_MASK, bitmask); 269 270+ // Check min_activation_height is on a retarget boundary 271+ BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height % mainnetParams.nMinerConfirmationWindow, 0); 272+ // Check min_activation_height is 0 for ALWAYS_ACTIVE and never active deployments 273+ if (mainnetParams.vDeployments[i].nStartTime == Consensus::BIP9Deployment::ALWAYS_ACTIVE || mainnetParams.vDeployments[i].nStartTime == Consensus::BIP9Deployment::NEVER_ACTIVE) { 274+ BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height, 0U);
fanquake commented at 0:54 am on April 16, 2021:0 BOOST_CHECK_EQUAL(mainnetParams.vDeployments[i].min_activation_height, 0);
achow101 commented at 0:59 am on April 16, 2021:Donein src/test/versionbits_tests.cpp:317 in 724e494800 outdated
322+ BOOST_REQUIRE(nStartTime >= 0); 323+ BOOST_REQUIRE(nTimeout <= std::numeric_limits<uint32_t>::max() || nTimeout == Consensus::BIP9Deployment::NO_TIMEOUT); 324+ BOOST_REQUIRE(0 <= bit && bit < 32); 325+ BOOST_REQUIRE(((1 << bit) & VERSIONBITS_TOP_MASK) == 0); 326+ BOOST_REQUIRE(min_activation_height >= 0); 327+ BOOST_REQUIRE_EQUAL(min_activation_height % params.nMinerConfirmationWindow, 0);
fanquake commented at 0:54 am on April 16, 2021:0 BOOST_REQUIRE_EQUAL(min_activation_height % params.nMinerConfirmationWindow, 0U);
achow101 commented at 0:59 am on April 16, 2021:Donefanquake commented at 0:55 am on April 16, 2021: memberThese 3 changes will fix the failing CIs.tests: test versionbits delayed activation
Github-Pull: #21377 Rebased-From: dd85d5411c1702c8ae259610fe55050ba212e21e
fuzz: test versionbits delayed activation
Github-Pull: #21377 Rebased-From: dd07e6da48040dc7eae46bc7941db48d98a669fd
versionbits: Add explicit NEVER_ACTIVE deployments
Previously we used deployments that would timeout prior to Bitcoin's invention, which allowed the deployment to still be activated in unit tests. This switches those deployments to be truly never active. Github-Pull: #21377 Rebased-From: 55ac5f568a3b73d6f1ef4654617fb76e8bcbccdf
versionbits: simplify state transitions
This removes the DEFINED->FAILED transition and changes the STARTED->FAILED transition to only occur if signalling didn't pass the threshold. This ensures that it is always possible for activation to occur, no matter what settings are chosen, or the speed at which blocks are found. Github-Pull: #21377 Rebased-From: f054f6bcd2c2ce5fea84cf8681013f85a444e7ea
chainparams: drop versionbits threshold to 90% for mainnnet and signet
Github-Pull: #21377 Rebased-From: ffe33dfbd4c3b11e3475b022b6c1dd077613de79
Add mainnet and testnet taproot activation params
Github-Pull: #21686 Rebased-From: f979b3237f1cfc28f9c4ccb07beab558d5357a55
achow101 force-pushed on Apr 16, 2021instagibbs commented at 2:30 am on April 16, 2021: memberSjors commented at 8:39 am on April 16, 2021: membertACK cbd64c3MarcoFalke commented at 9:12 am on April 16, 2021: membercherry-pick-only ACK cbd64c3a28a7466f421477daadc6e6e6b69b898a 🌾
Signature:
0-----BEGIN PGP SIGNED MESSAGE----- 1Hash: SHA512 2 3cherry-pick-only ACK cbd64c3a28a7466f421477daadc6e6e6b69b898a 🌾 4-----BEGIN PGP SIGNATURE----- 5 6iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p 7pUiVXAwAm+m81VxCGAQs/vB2ZvE43rHYlW8QBpQbRB4ckkjnmXxSoNJipajP02Je 83CwjtSrxS9A0Dam8u4D3BHHdYyyT/UJF02JJMNEzTlO9b2OW5v0SrGZqGGIxSluC 9oltxBDg5ry3tHSs4Zkm2o71je9L00ZgOMQD4Yan5yOCVmCVWfIaBFR3oXhL/pdhr 100UrlkPWPuF3h2Lt7dqEqhd3/rZzV7dtMK0tBqX7B7IE8sX/g5qvEIAAnstn6jJeN 11rYbTwEkVMKDstIvonGa1EcMAr4TMay2V1h+q53JNvAmqkIj+8nZvH/5hbpnVNuTg 12CivIvZKffc3C+4cigKsiJSHcT9vAeK6K/C5MW5G/9uio1kqdZq7McA3my7AmlDN5 13e3jtTBDIUN/BMhOiizS1iYsqwHZjF4qPdfySxgDPw4Z49toee2ziN0BMv9NTrKc6 14WI5hPKFG38l8O4YHO6tyCRJfVJuoP2ByhGiU7/pTJO0NvKnRh+Wma3kRa61sTbrl 15cfriU22f 16=gYxK 17-----END PGP SIGNATURE-----
Timestamp of file with hash
1d1c8419f375b140d9bb77c1f31aa2bb76a54e095fe73d7ba926604fb50abc88 -
MarcoFalke merged this on Apr 16, 2021MarcoFalke closed this on Apr 16, 2021
ajtowns commented at 10:06 am on April 16, 2021: memberPost-merge ACK cbd64c3a28a7466f421477daadc6e6e6b69b898a – checked fuzzer compiles at each step, visually compared new patches with originals, checked original patches are in masterDrahtBot locked this on Aug 16, 2022
github-metadata-mirror
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: 2024-12-22 09:12 UTC
This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me