diff --git a/src/consensus/activation.h b/src/consensus/activation.h --- a/src/consensus/activation.h +++ b/src/consensus/activation.h @@ -25,4 +25,7 @@ /** Check if May 15th, 2019 protocol upgrade has activated. */ bool IsGreatWallEnabled(const Config &config, const CBlockIndex *pindexPrev); +/** Check if Nov 15th, 2019 protocol upgrade has activated. */ +bool IsGravitonEnabled(const Config &config, const CBlockIndex *pindexPrev); + #endif // BITCOIN_CONSENSUS_ACTIVATION_H diff --git a/src/consensus/activation.cpp b/src/consensus/activation.cpp --- a/src/consensus/activation.cpp +++ b/src/consensus/activation.cpp @@ -57,3 +57,14 @@ "-greatwallactivationtime", config.GetChainParams().GetConsensus().greatWallActivationTime); } + +bool IsGravitonEnabled(const Config &config, const CBlockIndex *pindexPrev) { + if (pindexPrev == nullptr) { + return false; + } + + return pindexPrev->GetMedianTimePast() >= + gArgs.GetArg( + "-gravitonactivationtime", + config.GetChainParams().GetConsensus().gravitonActivationTime); +} diff --git a/src/test/activation_tests.cpp b/src/test/activation_tests.cpp --- a/src/test/activation_tests.cpp +++ b/src/test/activation_tests.cpp @@ -47,4 +47,28 @@ BOOST_CHECK(IsGreatWallEnabled(config, &blocks.back())); } +BOOST_AUTO_TEST_CASE(isgravitonenabled) { + DummyConfig config; + CBlockIndex prev; + + const auto activation = + config.GetChainParams().GetConsensus().gravitonActivationTime; + + BOOST_CHECK(!IsGravitonEnabled(config, nullptr)); + + std::array blocks; + for (size_t i = 1; i < blocks.size(); ++i) { + blocks[i].pprev = &blocks[i - 1]; + } + + SetMTP(blocks, activation - 1); + BOOST_CHECK(!IsGravitonEnabled(config, &blocks.back())); + + SetMTP(blocks, activation); + BOOST_CHECK(IsGravitonEnabled(config, &blocks.back())); + + SetMTP(blocks, activation + 1); + BOOST_CHECK(IsGravitonEnabled(config, &blocks.back())); +} + BOOST_AUTO_TEST_SUITE_END() diff --git a/test/lint/check-doc.py b/test/lint/check-doc.py --- a/test/lint/check-doc.py +++ b/test/lint/check-doc.py @@ -30,6 +30,8 @@ '-dbcrashratio', '-debugnet', '-forcecompactdb', + # TODO remove after the Nov 2019 upgrade + '-gravitonactivationtime', # TODO remove after the may 2019 fork '-greatwallactivationtime', '-h',