Wallet: optimize rescan to skip blocks prior to birthday

This commit is contained in:
Jeff Garzik 2013-06-10 09:38:13 -04:00
parent 3869fb89b6
commit 8da9dd0725
1 changed files with 7 additions and 0 deletions

View File

@ -790,6 +790,13 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
LOCK(cs_wallet);
while (pindex)
{
// no need to read and scan block, if block was created before
// our wallet birthday (as adjusted for block time variability)
if (nTimeFirstKey && (pindex->nTime < (nTimeFirstKey - 7200))) {
pindex = pindex->GetNextInMainChain();
continue;
}
CBlock block;
block.ReadFromDisk(pindex);
BOOST_FOREACH(CTransaction& tx, block.vtx)