More bestblock records in wallets

Write bestblock records in wallets:
* Every 20160 blocks synced, no matter what (before: none during IBD)
* Every 144 blocks after IBD (before: for every block, slow)
* When creating a new wallet
* At shutdown

This should result in far fewer spurious rescans.
This commit is contained in:
Pieter Wuille 2013-05-22 20:58:53 +02:00
parent 6b99cfae3c
commit 95c7db3dbf
2 changed files with 4 additions and 1 deletions

View File

@ -100,6 +100,7 @@ void Shutdown()
StopNode(); StopNode();
{ {
LOCK(cs_main); LOCK(cs_main);
pwalletMain->SetBestChain(CBlockLocator(pindexBest));
if (pblocktree) if (pblocktree)
pblocktree->Flush(); pblocktree->Flush();
if (pcoinsTip) if (pcoinsTip)
@ -998,6 +999,8 @@ bool AppInit2(boost::thread_group& threadGroup)
if (!pwalletMain->SetAddressBookName(pwalletMain->vchDefaultKey.GetID(), "")) if (!pwalletMain->SetAddressBookName(pwalletMain->vchDefaultKey.GetID(), ""))
strErrors << _("Cannot write default address") << "\n"; strErrors << _("Cannot write default address") << "\n";
} }
pwalletMain->SetBestChain(CBlockLocator(pindexBest));
} }
printf("%s", strErrors.str().c_str()); printf("%s", strErrors.str().c_str());

View File

@ -1870,7 +1870,7 @@ bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew)
} }
// Update best block in wallet (so we can detect restored wallets) // Update best block in wallet (so we can detect restored wallets)
if (!fIsInitialDownload) if ((pindexNew->nHeight % 20160) == 0 || (!fIsInitialDownload && (pindexNew->nHeight % 144) == 0))
{ {
const CBlockLocator locator(pindexNew); const CBlockLocator locator(pindexNew);
::SetBestChain(locator); ::SetBestChain(locator);