// Mark old keypool keys as used,
// and generate all new keys
//
-bool CWallet::NewKeyPool()
+bool CWallet::NewKeyPool(unsigned int nSize)
{
{
LOCK(cs_wallet);
if (IsLocked())
return false;
- int64_t nKeys = max(GetArg("-keypool", 100), (int64_t)0);
- for (int i = 0; i < nKeys; i++)
+ uint64_t nKeys;
+ if (nSize > 0)
+ nKeys = nSize;
+ else
+ nKeys = max<uint64_t>(GetArg("-keypool", 100), 0);
+
+ for (uint64_t i = 0; i < nKeys; i++)
{
- int64_t nIndex = i+1;
+ uint64_t nIndex = i+1;
walletdb.WritePool(nIndex, CKeyPool(GenerateNewKey()));
setKeyPool.insert(nIndex);
}
- printf("CWallet::NewKeyPool wrote %" PRId64 " new keys\n", nKeys);
+ printf("CWallet::NewKeyPool wrote %" PRIu64 " new keys\n", nKeys);
}
return true;
}
CWalletDB walletdb(strWalletFile);
// Top up key pool
- unsigned int nTargetSize;
+ uint64_t nTargetSize;
if (nSize > 0)
nTargetSize = nSize;
else
- nTargetSize = max<unsigned int>(GetArg("-keypool", 100), 0LL);
+ nTargetSize = max<uint64_t>(GetArg("-keypool", 100), 0);
while (setKeyPool.size() < (nTargetSize + 1))
{
- int64_t nEnd = 1;
+ uint64_t nEnd = 1;
if (!setKeyPool.empty())
nEnd = *(--setKeyPool.end()) + 1;
if (!walletdb.WritePool(nEnd, CKeyPool(GenerateNewKey())))
throw runtime_error("TopUpKeyPool() : writing generated key failed");
setKeyPool.insert(nEnd);
- printf("keypool added key %" PRId64 ", size=%" PRIszu "\n", nEnd, setKeyPool.size());
+ printf("keypool added key %" PRIu64 ", size=%" PRIszu "\n", nEnd, setKeyPool.size());
}
}
return true;