|
|
@ -1205,7 +1205,7 @@ void CheckForkWarningConditions() |
|
|
|
if (pindexBestForkTip && chainActive.Height() - pindexBestForkTip->nHeight >= 72) |
|
|
|
if (pindexBestForkTip && chainActive.Height() - pindexBestForkTip->nHeight >= 72) |
|
|
|
pindexBestForkTip = NULL; |
|
|
|
pindexBestForkTip = NULL; |
|
|
|
|
|
|
|
|
|
|
|
if (pindexBestForkTip || (pindexBestInvalid && pindexBestInvalid->nChainWork > chainActive.Tip()->nChainWork + (chainActive.Tip()->GetBlockWork() * 6))) |
|
|
|
if (pindexBestForkTip || (pindexBestInvalid && pindexBestInvalid->nChainWork > chainActive.Tip()->nChainWork + (GetBlockProof(*chainActive.Tip()) * 6))) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (!fLargeWorkForkFound) |
|
|
|
if (!fLargeWorkForkFound) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1256,7 +1256,7 @@ void CheckForkWarningConditionsOnNewFork(CBlockIndex* pindexNewForkTip) |
|
|
|
// We define it this way because it allows us to only store the highest fork tip (+ base) which meets
|
|
|
|
// We define it this way because it allows us to only store the highest fork tip (+ base) which meets
|
|
|
|
// the 7-block condition and from this always have the most-likely-to-cause-warning fork
|
|
|
|
// the 7-block condition and from this always have the most-likely-to-cause-warning fork
|
|
|
|
if (pfork && (!pindexBestForkTip || (pindexBestForkTip && pindexNewForkTip->nHeight > pindexBestForkTip->nHeight)) && |
|
|
|
if (pfork && (!pindexBestForkTip || (pindexBestForkTip && pindexNewForkTip->nHeight > pindexBestForkTip->nHeight)) && |
|
|
|
pindexNewForkTip->nChainWork - pfork->nChainWork > (pfork->GetBlockWork() * 7) && |
|
|
|
pindexNewForkTip->nChainWork - pfork->nChainWork > (GetBlockProof(*pfork) * 7) && |
|
|
|
chainActive.Height() - pindexNewForkTip->nHeight < 72) |
|
|
|
chainActive.Height() - pindexNewForkTip->nHeight < 72) |
|
|
|
{ |
|
|
|
{ |
|
|
|
pindexBestForkTip = pindexNewForkTip; |
|
|
|
pindexBestForkTip = pindexNewForkTip; |
|
|
@ -2095,7 +2095,7 @@ CBlockIndex* AddToBlockIndex(const CBlockHeader& block) |
|
|
|
pindexNew->nHeight = pindexNew->pprev->nHeight + 1; |
|
|
|
pindexNew->nHeight = pindexNew->pprev->nHeight + 1; |
|
|
|
pindexNew->BuildSkip(); |
|
|
|
pindexNew->BuildSkip(); |
|
|
|
} |
|
|
|
} |
|
|
|
pindexNew->nChainWork = (pindexNew->pprev ? pindexNew->pprev->nChainWork : 0) + pindexNew->GetBlockWork(); |
|
|
|
pindexNew->nChainWork = (pindexNew->pprev ? pindexNew->pprev->nChainWork : 0) + GetBlockProof(*pindexNew); |
|
|
|
pindexNew->RaiseValidity(BLOCK_VALID_TREE); |
|
|
|
pindexNew->RaiseValidity(BLOCK_VALID_TREE); |
|
|
|
if (pindexBestHeader == NULL || pindexBestHeader->nChainWork < pindexNew->nChainWork) |
|
|
|
if (pindexBestHeader == NULL || pindexBestHeader->nChainWork < pindexNew->nChainWork) |
|
|
|
pindexBestHeader = pindexNew; |
|
|
|
pindexBestHeader = pindexNew; |
|
|
@ -2788,7 +2788,7 @@ bool static LoadBlockIndexDB() |
|
|
|
BOOST_FOREACH(const PAIRTYPE(int, CBlockIndex*)& item, vSortedByHeight) |
|
|
|
BOOST_FOREACH(const PAIRTYPE(int, CBlockIndex*)& item, vSortedByHeight) |
|
|
|
{ |
|
|
|
{ |
|
|
|
CBlockIndex* pindex = item.second; |
|
|
|
CBlockIndex* pindex = item.second; |
|
|
|
pindex->nChainWork = (pindex->pprev ? pindex->pprev->nChainWork : 0) + pindex->GetBlockWork(); |
|
|
|
pindex->nChainWork = (pindex->pprev ? pindex->pprev->nChainWork : 0) + GetBlockProof(*pindex); |
|
|
|
if (pindex->nStatus & BLOCK_HAVE_DATA) { |
|
|
|
if (pindex->nStatus & BLOCK_HAVE_DATA) { |
|
|
|
if (pindex->pprev) { |
|
|
|
if (pindex->pprev) { |
|
|
|
if (pindex->pprev->nChainTx) { |
|
|
|
if (pindex->pprev->nChainTx) { |
|
|
|