DumpWallet() cleanup
authorCryptoManiac <balthazar@yandex.ru>
Tue, 8 Mar 2016 17:39:56 +0000 (20:39 +0300)
committerCryptoManiac <balthazar@yandex.ru>
Tue, 8 Mar 2016 17:39:56 +0000 (20:39 +0300)
src/wallet.cpp
src/walletdb.cpp

index beb5d85..5976cb5 100644 (file)
@@ -2766,7 +2766,7 @@ void CWallet::GetAddresses(std::map<CBitcoinAddress, int64_t> &mapAddresses) con
             // iterate over all their outputs
             CBitcoinAddress addressRet;
             if (const_cast<CWallet*>(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<CBitcoinAddress, int64_t> &mapAddresses) con
                 for(std::vector<CKeyID>::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();
index c9e187d..bc35846 100644 (file)
@@ -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());
         }
     }