Remove nFileVersion from CWalletScanState

nFileVersion is not the actual file version and is not used except
in one place. So it is removed from CWalletScanState and changed so
that it is just read at the place it is needed. Furthermore, the
"version" record now only indicates the version of the highest
versioned client that has opened a wallet file so the variable
name is changed accordingly
This commit is contained in:
Andrew Chow 2019-03-13 00:37:08 -04:00
parent c3b1cb958f
commit c88e87c3b2

View file

@ -165,7 +165,6 @@ public:
unsigned int m_unknown_records{0}; unsigned int m_unknown_records{0};
bool fIsEncrypted{false}; bool fIsEncrypted{false};
bool fAnyUnordered{false}; bool fAnyUnordered{false};
int nFileVersion{0};
std::vector<uint256> vWalletUpgrade; std::vector<uint256> vWalletUpgrade;
CWalletScanState() { CWalletScanState() {
@ -376,12 +375,6 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
pwallet->LoadKeyPool(nIndex, keypool); pwallet->LoadKeyPool(nIndex, keypool);
} }
else if (strType == "version")
{
ssValue >> wss.nFileVersion;
if (wss.nFileVersion == 10300)
wss.nFileVersion = 300;
}
else if (strType == "cscript") else if (strType == "cscript")
{ {
uint160 hash; uint160 hash;
@ -419,7 +412,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
return false; return false;
} }
} else if (strType != "bestblock" && strType != "bestblock_nomerkle" && } else if (strType != "bestblock" && strType != "bestblock_nomerkle" &&
strType != "minversion" && strType != "acentry") { strType != "minversion" && strType != "acentry" && strType != "version") {
wss.m_unknown_records++; wss.m_unknown_records++;
} }
} catch (...) } catch (...)
@ -512,7 +505,11 @@ DBErrors WalletBatch::LoadWallet(CWallet* pwallet)
if (result != DBErrors::LOAD_OK) if (result != DBErrors::LOAD_OK)
return result; return result;
pwallet->WalletLogPrintf("nFileVersion = %d\n", wss.nFileVersion); // Last client version to open this wallet, was previously the file version number
int last_client = CLIENT_VERSION;
ReadVersion(last_client);
pwallet->WalletLogPrintf("nFileVersion = %d\n", last_client);
pwallet->WalletLogPrintf("Keys: %u plaintext, %u encrypted, %u w/ metadata, %u total. Unknown wallet records: %u\n", pwallet->WalletLogPrintf("Keys: %u plaintext, %u encrypted, %u w/ metadata, %u total. Unknown wallet records: %u\n",
wss.nKeys, wss.nCKeys, wss.nKeyMeta, wss.nKeys + wss.nCKeys, wss.m_unknown_records); wss.nKeys, wss.nCKeys, wss.nKeyMeta, wss.nKeys + wss.nCKeys, wss.m_unknown_records);
@ -525,10 +522,10 @@ DBErrors WalletBatch::LoadWallet(CWallet* pwallet)
WriteTx(pwallet->mapWallet.at(hash)); WriteTx(pwallet->mapWallet.at(hash));
// Rewrite encrypted wallets of versions 0.4.0 and 0.5.0rc: // Rewrite encrypted wallets of versions 0.4.0 and 0.5.0rc:
if (wss.fIsEncrypted && (wss.nFileVersion == 40000 || wss.nFileVersion == 50000)) if (wss.fIsEncrypted && (last_client == 40000 || last_client == 50000))
return DBErrors::NEED_REWRITE; return DBErrors::NEED_REWRITE;
if (wss.nFileVersion < CLIENT_VERSION) // Update if (last_client < CLIENT_VERSION) // Update
WriteVersion(CLIENT_VERSION); WriteVersion(CLIENT_VERSION);
if (wss.fAnyUnordered) if (wss.fAnyUnordered)