|
|
|
@ -1834,6 +1834,8 @@ bool CChainState::ConnectBlock(const CBlock& block, CValidationState& state, CBl
|
|
|
|
|
uint256 hashPrevBlock = pindex->pprev == nullptr ? uint256() : pindex->pprev->GetBlockHash();
|
|
|
|
|
assert(hashPrevBlock == view.GetBestBlock());
|
|
|
|
|
|
|
|
|
|
nBlocksTotal++;
|
|
|
|
|
|
|
|
|
|
// Special case for the genesis block, skipping connection of its transactions
|
|
|
|
|
// (its coinbase is unspendable)
|
|
|
|
|
if (block.GetHash() == chainparams.GetConsensus().hashGenesisBlock) {
|
|
|
|
@ -1842,8 +1844,6 @@ bool CChainState::ConnectBlock(const CBlock& block, CValidationState& state, CBl
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
nBlocksTotal++;
|
|
|
|
|
|
|
|
|
|
bool fScriptChecks = true;
|
|
|
|
|
if (!hashAssumeValid.IsNull()) {
|
|
|
|
|
// We've been configured with the hash of a block which has been externally verified to have a valid history.
|
|
|
|
@ -2445,6 +2445,7 @@ bool CChainState::ConnectTip(CValidationState& state, const CChainParams& chainp
|
|
|
|
|
return error("%s: ConnectBlock %s failed, %s", __func__, pindexNew->GetBlockHash().ToString(), FormatStateMessage(state));
|
|
|
|
|
}
|
|
|
|
|
nTime3 = GetTimeMicros(); nTimeConnectTotal += nTime3 - nTime2;
|
|
|
|
|
assert(nBlocksTotal > 0);
|
|
|
|
|
LogPrint(BCLog::BENCH, " - Connect total: %.2fms [%.2fs (%.2fms/blk)]\n", (nTime3 - nTime2) * MILLI, nTimeConnectTotal * MICRO, nTimeConnectTotal * MILLI / nBlocksTotal);
|
|
|
|
|
bool flushed = view.Flush();
|
|
|
|
|
assert(flushed);
|
|
|
|
|