aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Wuille <sipa@ulyssis.org>2013-05-22 20:58:53 +0200
committerPieter Wuille <sipa@ulyssis.org>2013-05-22 20:59:36 +0200
commit95c7db3dbf4012dd02e5f1f30e6d982341facaa6 (patch)
treeb5148e78e2e84eeb4c337b4db5755bf34ca0dc8b
parent6b99cfae3cf3e8f3a5f0bbda9e77fe3419902f9d (diff)
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.
-rw-r--r--src/init.cpp3
-rw-r--r--src/main.cpp2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/init.cpp b/src/init.cpp
index d619cb4121..ebd9dee7b2 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -100,6 +100,7 @@ void Shutdown()
StopNode();
{
LOCK(cs_main);
+ pwalletMain->SetBestChain(CBlockLocator(pindexBest));
if (pblocktree)
pblocktree->Flush();
if (pcoinsTip)
@@ -998,6 +999,8 @@ bool AppInit2(boost::thread_group& threadGroup)
if (!pwalletMain->SetAddressBookName(pwalletMain->vchDefaultKey.GetID(), ""))
strErrors << _("Cannot write default address") << "\n";
}
+
+ pwalletMain->SetBestChain(CBlockLocator(pindexBest));
}
printf("%s", strErrors.str().c_str());
diff --git a/src/main.cpp b/src/main.cpp
index 2d22541baf..b7efac53b1 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1870,7 +1870,7 @@ bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew)
}
// 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);
::SetBestChain(locator);