|
|
@ -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) {
|
|
|
|