Skip to content

Commit fa5ad4e

Browse files
author
MarcoFalke
committed
refactor: Move GuessVerificationProgress into ChainstateManager
1 parent 144f98d commit fa5ad4e

File tree

5 files changed

+21
-17
lines changed

5 files changed

+21
-17
lines changed

src/init.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1815,7 +1815,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
18151815
if (tip_info) {
18161816
tip_info->block_height = chain_active_height;
18171817
tip_info->block_time = best_block_time;
1818-
tip_info->verification_progress = GuessVerificationProgress(chainman.GetParams().TxData(), &tip);
1818+
tip_info->verification_progress = chainman.GuessVerificationProgress(&tip);
18191819
}
18201820
if (tip_info && chainman.m_best_header) {
18211821
tip_info->header_height = chainman.m_best_header->nHeight;

src/node/interfaces.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ class NodeImpl : public Node
324324
}
325325
double getVerificationProgress() override
326326
{
327-
return GuessVerificationProgress(chainman().GetParams().TxData(), WITH_LOCK(::cs_main, return chainman().ActiveChain().Tip()));
327+
return chainman().GuessVerificationProgress(WITH_LOCK(chainman().GetMutex(), return chainman().ActiveChain().Tip()));
328328
}
329329
bool isInitialBlockDownload() override
330330
{
@@ -406,9 +406,9 @@ class NodeImpl : public Node
406406
}
407407
std::unique_ptr<Handler> handleNotifyBlockTip(NotifyBlockTipFn fn) override
408408
{
409-
return MakeSignalHandler(::uiInterface.NotifyBlockTip_connect([fn](SynchronizationState sync_state, const CBlockIndex* block) {
409+
return MakeSignalHandler(::uiInterface.NotifyBlockTip_connect([fn, this](SynchronizationState sync_state, const CBlockIndex* block) {
410410
fn(sync_state, BlockTip{block->nHeight, block->GetBlockTime(), block->GetBlockHash()},
411-
GuessVerificationProgress(Params().TxData(), block));
411+
chainman().GuessVerificationProgress(block));
412412
}));
413413
}
414414
std::unique_ptr<Handler> handleNotifyHeaderTip(NotifyHeaderTipFn fn) override
@@ -639,8 +639,8 @@ class ChainImpl : public Chain
639639
void findCoins(std::map<COutPoint, Coin>& coins) override { return FindCoins(m_node, coins); }
640640
double guessVerificationProgress(const uint256& block_hash) override
641641
{
642-
LOCK(::cs_main);
643-
return GuessVerificationProgress(chainman().GetParams().TxData(), chainman().m_blockman.LookupBlockIndex(block_hash));
642+
LOCK(chainman().GetMutex());
643+
return chainman().GuessVerificationProgress(chainman().m_blockman.LookupBlockIndex(block_hash));
644644
}
645645
bool hasBlocks(const uint256& block_hash, int min_height, std::optional<int> max_height) override
646646
{

src/rpc/blockchain.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,7 +1334,7 @@ RPCHelpMan getblockchaininfo()
13341334
obj.pushKV("difficulty", GetDifficulty(tip));
13351335
obj.pushKV("time", tip.GetBlockTime());
13361336
obj.pushKV("mediantime", tip.GetMedianTimePast());
1337-
obj.pushKV("verificationprogress", GuessVerificationProgress(chainman.GetParams().TxData(), &tip));
1337+
obj.pushKV("verificationprogress", chainman.GuessVerificationProgress(&tip));
13381338
obj.pushKV("initialblockdownload", chainman.IsInitialBlockDownload());
13391339
obj.pushKV("chainwork", tip.nChainWork.GetHex());
13401340
obj.pushKV("size_on_disk", chainman.m_blockman.CalculateCurrentUsage());
@@ -3107,7 +3107,7 @@ return RPCHelpMan{
31073107
data.pushKV("blocks", (int)chain.Height());
31083108
data.pushKV("bestblockhash", tip->GetBlockHash().GetHex());
31093109
data.pushKV("difficulty", GetDifficulty(*tip));
3110-
data.pushKV("verificationprogress", GuessVerificationProgress(Params().TxData(), tip));
3110+
data.pushKV("verificationprogress", chainman.GuessVerificationProgress(tip));
31113111
data.pushKV("coins_db_cache_bytes", cs.m_coinsdb_cache_size_bytes);
31123112
data.pushKV("coins_tip_cache_bytes", cs.m_coinstip_cache_size_bytes);
31133113
if (cs.m_from_snapshot_blockhash) {

src/validation.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2963,6 +2963,7 @@ void Chainstate::PruneAndFlush()
29632963
}
29642964

29652965
static void UpdateTipLog(
2966+
const ChainstateManager& chainman,
29662967
const CCoinsViewCache& coins_tip,
29672968
const CBlockIndex* tip,
29682969
const CChainParams& params,
@@ -2977,7 +2978,7 @@ static void UpdateTipLog(
29772978
tip->GetBlockHash().ToString(), tip->nHeight, tip->nVersion,
29782979
log(tip->nChainWork.getdouble()) / log(2.0), tip->m_chain_tx_count,
29792980
FormatISO8601DateTime(tip->GetBlockTime()),
2980-
GuessVerificationProgress(params.TxData(), tip),
2981+
chainman.GuessVerificationProgress(tip),
29812982
coins_tip.DynamicMemoryUsage() * (1.0 / (1 << 20)),
29822983
coins_tip.GetCacheSize(),
29832984
!warning_messages.empty() ? strprintf(" warning='%s'", warning_messages) : "");
@@ -2996,7 +2997,7 @@ void Chainstate::UpdateTip(const CBlockIndex* pindexNew)
29962997
// Only log every so often so that we don't bury log messages at the tip.
29972998
constexpr int BACKGROUND_LOG_INTERVAL = 2000;
29982999
if (pindexNew->nHeight % BACKGROUND_LOG_INTERVAL == 0) {
2999-
UpdateTipLog(coins_tip, pindexNew, params, __func__, "[background validation] ", "");
3000+
UpdateTipLog(m_chainman, coins_tip, pindexNew, params, __func__, "[background validation] ", "");
30003001
}
30013002
return;
30023003
}
@@ -3022,7 +3023,7 @@ void Chainstate::UpdateTip(const CBlockIndex* pindexNew)
30223023
}
30233024
}
30243025
}
3025-
UpdateTipLog(coins_tip, pindexNew, params, __func__, "",
3026+
UpdateTipLog(m_chainman, coins_tip, pindexNew, params, __func__, "",
30263027
util::Join(warning_messages, Untranslated(", ")).original);
30273028
}
30283029

@@ -4700,7 +4701,7 @@ bool Chainstate::LoadChainTip()
47004701
tip->GetBlockHash().ToString(),
47014702
m_chain.Height(),
47024703
FormatISO8601DateTime(tip->GetBlockTime()),
4703-
GuessVerificationProgress(m_chainman.GetParams().TxData(), tip));
4704+
m_chainman.GuessVerificationProgress(tip));
47044705
return true;
47054706
}
47064707

@@ -5584,9 +5585,12 @@ bool Chainstate::ResizeCoinsCaches(size_t coinstip_size, size_t coinsdb_size)
55845585

55855586
//! Guess how far we are in the verification process at the given block index
55865587
//! require cs_main if pindex has not been validated yet (because m_chain_tx_count might be unset)
5587-
double GuessVerificationProgress(const ChainTxData& data, const CBlockIndex *pindex) {
5588-
if (pindex == nullptr)
5588+
double ChainstateManager::GuessVerificationProgress(const CBlockIndex* pindex) const
5589+
{
5590+
const ChainTxData& data{GetParams().TxData()};
5591+
if (pindex == nullptr) {
55895592
return 0.0;
5593+
}
55905594

55915595
if (!Assume(pindex->m_chain_tx_count > 0)) {
55925596
LogWarning("Internal bug detected: block %d has unset m_chain_tx_count (%s %s). Please report this issue here: %s\n",

src/validation.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,6 @@ CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams);
9292

9393
bool FatalError(kernel::Notifications& notifications, BlockValidationState& state, const bilingual_str& message);
9494

95-
/** Guess verification progress (as a fraction between 0.0=genesis and 1.0=current tip). */
96-
double GuessVerificationProgress(const ChainTxData& data, const CBlockIndex* pindex);
97-
9895
/** Prune block files up to a given height */
9996
void PruneBlockFilesManual(Chainstate& active_chainstate, int nManualPruneHeight);
10097

@@ -1151,6 +1148,9 @@ class ChainstateManager
11511148
/** Check whether we are doing an initial block download (synchronizing from disk or network) */
11521149
bool IsInitialBlockDownload() const;
11531150

1151+
/** Guess verification progress (as a fraction between 0.0=genesis and 1.0=current tip). */
1152+
double GuessVerificationProgress(const CBlockIndex* pindex) const;
1153+
11541154
/**
11551155
* Import blocks from an external file
11561156
*

0 commit comments

Comments
 (0)