mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-23 13:24:18 +00:00
Dedup nTimeFirstKey update logic
Also make nTimeFirstKey member variable private. This is just a cleanup change, it doesn't change behavior in any significant way.
This commit is contained in:
parent
266a8114cb
commit
a58370e6a2
@ -143,7 +143,7 @@ UniValue importprivkey(const JSONRPCRequest& request)
|
|||||||
throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
|
throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
|
||||||
|
|
||||||
// whenever a key is imported, we need to scan the whole chain
|
// whenever a key is imported, we need to scan the whole chain
|
||||||
pwalletMain->nTimeFirstKey = 1; // 0 would be considered 'no value'
|
pwalletMain->UpdateTimeFirstKey(1);
|
||||||
|
|
||||||
if (fRescan) {
|
if (fRescan) {
|
||||||
pwalletMain->ScanForWalletTransactions(chainActive.Genesis(), true);
|
pwalletMain->ScanForWalletTransactions(chainActive.Genesis(), true);
|
||||||
@ -500,8 +500,7 @@ UniValue importwallet(const JSONRPCRequest& request)
|
|||||||
while (pindex && pindex->pprev && pindex->GetBlockTime() > nTimeBegin - 7200)
|
while (pindex && pindex->pprev && pindex->GetBlockTime() > nTimeBegin - 7200)
|
||||||
pindex = pindex->pprev;
|
pindex = pindex->pprev;
|
||||||
|
|
||||||
if (!pwalletMain->nTimeFirstKey || nTimeBegin < pwalletMain->nTimeFirstKey)
|
pwalletMain->UpdateTimeFirstKey(nTimeBegin);
|
||||||
pwalletMain->nTimeFirstKey = nTimeBegin;
|
|
||||||
|
|
||||||
LogPrintf("Rescanning last %i blocks\n", chainActive.Height() - pindex->nHeight + 1);
|
LogPrintf("Rescanning last %i blocks\n", chainActive.Height() - pindex->nHeight + 1);
|
||||||
pwalletMain->ScanForWalletTransactions(pindex);
|
pwalletMain->ScanForWalletTransactions(pindex);
|
||||||
@ -782,9 +781,7 @@ UniValue ProcessImport(const UniValue& data, const int64_t timestamp)
|
|||||||
throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
|
throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timestamp < pwalletMain->nTimeFirstKey) {
|
pwalletMain->UpdateTimeFirstKey(timestamp);
|
||||||
pwalletMain->nTimeFirstKey = timestamp;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -912,9 +909,7 @@ UniValue ProcessImport(const UniValue& data, const int64_t timestamp)
|
|||||||
throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
|
throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timestamp < pwalletMain->nTimeFirstKey) {
|
pwalletMain->UpdateTimeFirstKey(timestamp);
|
||||||
pwalletMain->nTimeFirstKey = timestamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
|
@ -113,8 +113,7 @@ CPubKey CWallet::GenerateNewKey()
|
|||||||
assert(secret.VerifyPubKey(pubkey));
|
assert(secret.VerifyPubKey(pubkey));
|
||||||
|
|
||||||
mapKeyMetadata[pubkey.GetID()] = metadata;
|
mapKeyMetadata[pubkey.GetID()] = metadata;
|
||||||
if (!nTimeFirstKey || nCreationTime < nTimeFirstKey)
|
UpdateTimeFirstKey(nCreationTime);
|
||||||
nTimeFirstKey = nCreationTime;
|
|
||||||
|
|
||||||
if (!AddKeyPubKey(secret, pubkey))
|
if (!AddKeyPubKey(secret, pubkey))
|
||||||
throw std::runtime_error(std::string(__func__) + ": AddKey failed");
|
throw std::runtime_error(std::string(__func__) + ": AddKey failed");
|
||||||
@ -210,9 +209,7 @@ bool CWallet::AddCryptedKey(const CPubKey &vchPubKey,
|
|||||||
bool CWallet::LoadKeyMetadata(const CPubKey &pubkey, const CKeyMetadata &meta)
|
bool CWallet::LoadKeyMetadata(const CPubKey &pubkey, const CKeyMetadata &meta)
|
||||||
{
|
{
|
||||||
AssertLockHeld(cs_wallet); // mapKeyMetadata
|
AssertLockHeld(cs_wallet); // mapKeyMetadata
|
||||||
if (meta.nCreateTime && (!nTimeFirstKey || meta.nCreateTime < nTimeFirstKey))
|
UpdateTimeFirstKey(meta.nCreateTime);
|
||||||
nTimeFirstKey = meta.nCreateTime;
|
|
||||||
|
|
||||||
mapKeyMetadata[pubkey.GetID()] = meta;
|
mapKeyMetadata[pubkey.GetID()] = meta;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -222,6 +219,18 @@ bool CWallet::LoadCryptedKey(const CPubKey &vchPubKey, const std::vector<unsigne
|
|||||||
return CCryptoKeyStore::AddCryptedKey(vchPubKey, vchCryptedSecret);
|
return CCryptoKeyStore::AddCryptedKey(vchPubKey, vchCryptedSecret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CWallet::UpdateTimeFirstKey(int64_t nCreateTime)
|
||||||
|
{
|
||||||
|
AssertLockHeld(cs_wallet);
|
||||||
|
if (nCreateTime <= 1) {
|
||||||
|
// Cannot determine birthday information, so set the wallet birthday to
|
||||||
|
// the beginning of time.
|
||||||
|
nTimeFirstKey = 1;
|
||||||
|
} else if (!nTimeFirstKey || nCreateTime < nTimeFirstKey) {
|
||||||
|
nTimeFirstKey = nCreateTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool CWallet::AddCScript(const CScript& redeemScript)
|
bool CWallet::AddCScript(const CScript& redeemScript)
|
||||||
{
|
{
|
||||||
if (!CCryptoKeyStore::AddCScript(redeemScript))
|
if (!CCryptoKeyStore::AddCScript(redeemScript))
|
||||||
|
@ -611,6 +611,9 @@ private:
|
|||||||
bool fFileBacked;
|
bool fFileBacked;
|
||||||
|
|
||||||
std::set<int64_t> setKeyPool;
|
std::set<int64_t> setKeyPool;
|
||||||
|
|
||||||
|
int64_t nTimeFirstKey;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*
|
/*
|
||||||
* Main wallet lock.
|
* Main wallet lock.
|
||||||
@ -688,8 +691,6 @@ public:
|
|||||||
|
|
||||||
std::set<COutPoint> setLockedCoins;
|
std::set<COutPoint> setLockedCoins;
|
||||||
|
|
||||||
int64_t nTimeFirstKey;
|
|
||||||
|
|
||||||
const CWalletTx* GetWalletTx(const uint256& hash) const;
|
const CWalletTx* GetWalletTx(const uint256& hash) const;
|
||||||
|
|
||||||
//! check whether we are allowed to upgrade (or already support) to the named feature
|
//! check whether we are allowed to upgrade (or already support) to the named feature
|
||||||
@ -730,6 +731,7 @@ public:
|
|||||||
bool LoadKeyMetadata(const CPubKey &pubkey, const CKeyMetadata &metadata);
|
bool LoadKeyMetadata(const CPubKey &pubkey, const CKeyMetadata &metadata);
|
||||||
|
|
||||||
bool LoadMinVersion(int nVersion) { AssertLockHeld(cs_wallet); nWalletVersion = nVersion; nWalletMaxVersion = std::max(nWalletMaxVersion, nVersion); return true; }
|
bool LoadMinVersion(int nVersion) { AssertLockHeld(cs_wallet); nWalletVersion = nVersion; nWalletMaxVersion = std::max(nWalletMaxVersion, nVersion); return true; }
|
||||||
|
void UpdateTimeFirstKey(int64_t nCreateTime);
|
||||||
|
|
||||||
//! Adds an encrypted key to the store, and saves it to disk.
|
//! Adds an encrypted key to the store, and saves it to disk.
|
||||||
bool AddCryptedKey(const CPubKey &vchPubKey, const std::vector<unsigned char> &vchCryptedSecret);
|
bool AddCryptedKey(const CPubKey &vchPubKey, const std::vector<unsigned char> &vchCryptedSecret);
|
||||||
|
@ -357,7 +357,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
|
|||||||
|
|
||||||
// Watch-only addresses have no birthday information for now,
|
// Watch-only addresses have no birthday information for now,
|
||||||
// so set the wallet birthday to the beginning of time.
|
// so set the wallet birthday to the beginning of time.
|
||||||
pwallet->nTimeFirstKey = 1;
|
pwallet->UpdateTimeFirstKey(1);
|
||||||
}
|
}
|
||||||
else if (strType == "key" || strType == "wkey")
|
else if (strType == "key" || strType == "wkey")
|
||||||
{
|
{
|
||||||
@ -467,11 +467,6 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
|
|||||||
wss.nKeyMeta++;
|
wss.nKeyMeta++;
|
||||||
|
|
||||||
pwallet->LoadKeyMetadata(vchPubKey, keyMeta);
|
pwallet->LoadKeyMetadata(vchPubKey, keyMeta);
|
||||||
|
|
||||||
// find earliest key creation time, as wallet birthday
|
|
||||||
if (!pwallet->nTimeFirstKey ||
|
|
||||||
(keyMeta.nCreateTime < pwallet->nTimeFirstKey))
|
|
||||||
pwallet->nTimeFirstKey = keyMeta.nCreateTime;
|
|
||||||
}
|
}
|
||||||
else if (strType == "defaultkey")
|
else if (strType == "defaultkey")
|
||||||
{
|
{
|
||||||
@ -626,7 +621,7 @@ DBErrors CWalletDB::LoadWallet(CWallet* pwallet)
|
|||||||
|
|
||||||
// nTimeFirstKey is only reliable if all keys have metadata
|
// nTimeFirstKey is only reliable if all keys have metadata
|
||||||
if ((wss.nKeys + wss.nCKeys) != wss.nKeyMeta)
|
if ((wss.nKeys + wss.nCKeys) != wss.nKeyMeta)
|
||||||
pwallet->nTimeFirstKey = 1; // 0 would be considered 'no value'
|
pwallet->UpdateTimeFirstKey(1);
|
||||||
|
|
||||||
BOOST_FOREACH(uint256 hash, wss.vWalletUpgrade)
|
BOOST_FOREACH(uint256 hash, wss.vWalletUpgrade)
|
||||||
WriteTx(pwallet->mapWallet[hash]);
|
WriteTx(pwallet->mapWallet[hash]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user