return true;
static int64_t nLastUpdate;
static CBlockIndex* pindexLastBest;
+ int64_t nCurrentTime = GetTime();
if (pindexBest != pindexLastBest)
{
pindexLastBest = pindexBest;
- nLastUpdate = GetTime();
+ nLastUpdate = nCurrentTime;
}
- return (GetTime() - nLastUpdate < 10 &&
- pindexBest->GetBlockTime() < GetTime() - 24 * 60 * 60);
+ return (nCurrentTime - nLastUpdate < 10 &&
+ pindexBest->GetBlockTime() < nCurrentTime - 24 * 60 * 60);
}
void static InvalidChainFound(CBlockIndex* pindexNew)
hashPrevBestCoinBase = vtx[0].GetHash();
}
- uiInterface.NotifyBlocksChanged();
+ static int8_t counter = 0;
+ if( (++counter & 0x0F) == 0 || !IsInitialBlockDownload()) // repaint every 16 blocks if not in initial block download
+ uiInterface.NotifyBlocksChanged();
return true;
}
if (fCheckMerkleRoot && hashMerkleRoot != BuildMerkleTree())
return DoS(100, error("CheckBlock() : hashMerkleRoot mismatch"));
-
return true;
}
return error("ProcessBlock() : duplicate proof-of-stake (%s, %d) for block %s", pblock->GetProofOfStake().first.ToString().c_str(), pblock->GetProofOfStake().second, hash.ToString().c_str());
// Preliminary checks
- if (!pblock->CheckBlock())
+ if (!pblock->CheckBlock(true, true, (pblock->nTime > Checkpoints::GetLastCheckpointTime())))
return error("ProcessBlock() : CheckBlock FAILED");
// ppcoin: verify hash target and signature of coinstake tx