@ -61,7 +61,7 @@ CCriticalSection cs_main;
@@ -61,7 +61,7 @@ CCriticalSection cs_main;
BlockMap mapBlockIndex ;
CChain chainActive ;
CBlockIndex * pindexBestHeader = NULL ;
CBlockIndex * pindexBestHeader = nullptr ;
CWaitableCriticalSection csBestBlock ;
CConditionVariable cvBlockChange ;
int nScriptCheckThreads = 0 ;
@ -177,9 +177,9 @@ CBlockIndex* FindForkInGlobalIndex(const CChain& chain, const CBlockLocator& loc
@@ -177,9 +177,9 @@ CBlockIndex* FindForkInGlobalIndex(const CChain& chain, const CBlockLocator& loc
return chain . Genesis ( ) ;
}
CCoinsViewDB * pcoinsdbview = NULL ;
CCoinsViewCache * pcoinsTip = NULL ;
CBlockTreeDB * pblocktree = NULL ;
CCoinsViewDB * pcoinsdbview = nullptr ;
CCoinsViewCache * pcoinsTip = nullptr ;
CBlockTreeDB * pblocktree = nullptr ;
enum FlushStateMode {
FLUSH_STATE_NONE ,
@ -378,7 +378,7 @@ void UpdateMempoolForReorg(DisconnectedBlockTransactions &disconnectpool, bool f
@@ -378,7 +378,7 @@ void UpdateMempoolForReorg(DisconnectedBlockTransactions &disconnectpool, bool f
while ( it ! = disconnectpool . queuedTx . get < insertion_order > ( ) . rend ( ) ) {
// ignore validation errors in resurrected transactions
CValidationState stateDummy ;
if ( ! fAddToMempool | | ( * it ) - > IsCoinBase ( ) | | ! AcceptToMemoryPool ( mempool , stateDummy , * it , false , NULL , NULL , true ) ) {
if ( ! fAddToMempool | | ( * it ) - > IsCoinBase ( ) | | ! AcceptToMemoryPool ( mempool , stateDummy , * it , false , nullptr , nullptr , true ) ) {
// If the transaction doesn't make it in to the mempool, remove any
// transactions that depend on it (which would now be orphans).
mempool . removeRecursive ( * * it , MemPoolRemovalReason : : REORG ) ;
@ -899,7 +899,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
@@ -899,7 +899,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
/** Return transaction in txOut, and if it was found inside a block, its hash is placed in hashBlock */
bool GetTransaction ( const uint256 & hash , CTransactionRef & txOut , const Consensus : : Params & consensusParams , uint256 & hashBlock , bool fAllowSlow )
{
CBlockIndex * pindexSlow = NULL ;
CBlockIndex * pindexSlow = nullptr ;
LOCK ( cs_main ) ;
@ -1045,7 +1045,7 @@ bool IsInitialBlockDownload()
@@ -1045,7 +1045,7 @@ bool IsInitialBlockDownload()
return false ;
if ( fImporting | | fReindex )
return true ;
if ( chainActive . Tip ( ) = = NULL )
if ( chainActive . Tip ( ) = = nullptr )
return true ;
if ( chainActive . Tip ( ) - > nChainWork < UintToArith256 ( chainParams . GetConsensus ( ) . nMinimumChainWork ) )
return true ;
@ -1056,7 +1056,7 @@ bool IsInitialBlockDownload()
@@ -1056,7 +1056,7 @@ bool IsInitialBlockDownload()
return false ;
}
CBlockIndex * pindexBestForkTip = NULL , * pindexBestForkBase = NULL ;
CBlockIndex * pindexBestForkTip = nullptr , * pindexBestForkBase = nullptr ;
static void AlertNotify ( const std : : string & strMessage )
{
@ -1086,7 +1086,7 @@ static void CheckForkWarningConditions()
@@ -1086,7 +1086,7 @@ static void CheckForkWarningConditions()
// If our best fork is no longer within 72 blocks (+/- 12 hours if no one mines it)
// of our head, drop it
if ( pindexBestForkTip & & chainActive . Height ( ) - pindexBestForkTip - > nHeight > = 72 )
pindexBestForkTip = NULL ;
pindexBestForkTip = nullptr ;
if ( pindexBestForkTip | | ( pindexBestInvalid & & pindexBestInvalid - > nChainWork > chainActive . Tip ( ) - > nChainWork + ( GetBlockProof ( * chainActive . Tip ( ) ) * 6 ) ) )
{
@ -1226,7 +1226,7 @@ void InitScriptExecutionCache() {
@@ -1226,7 +1226,7 @@ void InitScriptExecutionCache() {
* Check whether all inputs of this transaction are valid ( no double spends , scripts & sigs , amounts )
* This does not modify the UTXO set .
*
* If pvChecks is not NULL , script checks are pushed onto it instead of being performed inline . Any
* If pvChecks is not nullptr , script checks are pushed onto it instead of being performed inline . Any
* script checks which are not necessary ( eg due to script execution cache hits ) are , obviously ,
* not pushed onto pvChecks / run .
*
@ -1633,7 +1633,7 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
@@ -1633,7 +1633,7 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
AssertLockHeld ( cs_main ) ;
assert ( pindex ) ;
// pindex->phashBlock can be null if called by CreateNewBlock/TestBlockValidity
assert ( ( pindex - > phashBlock = = NULL ) | |
assert ( ( pindex - > phashBlock = = nullptr ) | |
( * pindex - > phashBlock = = block . GetHash ( ) ) ) ;
int64_t nTimeStart = GetTimeMicros ( ) ;
@ -1642,7 +1642,7 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
@@ -1642,7 +1642,7 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
return error ( " %s: Consensus::CheckBlock: %s " , __func__ , FormatStateMessage ( state ) ) ;
// verify that the view's current state corresponds to the previous block
uint256 hashPrevBlock = pindex - > pprev = = NULL ? uint256 ( ) : pindex - > pprev - > GetBlockHash ( ) ;
uint256 hashPrevBlock = pindex - > pprev = = nullptr ? uint256 ( ) : pindex - > pprev - > GetBlockHash ( ) ;
assert ( hashPrevBlock = = view . GetBestBlock ( ) ) ;
// Special case for the genesis block, skipping connection of its transactions
@ -1733,7 +1733,7 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
@@ -1733,7 +1733,7 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
CBlockUndo blockundo ;
CCheckQueueControl < CScriptCheck > control ( fScriptChecks & & nScriptCheckThreads ? & scriptcheckqueue : NULL ) ;
CCheckQueueControl < CScriptCheck > control ( fScriptChecks & & nScriptCheckThreads ? & scriptcheckqueue : nullptr ) ;
std : : vector < int > prevheights ;
CAmount nFees = 0 ;
@ -1787,7 +1787,7 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
@@ -1787,7 +1787,7 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
std : : vector < CScriptCheck > vChecks ;
bool fCacheResults = fJustCheck ; /* Don't cache results if we're actually connecting blocks (still consult the cache, though) */
if ( ! CheckInputs ( tx , state , view , fScriptChecks , flags , fCacheResults , fCacheResults , txdata [ i ] , nScriptCheckThreads ? & vChecks : NULL ) )
if ( ! CheckInputs ( tx , state , view , fScriptChecks , flags , fCacheResults , fCacheResults , txdata [ i ] , nScriptCheckThreads ? & vChecks : nullptr ) )
return error ( " ConnectBlock(): CheckInputs on %s failed with %s " ,
tx . GetHash ( ) . ToString ( ) , FormatStateMessage ( state ) ) ;
control . Add ( vChecks ) ;
@ -2014,7 +2014,7 @@ void static UpdateTip(CBlockIndex *pindexNew, const CChainParams& chainParams) {
@@ -2014,7 +2014,7 @@ void static UpdateTip(CBlockIndex *pindexNew, const CChainParams& chainParams) {
}
}
// Check the version of the last 100 blocks to see if we need to upgrade:
for ( int i = 0 ; i < 100 & & pindex ! = NULL ; i + + )
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 )
@ -2047,7 +2047,7 @@ void static UpdateTip(CBlockIndex *pindexNew, const CChainParams& chainParams) {
@@ -2047,7 +2047,7 @@ void static UpdateTip(CBlockIndex *pindexNew, const CChainParams& chainParams) {
* should make the mempool consistent again by calling UpdateMempoolForReorg .
* with cs_main held .
*
* If disconnectpool is NULL , then no disconnected transactions are added to
* If disconnectpool is nullptr , then no disconnected transactions are added to
* disconnectpool ( note that the caller is responsible for mempool consistency
* in any case ) .
*/
@ -2103,7 +2103,7 @@ static int64_t nTimeChainState = 0;
@@ -2103,7 +2103,7 @@ static int64_t nTimeChainState = 0;
static int64_t nTimePostConnect = 0 ;
struct PerBlockConnectTrace {
CBlockIndex * pindex = NULL ;
CBlockIndex * pindex = nullptr ;
std : : shared_ptr < const CBlock > pblock ;
std : : shared_ptr < std : : vector < CTransactionRef > > conflictedTxs ;
PerBlockConnectTrace ( ) : conflictedTxs ( std : : make_shared < std : : vector < CTransactionRef > > ( ) ) { }
@ -2168,7 +2168,7 @@ public:
@@ -2168,7 +2168,7 @@ public:
} ;
/**
* Connect a new block to chainActive . pblock is either NULL or a pointer to a CBlock
* Connect a new block to chainActive . pblock is either nullptr or a pointer to a CBlock
* corresponding to pindexNew , to bypass loading it again from disk .
*
* The block is added to connectTrace if connection succeeds .
@ -2233,13 +2233,13 @@ bool static ConnectTip(CValidationState& state, const CChainParams& chainparams,
@@ -2233,13 +2233,13 @@ bool static ConnectTip(CValidationState& state, const CChainParams& chainparams,
*/
static CBlockIndex * FindMostWorkChain ( ) {
do {
CBlockIndex * pindexNew = NULL ;
CBlockIndex * pindexNew = nullptr ;
// Find the best candidate header.
{
std : : set < CBlockIndex * , CBlockIndexWorkComparator > : : reverse_iterator it = setBlockIndexCandidates . rbegin ( ) ;
if ( it = = setBlockIndexCandidates . rend ( ) )
return NULL ;
return nullptr ;
pindexNew = * it ;
}
@ -2258,7 +2258,7 @@ static CBlockIndex* FindMostWorkChain() {
@@ -2258,7 +2258,7 @@ static CBlockIndex* FindMostWorkChain() {
bool fMissingData = ! ( pindexTest - > nStatus & BLOCK_HAVE_DATA ) ;
if ( fFailedChain | | fMissingData ) {
// Candidate chain is not usable (either invalid or missing data)
if ( fFailedChain & & ( pindexBestInvalid = = NULL | | pindexNew - > nChainWork > pindexBestInvalid - > nChainWork ) )
if ( fFailedChain & & ( pindexBestInvalid = = nullptr | | pindexNew - > nChainWork > pindexBestInvalid - > nChainWork ) )
pindexBestInvalid = pindexNew ;
CBlockIndex * pindexFailed = pindexNew ;
// Remove the entire chain from the set.
@ -2299,7 +2299,7 @@ static void PruneBlockIndexCandidates() {
@@ -2299,7 +2299,7 @@ static void PruneBlockIndexCandidates() {
/**
* Try to make some progress towards making pindexMostWork the active block .
* pblock is either NULL or a pointer to a CBlock corresponding to pindexMostWork .
* pblock is either nullptr or a pointer to a CBlock corresponding to pindexMostWork .
*/
static bool ActivateBestChainStep ( CValidationState & state , const CChainParams & chainparams , CBlockIndex * pindexMostWork , const std : : shared_ptr < const CBlock > & pblock , bool & fInvalidFound , ConnectTrace & connectTrace )
{
@ -2385,8 +2385,8 @@ static bool ActivateBestChainStep(CValidationState& state, const CChainParams& c
@@ -2385,8 +2385,8 @@ static bool ActivateBestChainStep(CValidationState& state, const CChainParams& c
static void NotifyHeaderTip ( ) {
bool fNotify = false ;
bool fInitialBlockDownload = false ;
static CBlockIndex * pindexHeaderOld = NULL ;
CBlockIndex * pindexHeader = NULL ;
static CBlockIndex * pindexHeaderOld = nullptr ;
CBlockIndex * pindexHeader = nullptr ;
{
LOCK ( cs_main ) ;
pindexHeader = pindexBestHeader ;
@ -2405,7 +2405,7 @@ static void NotifyHeaderTip() {
@@ -2405,7 +2405,7 @@ static void NotifyHeaderTip() {
/**
* Make the best chain active , in multiple steps . The result is either failure
* or an activated best chain . pblock is either NULL or a pointer to a block
* or an activated best chain . pblock is either nullptr or a pointer to a block
* that is already loaded ( to avoid loading it again from disk ) .
*/
bool ActivateBestChain ( CValidationState & state , const CChainParams & chainparams , std : : shared_ptr < const CBlock > pblock ) {
@ -2414,8 +2414,8 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams,
@@ -2414,8 +2414,8 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams,
// us in the middle of ProcessNewBlock - do not assume pblock is set
// sanely for performance or correctness!
CBlockIndex * pindexMostWork = NULL ;
CBlockIndex * pindexNewTip = NULL ;
CBlockIndex * pindexMostWork = nullptr ;
CBlockIndex * pindexNewTip = nullptr ;
int nStopAtHeight = GetArg ( " -stopatheight " , DEFAULT_STOPATHEIGHT ) ;
do {
boost : : this_thread : : interruption_point ( ) ;
@ -2429,12 +2429,12 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams,
@@ -2429,12 +2429,12 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams,
ConnectTrace connectTrace ( mempool ) ; // Destructed before cs_main is unlocked
CBlockIndex * pindexOldTip = chainActive . Tip ( ) ;
if ( pindexMostWork = = NULL ) {
if ( pindexMostWork = = nullptr ) {
pindexMostWork = FindMostWorkChain ( ) ;
}
// Whether we have anything to do at all.
if ( pindexMostWork = = NULL | | pindexMostWork = = chainActive . Tip ( ) )
if ( pindexMostWork = = nullptr | | pindexMostWork = = chainActive . Tip ( ) )
return true ;
bool fInvalidFound = false ;
@ -2444,7 +2444,7 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams,
@@ -2444,7 +2444,7 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams,
if ( fInvalidFound ) {
// Wipe cache, we may need another branch now.
pindexMostWork = NULL ;
pindexMostWork = nullptr ;
}
pindexNewTip = chainActive . Tip ( ) ;
pindexFork = chainActive . FindFork ( pindexOldTip ) ;
@ -2569,14 +2569,14 @@ bool ResetBlockFailureFlags(CBlockIndex *pindex) {
@@ -2569,14 +2569,14 @@ bool ResetBlockFailureFlags(CBlockIndex *pindex) {
}
if ( it - > second = = pindexBestInvalid ) {
// Reset invalid block marker if it was pointing to one of those.
pindexBestInvalid = NULL ;
pindexBestInvalid = nullptr ;
}
}
it + + ;
}
// Remove the invalidity flag from all ancestors too.
while ( pindex ! = NULL ) {
while ( pindex ! = nullptr ) {
if ( pindex - > nStatus & BLOCK_FAILED_MASK ) {
pindex - > nStatus & = ~ BLOCK_FAILED_MASK ;
setDirtyBlockIndex . insert ( pindex ) ;
@ -2613,7 +2613,7 @@ static CBlockIndex* AddToBlockIndex(const CBlockHeader& block)
@@ -2613,7 +2613,7 @@ static CBlockIndex* AddToBlockIndex(const CBlockHeader& block)
pindexNew - > nTimeMax = ( pindexNew - > pprev ? std : : max ( pindexNew - > pprev - > nTimeMax , pindexNew - > nTime ) : pindexNew - > nTime ) ;
pindexNew - > nChainWork = ( pindexNew - > pprev ? pindexNew - > pprev - > nChainWork : 0 ) + GetBlockProof ( * pindexNew ) ;
pindexNew - > RaiseValidity ( BLOCK_VALID_TREE ) ;
if ( pindexBestHeader = = NULL | | pindexBestHeader - > nChainWork < pindexNew - > nChainWork )
if ( pindexBestHeader = = nullptr | | pindexBestHeader - > nChainWork < pindexNew - > nChainWork )
pindexBestHeader = pindexNew ;
setDirtyBlockIndex . insert ( pindexNew ) ;
@ -2636,7 +2636,7 @@ static bool ReceivedBlockTransactions(const CBlock &block, CValidationState& sta
@@ -2636,7 +2636,7 @@ static bool ReceivedBlockTransactions(const CBlock &block, CValidationState& sta
pindexNew - > RaiseValidity ( BLOCK_VALID_TRANSACTIONS ) ;
setDirtyBlockIndex . insert ( pindexNew ) ;
if ( pindexNew - > pprev = = NULL | | pindexNew - > pprev - > nChainTx ) {
if ( pindexNew - > pprev = = nullptr | | pindexNew - > pprev - > nChainTx ) {
// If pindexNew is the genesis block or all parents are BLOCK_VALID_TRANSACTIONS.
std : : deque < CBlockIndex * > queue ;
queue . push_back ( pindexNew ) ;
@ -2650,7 +2650,7 @@ static bool ReceivedBlockTransactions(const CBlock &block, CValidationState& sta
@@ -2650,7 +2650,7 @@ static bool ReceivedBlockTransactions(const CBlock &block, CValidationState& sta
LOCK ( cs_nBlockSequenceId ) ;
pindex - > nSequenceId = nBlockSequenceId + + ;
}
if ( chainActive . Tip ( ) = = NULL | | ! setBlockIndexCandidates . value_comp ( ) ( pindex , chainActive . Tip ( ) ) ) {
if ( chainActive . Tip ( ) = = nullptr | | ! setBlockIndexCandidates . value_comp ( ) ( pindex , chainActive . Tip ( ) ) ) {
setBlockIndexCandidates . insert ( pindex ) ;
}
std : : pair < std : : multimap < CBlockIndex * , CBlockIndex * > : : iterator , std : : multimap < CBlockIndex * , CBlockIndex * > : : iterator > range = mapBlocksUnlinked . equal_range ( pindex ) ;
@ -2886,7 +2886,7 @@ std::vector<unsigned char> GenerateCoinbaseCommitment(CBlock& block, const CBloc
@@ -2886,7 +2886,7 @@ std::vector<unsigned char> GenerateCoinbaseCommitment(CBlock& block, const CBloc
std : : vector < unsigned char > ret ( 32 , 0x00 ) ;
if ( consensusParams . vDeployments [ Consensus : : DEPLOYMENT_SEGWIT ] . nTimeout ! = 0 ) {
if ( commitpos = = - 1 ) {
uint256 witnessroot = BlockWitnessMerkleRoot ( block , NULL ) ;
uint256 witnessroot = BlockWitnessMerkleRoot ( block , nullptr ) ;
CHash256 ( ) . Write ( witnessroot . begin ( ) , 32 ) . Write ( ret . data ( ) , 32 ) . Finalize ( witnessroot . begin ( ) ) ;
CTxOut out ;
out . nValue = 0 ;
@ -2913,7 +2913,7 @@ std::vector<unsigned char> GenerateCoinbaseCommitment(CBlock& block, const CBloc
@@ -2913,7 +2913,7 @@ std::vector<unsigned char> GenerateCoinbaseCommitment(CBlock& block, const CBloc
* set ; UTXO - related validity checks are done in ConnectBlock ( ) . */
static bool ContextualCheckBlockHeader ( const CBlockHeader & block , CValidationState & state , const Consensus : : Params & consensusParams , const CBlockIndex * pindexPrev , int64_t nAdjustedTime )
{
assert ( pindexPrev ! = NULL ) ;
assert ( pindexPrev ! = nullptr ) ;
const int nHeight = pindexPrev - > nHeight + 1 ;
// Check proof of work
if ( block . nBits ! = GetNextWorkRequired ( pindexPrev , & block , consensusParams ) )
@ -2940,7 +2940,7 @@ static bool ContextualCheckBlockHeader(const CBlockHeader& block, CValidationSta
@@ -2940,7 +2940,7 @@ static bool ContextualCheckBlockHeader(const CBlockHeader& block, CValidationSta
static bool ContextualCheckBlock ( const CBlock & block , CValidationState & state , const Consensus : : Params & consensusParams , const CBlockIndex * pindexPrev )
{
const int nHeight = pindexPrev = = NULL ? 0 : pindexPrev - > nHeight + 1 ;
const int nHeight = pindexPrev = = nullptr ? 0 : pindexPrev - > nHeight + 1 ;
// Start enforcing BIP113 (Median Time Past) using versionbits logic.
int nLockTimeFlags = 0 ;
@ -3025,7 +3025,7 @@ static bool AcceptBlockHeader(const CBlockHeader& block, CValidationState& state
@@ -3025,7 +3025,7 @@ static bool AcceptBlockHeader(const CBlockHeader& block, CValidationState& state
// Check for duplicate
uint256 hash = block . GetHash ( ) ;
BlockMap : : iterator miSelf = mapBlockIndex . find ( hash ) ;
CBlockIndex * pindex = NULL ;
CBlockIndex * pindex = nullptr ;
if ( hash ! = chainparams . GetConsensus ( ) . hashGenesisBlock ) {
if ( miSelf ! = mapBlockIndex . end ( ) ) {
@ -3042,7 +3042,7 @@ static bool AcceptBlockHeader(const CBlockHeader& block, CValidationState& state
@@ -3042,7 +3042,7 @@ static bool AcceptBlockHeader(const CBlockHeader& block, CValidationState& state
return error ( " %s: Consensus::CheckBlockHeader: %s, %s " , __func__ , hash . ToString ( ) , FormatStateMessage ( state ) ) ;
// Get prev block index
CBlockIndex * pindexPrev = NULL ;
CBlockIndex * pindexPrev = nullptr ;
BlockMap : : iterator mi = mapBlockIndex . find ( block . hashPrevBlock ) ;
if ( mi = = mapBlockIndex . end ( ) )
return state . DoS ( 10 , error ( " %s: prev block not found " , __func__ ) , 0 , " prev-blk-not-found " ) ;
@ -3057,7 +3057,7 @@ static bool AcceptBlockHeader(const CBlockHeader& block, CValidationState& state
@@ -3057,7 +3057,7 @@ static bool AcceptBlockHeader(const CBlockHeader& block, CValidationState& state
if ( ! ContextualCheckBlockHeader ( block , state , chainparams . GetConsensus ( ) , pindexPrev , GetAdjustedTime ( ) ) )
return error ( " %s: Consensus::ContextualCheckBlockHeader: %s, %s " , __func__ , hash . ToString ( ) , FormatStateMessage ( state ) ) ;
}
if ( pindex = = NULL )
if ( pindex = = nullptr )
pindex = AddToBlockIndex ( block ) ;
if ( ppindex )
@ -3074,7 +3074,7 @@ bool ProcessNewBlockHeaders(const std::vector<CBlockHeader>& headers, CValidatio
@@ -3074,7 +3074,7 @@ bool ProcessNewBlockHeaders(const std::vector<CBlockHeader>& headers, CValidatio
{
LOCK ( cs_main ) ;
for ( const CBlockHeader & header : headers ) {
CBlockIndex * pindex = NULL ; // Use a temp pindex instead of ppindex to avoid a const_cast
CBlockIndex * pindex = nullptr ; // Use a temp pindex instead of ppindex to avoid a const_cast
if ( ! AcceptBlockHeader ( header , state , chainparams , & pindex ) ) {
return false ;
}
@ -3087,7 +3087,7 @@ bool ProcessNewBlockHeaders(const std::vector<CBlockHeader>& headers, CValidatio
@@ -3087,7 +3087,7 @@ bool ProcessNewBlockHeaders(const std::vector<CBlockHeader>& headers, CValidatio
return true ;
}
/** Store block on disk. If dbp is non-NULL , the file is known to already reside on disk */
/** Store block on disk. If dbp is non-nullptr , the file is known to already reside on disk */
static bool AcceptBlock ( const std : : shared_ptr < const CBlock > & pblock , CValidationState & state , const CChainParams & chainparams , CBlockIndex * * ppindex , bool fRequested , const CDiskBlockPos * dbp , bool * fNewBlock )
{
const CBlock & block = * pblock ;
@ -3095,7 +3095,7 @@ static bool AcceptBlock(const std::shared_ptr<const CBlock>& pblock, CValidation
@@ -3095,7 +3095,7 @@ static bool AcceptBlock(const std::shared_ptr<const CBlock>& pblock, CValidation
if ( fNewBlock ) * fNewBlock = false ;
AssertLockHeld ( cs_main ) ;
CBlockIndex * pindexDummy = NULL ;
CBlockIndex * pindexDummy = nullptr ;
CBlockIndex * & pindex = ppindex ? * ppindex : pindexDummy ;
if ( ! AcceptBlockHeader ( block , state , chainparams , & pindex ) )
@ -3148,11 +3148,11 @@ static bool AcceptBlock(const std::shared_ptr<const CBlock>& pblock, CValidation
@@ -3148,11 +3148,11 @@ static bool AcceptBlock(const std::shared_ptr<const CBlock>& pblock, CValidation
try {
unsigned int nBlockSize = : : GetSerializeSize ( block , SER_DISK , CLIENT_VERSION ) ;
CDiskBlockPos blockPos ;
if ( dbp ! = NULL )
if ( dbp ! = nullptr )
blockPos = * dbp ;
if ( ! FindBlockPos ( state , blockPos , nBlockSize + 8 , nHeight , block . GetBlockTime ( ) , dbp ! = NULL ) )
if ( ! FindBlockPos ( state , blockPos , nBlockSize + 8 , nHeight , block . GetBlockTime ( ) , dbp ! = nullptr ) )
return error ( " AcceptBlock() : FindBlockPos failed " ) ;
if ( dbp = = NULL )
if ( dbp = = nullptr )
if ( ! WriteBlockToDisk ( block , blockPos , chainparams . MessageStart ( ) ) )
AbortNode ( state , " Failed to write block " ) ;
if ( ! ReceivedBlockTransactions ( block , state , pindex , blockPos , chainparams . GetConsensus ( ) ) )
@ -3170,7 +3170,7 @@ static bool AcceptBlock(const std::shared_ptr<const CBlock>& pblock, CValidation
@@ -3170,7 +3170,7 @@ static bool AcceptBlock(const std::shared_ptr<const CBlock>& pblock, CValidation
bool ProcessNewBlock ( const CChainParams & chainparams , const std : : shared_ptr < const CBlock > pblock , bool fForceProcessing , bool * fNewBlock )
{
{
CBlockIndex * pindex = NULL ;
CBlockIndex * pindex = nullptr ;
if ( fNewBlock ) * fNewBlock = false ;
CValidationState state ;
// Ensure that CheckBlock() passes before calling AcceptBlock, as
@ -3181,7 +3181,7 @@ bool ProcessNewBlock(const CChainParams& chainparams, const std::shared_ptr<cons
@@ -3181,7 +3181,7 @@ bool ProcessNewBlock(const CChainParams& chainparams, const std::shared_ptr<cons
if ( ret ) {
// Store to disk
ret = AcceptBlock ( pblock , state , chainparams , & pindex , fForceProcessing , NULL , fNewBlock ) ;
ret = AcceptBlock ( pblock , state , chainparams , & pindex , fForceProcessing , nullptr , fNewBlock ) ;
}
CheckBlockIndex ( chainparams . GetConsensus ( ) ) ;
if ( ! ret ) {
@ -3288,7 +3288,7 @@ static void FindFilesToPruneManual(std::set<int>& setFilesToPrune, int nManualPr
@@ -3288,7 +3288,7 @@ static void FindFilesToPruneManual(std::set<int>& setFilesToPrune, int nManualPr
assert ( fPruneMode & & nManualPruneHeight > 0 ) ;
LOCK2 ( cs_main , cs_LastBlockFile ) ;
if ( chainActive . Tip ( ) = = NULL )
if ( chainActive . Tip ( ) = = nullptr )
return ;
// last block to prune is the lesser of (user-specified height, MIN_BLOCKS_TO_KEEP from the tip)
@ -3330,7 +3330,7 @@ void PruneBlockFilesManual(int nManualPruneHeight)
@@ -3330,7 +3330,7 @@ void PruneBlockFilesManual(int nManualPruneHeight)
static void FindFilesToPrune ( std : : set < int > & setFilesToPrune , uint64_t nPruneAfterHeight )
{
LOCK2 ( cs_main , cs_LastBlockFile ) ;
if ( chainActive . Tip ( ) = = NULL | | nPruneTarget = = 0 ) {
if ( chainActive . Tip ( ) = = nullptr | | nPruneTarget = = 0 ) {
return ;
}
if ( ( uint64_t ) chainActive . Tip ( ) - > nHeight < = nPruneAfterHeight ) {
@ -3388,7 +3388,7 @@ bool CheckDiskSpace(uint64_t nAdditionalBytes)
@@ -3388,7 +3388,7 @@ bool CheckDiskSpace(uint64_t nAdditionalBytes)
static FILE * OpenDiskFile ( const CDiskBlockPos & pos , const char * prefix , bool fReadOnly )
{
if ( pos . IsNull ( ) )
return NULL ;
return nullptr ;
fs : : path path = GetBlockPosFilename ( pos , prefix ) ;
fs : : create_directories ( path . parent_path ( ) ) ;
FILE * file = fsbridge : : fopen ( path , " rb+ " ) ;
@ -3396,13 +3396,13 @@ static FILE* OpenDiskFile(const CDiskBlockPos &pos, const char *prefix, bool fRe
@@ -3396,13 +3396,13 @@ static FILE* OpenDiskFile(const CDiskBlockPos &pos, const char *prefix, bool fRe
file = fsbridge : : fopen ( path , " wb+ " ) ;
if ( ! file ) {
LogPrintf ( " Unable to open file %s \n " , path . string ( ) ) ;
return NULL ;
return nullptr ;
}
if ( pos . nPos ) {
if ( fseek ( file , pos . nPos , SEEK_SET ) ) {
LogPrintf ( " Unable to seek to position %u of %s \n " , pos . nPos , path . string ( ) ) ;
fclose ( file ) ;
return NULL ;
return nullptr ;
}
}
return file ;
@ -3425,7 +3425,7 @@ fs::path GetBlockPosFilename(const CDiskBlockPos &pos, const char *prefix)
@@ -3425,7 +3425,7 @@ fs::path GetBlockPosFilename(const CDiskBlockPos &pos, const char *prefix)
CBlockIndex * InsertBlockIndex ( uint256 hash )
{
if ( hash . IsNull ( ) )
return NULL ;
return nullptr ;
// Return existing
BlockMap : : iterator mi = mapBlockIndex . find ( hash ) ;
@ -3477,13 +3477,13 @@ bool static LoadBlockIndexDB(const CChainParams& chainparams)
@@ -3477,13 +3477,13 @@ bool static LoadBlockIndexDB(const CChainParams& chainparams)
pindex - > nChainTx = pindex - > nTx ;
}
}
if ( pindex - > IsValid ( BLOCK_VALID_TRANSACTIONS ) & & ( pindex - > nChainTx | | pindex - > pprev = = NULL ) )
if ( pindex - > IsValid ( BLOCK_VALID_TRANSACTIONS ) & & ( pindex - > nChainTx | | pindex - > pprev = = nullptr ) )
setBlockIndexCandidates . insert ( pindex ) ;
if ( pindex - > nStatus & BLOCK_FAILED_MASK & & ( ! pindexBestInvalid | | pindex - > nChainWork > pindexBestInvalid - > nChainWork ) )
pindexBestInvalid = pindex ;
if ( pindex - > pprev )
pindex - > BuildSkip ( ) ;
if ( pindex - > IsValid ( BLOCK_VALID_TREE ) & & ( pindexBestHeader = = NULL | | CBlockIndexWorkComparator ( ) ( pindexBestHeader , pindex ) ) )
if ( pindex - > IsValid ( BLOCK_VALID_TREE ) & & ( pindexBestHeader = = nullptr | | CBlockIndexWorkComparator ( ) ( pindexBestHeader , pindex ) ) )
pindexBestHeader = pindex ;
}
@ -3581,7 +3581,7 @@ CVerifyDB::~CVerifyDB()
@@ -3581,7 +3581,7 @@ CVerifyDB::~CVerifyDB()
bool CVerifyDB : : VerifyDB ( const CChainParams & chainparams , CCoinsView * coinsview , int nCheckLevel , int nCheckDepth )
{
LOCK ( cs_main ) ;
if ( chainActive . Tip ( ) = = NULL | | chainActive . Tip ( ) - > pprev = = NULL )
if ( chainActive . Tip ( ) = = nullptr | | chainActive . Tip ( ) - > pprev = = nullptr )
return true ;
// Verify blocks in the best chain
@ -3591,7 +3591,7 @@ bool CVerifyDB::VerifyDB(const CChainParams& chainparams, CCoinsView *coinsview,
@@ -3591,7 +3591,7 @@ bool CVerifyDB::VerifyDB(const CChainParams& chainparams, CCoinsView *coinsview,
LogPrintf ( " Verifying last %i blocks at level %i \n " , nCheckDepth , nCheckLevel ) ;
CCoinsViewCache coins ( coinsview ) ;
CBlockIndex * pindexState = chainActive . Tip ( ) ;
CBlockIndex * pindexFailure = NULL ;
CBlockIndex * pindexFailure = nullptr ;
int nGoodTransactions = 0 ;
CValidationState state ;
int reportDone = 0 ;
@ -3784,7 +3784,7 @@ bool RewindBlockIndex(const CChainParams& params)
@@ -3784,7 +3784,7 @@ bool RewindBlockIndex(const CChainParams& params)
// of the blockchain).
break ;
}
if ( ! DisconnectTip ( state , params , NULL ) ) {
if ( ! DisconnectTip ( state , params , nullptr ) ) {
return error ( " RewindBlockIndex: unable to disconnect block at height %i " , pindex - > nHeight ) ;
}
// Occasionally flush state to disk.
@ -3833,7 +3833,7 @@ bool RewindBlockIndex(const CChainParams& params)
@@ -3833,7 +3833,7 @@ bool RewindBlockIndex(const CChainParams& params)
}
}
if ( chainActive . Tip ( ) ! = NULL ) {
if ( chainActive . Tip ( ) ! = nullptr ) {
// We can't prune block index candidates based on our tip if we have
// no tip due to chainActive being empty!
PruneBlockIndexCandidates ( ) ;
@ -3858,9 +3858,9 @@ void UnloadBlockIndex()
@@ -3858,9 +3858,9 @@ void UnloadBlockIndex()
{
LOCK ( cs_main ) ;
setBlockIndexCandidates . clear ( ) ;
chainActive . SetTip ( NULL ) ;
pindexBestInvalid = NULL ;
pindexBestHeader = NULL ;
chainActive . SetTip ( nullptr ) ;
pindexBestInvalid = nullptr ;
pindexBestHeader = nullptr ;
mempool . clear ( ) ;
mapBlocksUnlinked . clear ( ) ;
vinfoBlockFile . clear ( ) ;
@ -3997,7 +3997,7 @@ bool LoadExternalBlockFile(const CChainParams& chainparams, FILE* fileIn, CDiskB
@@ -3997,7 +3997,7 @@ bool LoadExternalBlockFile(const CChainParams& chainparams, FILE* fileIn, CDiskB
if ( mapBlockIndex . count ( hash ) = = 0 | | ( mapBlockIndex [ hash ] - > nStatus & BLOCK_HAVE_DATA ) = = 0 ) {
LOCK ( cs_main ) ;
CValidationState state ;
if ( AcceptBlock ( pblock , state , chainparams , NULL , true , dbp , NULL ) )
if ( AcceptBlock ( pblock , state , chainparams , nullptr , true , dbp , nullptr ) )
nLoaded + + ;
if ( state . IsError ( ) )
break ;
@ -4031,7 +4031,7 @@ bool LoadExternalBlockFile(const CChainParams& chainparams, FILE* fileIn, CDiskB
@@ -4031,7 +4031,7 @@ bool LoadExternalBlockFile(const CChainParams& chainparams, FILE* fileIn, CDiskB
head . ToString ( ) ) ;
LOCK ( cs_main ) ;
CValidationState dummy ;
if ( AcceptBlock ( pblockrecursive , dummy , chainparams , NULL , true , & it - > second , NULL ) )
if ( AcceptBlock ( pblockrecursive , dummy , chainparams , nullptr , true , & it - > second , nullptr ) )
{
nLoaded + + ;
queue . push_back ( pblockrecursive - > GetHash ( ) ) ;
@ -4078,35 +4078,35 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
@@ -4078,35 +4078,35 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
assert ( forward . size ( ) = = mapBlockIndex . size ( ) ) ;
std : : pair < std : : multimap < CBlockIndex * , CBlockIndex * > : : iterator , std : : multimap < CBlockIndex * , CBlockIndex * > : : iterator > rangeGenesis = forward . equal_range ( NULL ) ;
std : : pair < std : : multimap < CBlockIndex * , CBlockIndex * > : : iterator , std : : multimap < CBlockIndex * , CBlockIndex * > : : iterator > rangeGenesis = forward . equal_range ( nullptr ) ;
CBlockIndex * pindex = rangeGenesis . first - > second ;
rangeGenesis . first + + ;
assert ( rangeGenesis . first = = rangeGenesis . second ) ; // There is only one index entry with parent NULL .
assert ( rangeGenesis . first = = rangeGenesis . second ) ; // There is only one index entry with parent nullptr .
// Iterate over the entire block tree, using depth-first search.
// Along the way, remember whether there are blocks on the path from genesis
// block being explored which are the first to have certain properties.
size_t nNodes = 0 ;
int nHeight = 0 ;
CBlockIndex * pindexFirstInvalid = NULL ; // Oldest ancestor of pindex which is invalid.
CBlockIndex * pindexFirstMissing = NULL ; // Oldest ancestor of pindex which does not have BLOCK_HAVE_DATA.
CBlockIndex * pindexFirstNeverProcessed = NULL ; // Oldest ancestor of pindex for which nTx == 0.
CBlockIndex * pindexFirstNotTreeValid = NULL ; // Oldest ancestor of pindex which does not have BLOCK_VALID_TREE (regardless of being valid or not).
CBlockIndex * pindexFirstNotTransactionsValid = NULL ; // Oldest ancestor of pindex which does not have BLOCK_VALID_TRANSACTIONS (regardless of being valid or not).
CBlockIndex * pindexFirstNotChainValid = NULL ; // Oldest ancestor of pindex which does not have BLOCK_VALID_CHAIN (regardless of being valid or not).
CBlockIndex * pindexFirstNotScriptsValid = NULL ; // Oldest ancestor of pindex which does not have BLOCK_VALID_SCRIPTS (regardless of being valid or not).
while ( pindex ! = NULL ) {
CBlockIndex * pindexFirstInvalid = nullptr ; // Oldest ancestor of pindex which is invalid.
CBlockIndex * pindexFirstMissing = nullptr ; // Oldest ancestor of pindex which does not have BLOCK_HAVE_DATA.
CBlockIndex * pindexFirstNeverProcessed = nullptr ; // Oldest ancestor of pindex for which nTx == 0.
CBlockIndex * pindexFirstNotTreeValid = nullptr ; // Oldest ancestor of pindex which does not have BLOCK_VALID_TREE (regardless of being valid or not).
CBlockIndex * pindexFirstNotTransactionsValid = nullptr ; // Oldest ancestor of pindex which does not have BLOCK_VALID_TRANSACTIONS (regardless of being valid or not).
CBlockIndex * pindexFirstNotChainValid = nullptr ; // Oldest ancestor of pindex which does not have BLOCK_VALID_CHAIN (regardless of being valid or not).
CBlockIndex * pindexFirstNotScriptsValid = nullptr ; // Oldest ancestor of pindex which does not have BLOCK_VALID_SCRIPTS (regardless of being valid or not).
while ( pindex ! = nullptr ) {
nNodes + + ;
if ( pindexFirstInvalid = = NULL & & pindex - > nStatus & BLOCK_FAILED_VALID ) pindexFirstInvalid = pindex ;
if ( pindexFirstMissing = = NULL & & ! ( pindex - > nStatus & BLOCK_HAVE_DATA ) ) pindexFirstMissing = pindex ;
if ( pindexFirstNeverProcessed = = NULL & & pindex - > nTx = = 0 ) pindexFirstNeverProcessed = pindex ;
if ( pindex - > pprev ! = NULL & & pindexFirstNotTreeValid = = NULL & & ( pindex - > nStatus & BLOCK_VALID_MASK ) < BLOCK_VALID_TREE ) pindexFirstNotTreeValid = pindex ;
if ( pindex - > pprev ! = NULL & & pindexFirstNotTransactionsValid = = NULL & & ( pindex - > nStatus & BLOCK_VALID_MASK ) < BLOCK_VALID_TRANSACTIONS ) pindexFirstNotTransactionsValid = pindex ;
if ( pindex - > pprev ! = NULL & & pindexFirstNotChainValid = = NULL & & ( pindex - > nStatus & BLOCK_VALID_MASK ) < BLOCK_VALID_CHAIN ) pindexFirstNotChainValid = pindex ;
if ( pindex - > pprev ! = NULL & & pindexFirstNotScriptsValid = = NULL & & ( pindex - > nStatus & BLOCK_VALID_MASK ) < BLOCK_VALID_SCRIPTS ) pindexFirstNotScriptsValid = pindex ;
if ( pindexFirstInvalid = = nullptr & & pindex - > nStatus & BLOCK_FAILED_VALID ) pindexFirstInvalid = pindex ;
if ( pindexFirstMissing = = nullptr & & ! ( pindex - > nStatus & BLOCK_HAVE_DATA ) ) pindexFirstMissing = pindex ;
if ( pindexFirstNeverProcessed = = nullptr & & pindex - > nTx = = 0 ) pindexFirstNeverProcessed = pindex ;
if ( pindex - > pprev ! = nullptr & & pindexFirstNotTreeValid = = nullptr & & ( pindex - > nStatus & BLOCK_VALID_MASK ) < BLOCK_VALID_TREE ) pindexFirstNotTreeValid = pindex ;
if ( pindex - > pprev ! = nullptr & & pindexFirstNotTransactionsValid = = nullptr & & ( pindex - > nStatus & BLOCK_VALID_MASK ) < BLOCK_VALID_TRANSACTIONS ) pindexFirstNotTransactionsValid = pindex ;
if ( pindex - > pprev ! = nullptr & & pindexFirstNotChainValid = = nullptr & & ( pindex - > nStatus & BLOCK_VALID_MASK ) < BLOCK_VALID_CHAIN ) pindexFirstNotChainValid = pindex ;
if ( pindex - > pprev ! = nullptr & & pindexFirstNotScriptsValid = = nullptr & & ( pindex - > nStatus & BLOCK_VALID_MASK ) < BLOCK_VALID_SCRIPTS ) pindexFirstNotScriptsValid = pindex ;
// Begin: actual consistency checks.
if ( pindex - > pprev = = NULL ) {
if ( pindex - > pprev = = nullptr ) {
// Genesis block checks.
assert ( pindex - > GetBlockHash ( ) = = consensusParams . hashGenesisBlock ) ; // Genesis block's hash must match.
assert ( pindex = = chainActive . Genesis ( ) ) ; // The current active chain's genesis block must be this block.
@ -4125,26 +4125,26 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
@@ -4125,26 +4125,26 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
if ( pindex - > nStatus & BLOCK_HAVE_UNDO ) assert ( pindex - > nStatus & BLOCK_HAVE_DATA ) ;
assert ( ( ( pindex - > nStatus & BLOCK_VALID_MASK ) > = BLOCK_VALID_TRANSACTIONS ) = = ( pindex - > nTx > 0 ) ) ; // This is pruning-independent.
// All parents having had data (at some point) is equivalent to all parents being VALID_TRANSACTIONS, which is equivalent to nChainTx being set.
assert ( ( pindexFirstNeverProcessed ! = NULL ) = = ( pindex - > nChainTx = = 0 ) ) ; // nChainTx != 0 is used to signal that all parent blocks have been processed (but may have been pruned).
assert ( ( pindexFirstNotTransactionsValid ! = NULL ) = = ( pindex - > nChainTx = = 0 ) ) ;
assert ( ( pindexFirstNeverProcessed ! = nullptr ) = = ( pindex - > nChainTx = = 0 ) ) ; // nChainTx != 0 is used to signal that all parent blocks have been processed (but may have been pruned).
assert ( ( pindexFirstNotTransactionsValid ! = nullptr ) = = ( pindex - > nChainTx = = 0 ) ) ;
assert ( pindex - > nHeight = = nHeight ) ; // nHeight must be consistent.
assert ( pindex - > pprev = = NULL | | pindex - > nChainWork > = pindex - > pprev - > nChainWork ) ; // For every block except the genesis block, the chainwork must be larger than the parent's.
assert ( pindex - > pprev = = nullptr | | pindex - > nChainWork > = pindex - > pprev - > nChainWork ) ; // For every block except the genesis block, the chainwork must be larger than the parent's.
assert ( nHeight < 2 | | ( pindex - > pskip & & ( pindex - > pskip - > nHeight < nHeight ) ) ) ; // The pskip pointer must point back for all but the first 2 blocks.
assert ( pindexFirstNotTreeValid = = NULL ) ; // All mapBlockIndex entries must at least be TREE valid
if ( ( pindex - > nStatus & BLOCK_VALID_MASK ) > = BLOCK_VALID_TREE ) assert ( pindexFirstNotTreeValid = = NULL ) ; // TREE valid implies all parents are TREE valid
if ( ( pindex - > nStatus & BLOCK_VALID_MASK ) > = BLOCK_VALID_CHAIN ) assert ( pindexFirstNotChainValid = = NULL ) ; // CHAIN valid implies all parents are CHAIN valid
if ( ( pindex - > nStatus & BLOCK_VALID_MASK ) > = BLOCK_VALID_SCRIPTS ) assert ( pindexFirstNotScriptsValid = = NULL ) ; // SCRIPTS valid implies all parents are SCRIPTS valid
if ( pindexFirstInvalid = = NULL ) {
assert ( pindexFirstNotTreeValid = = nullptr ) ; // All mapBlockIndex entries must at least be TREE valid
if ( ( pindex - > nStatus & BLOCK_VALID_MASK ) > = BLOCK_VALID_TREE ) assert ( pindexFirstNotTreeValid = = nullptr ) ; // TREE valid implies all parents are TREE valid
if ( ( pindex - > nStatus & BLOCK_VALID_MASK ) > = BLOCK_VALID_CHAIN ) assert ( pindexFirstNotChainValid = = nullptr ) ; // CHAIN valid implies all parents are CHAIN valid
if ( ( pindex - > nStatus & BLOCK_VALID_MASK ) > = BLOCK_VALID_SCRIPTS ) assert ( pindexFirstNotScriptsValid = = nullptr ) ; // SCRIPTS valid implies all parents are SCRIPTS valid
if ( pindexFirstInvalid = = nullptr ) {
// Checks for not-invalid blocks.
assert ( ( pindex - > nStatus & BLOCK_FAILED_MASK ) = = 0 ) ; // The failed mask cannot be set for blocks without invalid parents.
}
if ( ! CBlockIndexWorkComparator ( ) ( pindex , chainActive . Tip ( ) ) & & pindexFirstNeverProcessed = = NULL ) {
if ( pindexFirstInvalid = = NULL ) {
if ( ! CBlockIndexWorkComparator ( ) ( pindex , chainActive . Tip ( ) ) & & pindexFirstNeverProcessed = = nullptr ) {
if ( pindexFirstInvalid = = nullptr ) {
// If this block sorts at least as good as the current tip and
// is valid and we have all data for its parents, it must be in
// setBlockIndexCandidates. chainActive.Tip() must also be there
// even if some data has been pruned.
if ( pindexFirstMissing = = NULL | | pindex = = chainActive . Tip ( ) ) {
if ( pindexFirstMissing = = nullptr | | pindex = = chainActive . Tip ( ) ) {
assert ( setBlockIndexCandidates . count ( pindex ) ) ;
}
// If some parent is missing, then it could be that this block was in
@ -4165,13 +4165,13 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
@@ -4165,13 +4165,13 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
}
rangeUnlinked . first + + ;
}
if ( pindex - > pprev & & ( pindex - > nStatus & BLOCK_HAVE_DATA ) & & pindexFirstNeverProcessed ! = NULL & & pindexFirstInvalid = = NULL ) {
if ( pindex - > pprev & & ( pindex - > nStatus & BLOCK_HAVE_DATA ) & & pindexFirstNeverProcessed ! = nullptr & & pindexFirstInvalid = = nullptr ) {
// If this block has block data available, some parent was never received, and has no invalid parents, it must be in mapBlocksUnlinked.
assert ( foundInUnlinked ) ;
}
if ( ! ( pindex - > nStatus & BLOCK_HAVE_DATA ) ) assert ( ! foundInUnlinked ) ; // Can't be in mapBlocksUnlinked if we don't HAVE_DATA
if ( pindexFirstMissing = = NULL ) assert ( ! foundInUnlinked ) ; // We aren't missing data for any parent -- cannot be in mapBlocksUnlinked.
if ( pindex - > pprev & & ( pindex - > nStatus & BLOCK_HAVE_DATA ) & & pindexFirstNeverProcessed = = NULL & & pindexFirstMissing ! = NULL ) {
if ( pindexFirstMissing = = nullptr ) assert ( ! foundInUnlinked ) ; // We aren't missing data for any parent -- cannot be in mapBlocksUnlinked.
if ( pindex - > pprev & & ( pindex - > nStatus & BLOCK_HAVE_DATA ) & & pindexFirstNeverProcessed = = nullptr & & pindexFirstMissing ! = nullptr ) {
// We HAVE_DATA for this block, have received data for all parents at some point, but we're currently missing data for some parent.
assert ( fHavePruned ) ; // We must have pruned.
// This block may have entered mapBlocksUnlinked if:
@ -4183,7 +4183,7 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
@@ -4183,7 +4183,7 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
// So if this block is itself better than chainActive.Tip() and it wasn't in
// setBlockIndexCandidates, then it must be in mapBlocksUnlinked.
if ( ! CBlockIndexWorkComparator ( ) ( pindex , chainActive . Tip ( ) ) & & setBlockIndexCandidates . count ( pindex ) = = 0 ) {
if ( pindexFirstInvalid = = NULL ) {
if ( pindexFirstInvalid = = nullptr ) {
assert ( foundInUnlinked ) ;
}
}
@ -4204,13 +4204,13 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
@@ -4204,13 +4204,13 @@ void static CheckBlockIndex(const Consensus::Params& consensusParams)
while ( pindex ) {
// We are going to either move to a parent or a sibling of pindex.
// If pindex was the first with a certain property, unset the corresponding variable.
if ( pindex = = pindexFirstInvalid ) pindexFirstInvalid = NULL ;
if ( pindex = = pindexFirstMissing ) pindexFirstMissing = NULL ;
if ( pindex = = pindexFirstNeverProcessed ) pindexFirstNeverProcessed = NULL ;
if ( pindex = = pindexFirstNotTreeValid ) pindexFirstNotTreeValid = NULL ;
if ( pindex = = pindexFirstNotTransactionsValid ) pindexFirstNotTransactionsValid = NULL ;
if ( pindex = = pindexFirstNotChainValid ) pindexFirstNotChainValid = NULL ;
if ( pindex = = pindexFirstNotScriptsValid ) pindexFirstNotScriptsValid = NULL ;
if ( pindex = = pindexFirstInvalid ) pindexFirstInvalid = nullptr ;
if ( pindex = = pindexFirstMissing ) pindexFirstMissing = nullptr ;
if ( pindex = = pindexFirstNeverProcessed ) pindexFirstNeverProcessed = nullptr ;
if ( pindex = = pindexFirstNotTreeValid ) pindexFirstNotTreeValid = nullptr ;
if ( pindex = = pindexFirstNotTransactionsValid ) pindexFirstNotTransactionsValid = nullptr ;
if ( pindex = = pindexFirstNotChainValid ) pindexFirstNotChainValid = nullptr ;
if ( pindex = = pindexFirstNotScriptsValid ) pindexFirstNotScriptsValid = nullptr ;
// Find our parent.
CBlockIndex * pindexPar = pindex - > pprev ;
// Find which child we just visited.
@ -4307,7 +4307,7 @@ bool LoadMempool(void)
@@ -4307,7 +4307,7 @@ bool LoadMempool(void)
CValidationState state ;
if ( nTime + nExpiryTimeout > nNow ) {
LOCK ( cs_main ) ;
AcceptToMemoryPoolWithTime ( chainparams , mempool , state , tx , true , NULL , nTime , NULL , false , 0 ) ;
AcceptToMemoryPoolWithTime ( chainparams , mempool , state , tx , true , nullptr , nTime , nullptr , false , 0 ) ;
if ( state . IsValid ( ) ) {
+ + count ;
} else {
@ -4383,10 +4383,10 @@ void DumpMempool(void)
@@ -4383,10 +4383,10 @@ void DumpMempool(void)
//! Guess how far we are in the verification process at the given block index
double GuessVerificationProgress ( const ChainTxData & data , CBlockIndex * pindex ) {
if ( pindex = = NULL )
if ( pindex = = nullptr )
return 0.0 ;
int64_t nNow = time ( NULL ) ;
int64_t nNow = time ( nullptr ) ;
double fTxTotal ;