From 05441c2dc5f60e2025476d8ec94c9025032d118c Mon Sep 17 00:00:00 2001 From: Carl Dong Date: Wed, 22 Sep 2021 15:36:10 -0400 Subject: node/chainstate: Decouple from GetTime ...instead pass in a std::function Note that the static_cast is needed (apparently) for the compiler to know which overloaded GetTime to choose. --- src/node/chainstate.cpp | 6 +++--- src/node/chainstate.h | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src/node') diff --git a/src/node/chainstate.cpp b/src/node/chainstate.cpp index 56d1073bab..242b202d2f 100644 --- a/src/node/chainstate.cpp +++ b/src/node/chainstate.cpp @@ -5,7 +5,6 @@ #include #include // for CChainParams -#include // for GetTime #include // for CleanupBlockRevFiles, fHavePruned, fReindex #include // for ShutdownRequested #include // for a lot of things @@ -131,7 +130,8 @@ std::optional VerifyLoadedChainstate(ChainstateManage bool fReindexChainState, const CChainParams& chainparams, unsigned int check_blocks, - unsigned int check_level) + unsigned int check_level, + std::function get_unix_time_seconds) { auto is_coinsview_empty = [&](CChainState* chainstate) EXCLUSIVE_LOCKS_REQUIRED(::cs_main) { return fReset || fReindexChainState || chainstate->CoinsTip().GetBestBlock().IsNull(); @@ -143,7 +143,7 @@ std::optional VerifyLoadedChainstate(ChainstateManage for (CChainState* chainstate : chainman.GetAll()) { if (!is_coinsview_empty(chainstate)) { const CBlockIndex* tip = chainstate->m_chain.Tip(); - if (tip && tip->nTime > GetTime() + MAX_FUTURE_BLOCK_TIME) { + if (tip && tip->nTime > get_unix_time_seconds() + 2 * 60 * 60) { return ChainstateLoadVerifyError::ERROR_BLOCK_FROM_FUTURE; } diff --git a/src/node/chainstate.h b/src/node/chainstate.h index 84a86a082b..3c950409d3 100644 --- a/src/node/chainstate.h +++ b/src/node/chainstate.h @@ -74,6 +74,7 @@ std::optional VerifyLoadedChainstate(ChainstateManage bool fReindexChainState, const CChainParams& chainparams, unsigned int check_blocks, - unsigned int check_level); + unsigned int check_level, + std::function get_unix_time_seconds); #endif // BITCOIN_NODE_CHAINSTATE_H -- cgit v1.2.3