refactoring: move LoadChainTip to CChainState method

This commit is contained in:
James O'Beirne
2019-03-29 14:09:55 -04:00
parent f5809d5b13
commit bcf73d3b84
3 changed files with 18 additions and 14 deletions

View File

@@ -3932,28 +3932,31 @@ bool static LoadBlockIndexDB(const CChainParams& chainparams) EXCLUSIVE_LOCKS_RE
return true;
}
bool LoadChainTip(const CChainParams& chainparams)
bool CChainState::LoadChainTip(const CChainParams& chainparams)
{
AssertLockHeld(cs_main);
const CCoinsViewCache& coins_cache = ::ChainstateActive().CoinsTip();
const CCoinsViewCache& coins_cache = CoinsTip();
assert(!coins_cache.GetBestBlock().IsNull()); // Never called when the coins view is empty
const CBlockIndex* tip = m_chain.Tip();
if (::ChainActive().Tip() &&
::ChainActive().Tip()->GetBlockHash() == coins_cache.GetBestBlock()) return true;
if (tip && tip->GetBlockHash() == coins_cache.GetBestBlock()) {
return true;
}
// Load pointer to end of best chain
CBlockIndex* pindex = LookupBlockIndex(coins_cache.GetBestBlock());
if (!pindex) {
return false;
}
::ChainActive().SetTip(pindex);
::ChainstateActive().PruneBlockIndexCandidates();
m_chain.SetTip(pindex);
PruneBlockIndexCandidates();
tip = m_chain.Tip();
LogPrintf("Loaded best chain: hashBestChain=%s height=%d date=%s progress=%f\n",
::ChainActive().Tip()->GetBlockHash().ToString(), ::ChainActive().Height(),
FormatISO8601DateTime(::ChainActive().Tip()->GetBlockTime()),
GuessVerificationProgress(chainparams.TxData(), ::ChainActive().Tip()));
tip->GetBlockHash().ToString(),
m_chain.Height(),
FormatISO8601DateTime(tip->GetBlockTime()),
GuessVerificationProgress(chainparams.TxData(), tip));
return true;
}