From 989736e823e0841ce4ba4ac21554ba6426f3f4a4 Mon Sep 17 00:00:00 2001 From: CryptoManiac Date: Tue, 8 Mar 2016 20:39:56 +0300 Subject: [PATCH] DumpWallet() cleanup --- src/wallet.cpp | 4 ++-- src/walletdb.cpp | 50 ++++++++++++++++---------------------------------- 2 files changed, 18 insertions(+), 36 deletions(-) diff --git a/src/wallet.cpp b/src/wallet.cpp index beb5d85..5976cb5 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -2766,7 +2766,7 @@ void CWallet::GetAddresses(std::map &mapAddresses) con // iterate over all their outputs CBitcoinAddress addressRet; if (const_cast(this)->ExtractAddress(out.scriptPubKey, addressRet)) { - if (mapAddresses.find(addressRet) != mapAddresses.end() && mapAddresses[addressRet] > wtx.nTime) + if (mapAddresses.find(addressRet) != mapAddresses.end() && (mapAddresses[addressRet] == 0 || mapAddresses[addressRet] > wtx.nTime)) mapAddresses[addressRet] = wtx.nTime; } else { @@ -2777,7 +2777,7 @@ void CWallet::GetAddresses(std::map &mapAddresses) con for(std::vector::const_iterator it3 = vAffected.begin(); it3 != vAffected.end(); it3++) { CBitcoinAddress addrAffected(*it3); - if (mapAddresses.find(addrAffected) != mapAddresses.end() && mapAddresses[addrAffected] > wtx.nTime) + if (mapAddresses.find(addrAffected) != mapAddresses.end() && (mapAddresses[addrAffected] == 0 || mapAddresses[addrAffected] > wtx.nTime)) mapAddresses[addrAffected] = wtx.nTime; } vAffected.clear(); diff --git a/src/walletdb.cpp b/src/walletdb.cpp index c9e187d..bc35846 100644 --- a/src/walletdb.cpp +++ b/src/walletdb.cpp @@ -818,51 +818,33 @@ bool DumpWallet(CWallet* pwallet, const string& strDest) const CBitcoinAddress &addr = it->second; std::string strTime = EncodeDumpTime(it->first); std::string strAddr = addr.ToString(); - bool IsCompressed; if (addr.IsPair()) { // Pubkey pair address CMalleableKeyView keyView; CMalleablePubKey mPubKey(addr.GetData()); - if (pwallet->GetMalleableView(mPubKey, keyView)) { - CMalleableKey mKey; - pwallet->GetMalleableKey(keyView, mKey); - - file << strprintf("%s %s # addr=%s view=%s\n", - mKey.ToString().c_str(), - strTime.c_str(), - strAddr.c_str(), - keyView.ToString().c_str()); - } + if (!pwallet->GetMalleableView(mPubKey, keyView)) + continue; + CMalleableKey mKey; + pwallet->GetMalleableKey(keyView, mKey); + file << strprintf("%s %s # view=%s addr=%s\n", mKey.ToString().c_str(), strTime.c_str(), keyView.ToString().c_str(), strAddr.c_str()); } else { // Pubkey hash address CKeyID keyid; addr.GetKeyID(keyid); - + bool IsCompressed; CKey key; - if (pwallet->GetKey(keyid, key)) { - if (pwallet->mapAddressBook.count(keyid)) { - CSecret secret = key.GetSecret(IsCompressed); - file << strprintf("%s %s label=%s # addr=%s\n", - CBitcoinSecret(secret, IsCompressed).ToString().c_str(), - strTime.c_str(), - EncodeDumpString(pwallet->mapAddressBook[keyid]).c_str(), - strAddr.c_str()); - } else if (setKeyPool.count(keyid)) { - CSecret secret = key.GetSecret(IsCompressed); - file << strprintf("%s %s reserve=1 # addr=%s\n", - CBitcoinSecret(secret, IsCompressed).ToString().c_str(), - strTime.c_str(), - strAddr.c_str()); - } else { - CSecret secret = key.GetSecret(IsCompressed); - file << strprintf("%s %s change=1 # addr=%s\n", - CBitcoinSecret(secret, IsCompressed).ToString().c_str(), - strTime.c_str(), - strAddr.c_str()); - } - } + if (!pwallet->GetKey(keyid, key)) + continue; + CSecret secret = key.GetSecret(IsCompressed); + file << CBitcoinSecret(secret, IsCompressed).ToString().c_str(); + if (pwallet->mapAddressBook.count(keyid)) + file << strprintf(" %s label=%s # addr=%s\n", strTime.c_str(), EncodeDumpString(pwallet->mapAddressBook[keyid]).c_str(), strAddr.c_str()); + else if (setKeyPool.count(keyid)) + file << strprintf(" %s reserve=1 # addr=%s\n", strTime.c_str(), strAddr.c_str()); + else + file << strprintf(" %s change=1 # addr=%s\n", strTime.c_str(), strAddr.c_str()); } } -- 1.7.1