mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 20:32:35 -03:00
validation: Pass in chainstate to UpdateTip
This commit is contained in:
parent
a3ba08ba7d
commit
4bada76237
1 changed files with 7 additions and 5 deletions
|
@ -2433,7 +2433,7 @@ static void AppendWarning(bilingual_str& res, const bilingual_str& warn)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Check warning conditions and do some notifications on new chain tip set. */
|
/** Check warning conditions and do some notifications on new chain tip set. */
|
||||||
static void UpdateTip(CTxMemPool& mempool, const CBlockIndex* pindexNew, const CChainParams& chainParams)
|
static void UpdateTip(CTxMemPool& mempool, const CBlockIndex* pindexNew, const CChainParams& chainParams, CChainState& active_chainstate)
|
||||||
EXCLUSIVE_LOCKS_REQUIRED(::cs_main)
|
EXCLUSIVE_LOCKS_REQUIRED(::cs_main)
|
||||||
{
|
{
|
||||||
// New best block
|
// New best block
|
||||||
|
@ -2446,7 +2446,8 @@ static void UpdateTip(CTxMemPool& mempool, const CBlockIndex* pindexNew, const C
|
||||||
}
|
}
|
||||||
|
|
||||||
bilingual_str warning_messages;
|
bilingual_str warning_messages;
|
||||||
if (!::ChainstateActive().IsInitialBlockDownload()) {
|
assert(std::addressof(::ChainstateActive()) == std::addressof(active_chainstate));
|
||||||
|
if (!active_chainstate.IsInitialBlockDownload()) {
|
||||||
const CBlockIndex* pindex = pindexNew;
|
const CBlockIndex* pindex = pindexNew;
|
||||||
for (int bit = 0; bit < VERSIONBITS_NUM_BITS; bit++) {
|
for (int bit = 0; bit < VERSIONBITS_NUM_BITS; bit++) {
|
||||||
WarningBitsConditionChecker checker(bit);
|
WarningBitsConditionChecker checker(bit);
|
||||||
|
@ -2461,11 +2462,12 @@ static void UpdateTip(CTxMemPool& mempool, const CBlockIndex* pindexNew, const C
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert(std::addressof(::ChainstateActive()) == std::addressof(active_chainstate));
|
||||||
LogPrintf("%s: new best=%s height=%d version=0x%08x log2_work=%f tx=%lu date='%s' progress=%f cache=%.1fMiB(%utxo)%s\n", __func__,
|
LogPrintf("%s: new best=%s height=%d version=0x%08x log2_work=%f tx=%lu date='%s' progress=%f cache=%.1fMiB(%utxo)%s\n", __func__,
|
||||||
pindexNew->GetBlockHash().ToString(), pindexNew->nHeight, pindexNew->nVersion,
|
pindexNew->GetBlockHash().ToString(), pindexNew->nHeight, pindexNew->nVersion,
|
||||||
log(pindexNew->nChainWork.getdouble())/log(2.0), (unsigned long)pindexNew->nChainTx,
|
log(pindexNew->nChainWork.getdouble())/log(2.0), (unsigned long)pindexNew->nChainTx,
|
||||||
FormatISO8601DateTime(pindexNew->GetBlockTime()),
|
FormatISO8601DateTime(pindexNew->GetBlockTime()),
|
||||||
GuessVerificationProgress(chainParams.TxData(), pindexNew), ::ChainstateActive().CoinsTip().DynamicMemoryUsage() * (1.0 / (1<<20)), ::ChainstateActive().CoinsTip().GetCacheSize(),
|
GuessVerificationProgress(chainParams.TxData(), pindexNew), active_chainstate.CoinsTip().DynamicMemoryUsage() * (1.0 / (1<<20)), active_chainstate.CoinsTip().GetCacheSize(),
|
||||||
!warning_messages.empty() ? strprintf(" warning='%s'", warning_messages.original) : "");
|
!warning_messages.empty() ? strprintf(" warning='%s'", warning_messages.original) : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2521,7 +2523,7 @@ bool CChainState::DisconnectTip(BlockValidationState& state, const CChainParams&
|
||||||
|
|
||||||
m_chain.SetTip(pindexDelete->pprev);
|
m_chain.SetTip(pindexDelete->pprev);
|
||||||
|
|
||||||
UpdateTip(m_mempool, pindexDelete->pprev, chainparams);
|
UpdateTip(m_mempool, pindexDelete->pprev, chainparams, *this);
|
||||||
// Let wallets know transactions went from 1-confirmed to
|
// Let wallets know transactions went from 1-confirmed to
|
||||||
// 0-confirmed or conflicted:
|
// 0-confirmed or conflicted:
|
||||||
GetMainSignals().BlockDisconnected(pblock, pindexDelete);
|
GetMainSignals().BlockDisconnected(pblock, pindexDelete);
|
||||||
|
@ -2629,7 +2631,7 @@ bool CChainState::ConnectTip(BlockValidationState& state, const CChainParams& ch
|
||||||
disconnectpool.removeForBlock(blockConnecting.vtx);
|
disconnectpool.removeForBlock(blockConnecting.vtx);
|
||||||
// Update m_chain & related variables.
|
// Update m_chain & related variables.
|
||||||
m_chain.SetTip(pindexNew);
|
m_chain.SetTip(pindexNew);
|
||||||
UpdateTip(m_mempool, pindexNew, chainparams);
|
UpdateTip(m_mempool, pindexNew, chainparams, *this);
|
||||||
|
|
||||||
int64_t nTime6 = GetTimeMicros(); nTimePostConnect += nTime6 - nTime5; nTimeTotal += nTime6 - nTime1;
|
int64_t nTime6 = GetTimeMicros(); nTimePostConnect += nTime6 - nTime5; nTimeTotal += nTime6 - nTime1;
|
||||||
LogPrint(BCLog::BENCH, " - Connect postprocess: %.2fms [%.2fs (%.2fms/blk)]\n", (nTime6 - nTime5) * MILLI, nTimePostConnect * MICRO, nTimePostConnect * MILLI / nBlocksTotal);
|
LogPrint(BCLog::BENCH, " - Connect postprocess: %.2fms [%.2fs (%.2fms/blk)]\n", (nTime6 - nTime5) * MILLI, nTimePostConnect * MICRO, nTimePostConnect * MILLI / nBlocksTotal);
|
||||||
|
|
Loading…
Reference in a new issue