|
|
@ -2449,9 +2449,7 @@ static void UpdateTip(CTxMemPool& mempool, const CBlockIndex* pindexNew, const C
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bilingual_str warning_messages;
|
|
|
|
bilingual_str warning_messages;
|
|
|
|
int num_unexpected_version = 0;
|
|
|
|
if (!::ChainstateActive().IsInitialBlockDownload()) {
|
|
|
|
if (!::ChainstateActive().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);
|
|
|
@ -2465,14 +2463,6 @@ static void UpdateTip(CTxMemPool& mempool, const CBlockIndex* pindexNew, const C
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Check the version of the last 100 blocks to see if we need to upgrade:
|
|
|
|
|
|
|
|
for (int i = 0; i < 100 && pindex != nullptr; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
int32_t nExpectedVersion = ComputeBlockVersion(pindex->pprev, chainParams.GetConsensus());
|
|
|
|
|
|
|
|
if (pindex->nVersion > VERSIONBITS_LAST_OLD_BLOCK_VERSION && (pindex->nVersion & ~nExpectedVersion) != 0)
|
|
|
|
|
|
|
|
++num_unexpected_version;
|
|
|
|
|
|
|
|
pindex = pindex->pprev;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
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,
|
|
|
@ -2480,10 +2470,6 @@ static void UpdateTip(CTxMemPool& mempool, const CBlockIndex* pindexNew, const C
|
|
|
|
FormatISO8601DateTime(pindexNew->GetBlockTime()),
|
|
|
|
FormatISO8601DateTime(pindexNew->GetBlockTime()),
|
|
|
|
GuessVerificationProgress(chainParams.TxData(), pindexNew), ::ChainstateActive().CoinsTip().DynamicMemoryUsage() * (1.0 / (1<<20)), ::ChainstateActive().CoinsTip().GetCacheSize(),
|
|
|
|
GuessVerificationProgress(chainParams.TxData(), pindexNew), ::ChainstateActive().CoinsTip().DynamicMemoryUsage() * (1.0 / (1<<20)), ::ChainstateActive().CoinsTip().GetCacheSize(),
|
|
|
|
!warning_messages.empty() ? strprintf(" warning='%s'", warning_messages.original) : "");
|
|
|
|
!warning_messages.empty() ? strprintf(" warning='%s'", warning_messages.original) : "");
|
|
|
|
|
|
|
|
|
|
|
|
if (num_unexpected_version > 0) {
|
|
|
|
|
|
|
|
LogPrint(BCLog::VALIDATION, "%d of last 100 blocks have unexpected version\n", num_unexpected_version);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** Disconnect m_chain's tip.
|
|
|
|
/** Disconnect m_chain's tip.
|
|
|
|