Update CMakeLists.txt - play with openssl
[novacoin.git] / src / walletdb.h
index 94b355f..1f727c1 100644 (file)
@@ -6,8 +6,6 @@
 #define BITCOIN_WALLETDB_H
 
 #include "db.h"
-//#include "base58.h"
-#include "keystore.h"
 
 class CKeyPool;
 class CAccount;
@@ -31,15 +29,8 @@ public:
     int nVersion;
     int64_t nCreateTime; // 0 means unknown
 
-    CKeyMetadata()
-    {
-        SetNull();
-    }
-    CKeyMetadata(int64_t nCreateTime_)
-    {
-        nVersion = CKeyMetadata::CURRENT_VERSION;
-        nCreateTime = nCreateTime_;
-    }
+    CKeyMetadata();
+    CKeyMetadata(int64_t nCreateTime_);
 
     IMPLEMENT_SERIALIZE
     (
@@ -48,11 +39,7 @@ public:
         READWRITE(nCreateTime);
     )
 
-    void SetNull()
-    {
-        nVersion = CKeyMetadata::CURRENT_VERSION;
-        nCreateTime = 0;
-    }
+    void SetNull();
 };
 
 
@@ -68,163 +55,28 @@ private:
     void operator=(const CWalletDB&);
 public:
     bool WriteName(const std::string& strAddress, const std::string& strName);
-
     bool EraseName(const std::string& strAddress);
-
-    bool WriteTx(uint256 hash, const CWalletTx& wtx)
-    {
-        nWalletDBUpdated++;
-        return Write(std::make_pair(std::string("tx"), hash), wtx);
-    }
-
-    bool EraseTx(uint256 hash)
-    {
-        nWalletDBUpdated++;
-        return Erase(std::make_pair(std::string("tx"), hash));
-    }
-
-    bool WriteKey(const CPubKey& vchPubKey, const CPrivKey& vchPrivKey, const CKeyMetadata &keyMeta)
-    {
-        nWalletDBUpdated++;
-        if(!Write(std::make_pair(std::string("keymeta"), vchPubKey), keyMeta))
-            return false;
-
-        if(!Write(std::make_pair(std::string("key"), vchPubKey.Raw()), vchPrivKey, false))
-            return false;
-
-        return true;
-    }
-
-    bool WriteMalleableKey(const CMalleableKeyView& keyView, const CSecret& vchSecretH, const CKeyMetadata &keyMeta)
-    {
-        nWalletDBUpdated++;
-        if(!Write(std::make_pair(std::string("malmeta"), keyView.ToString()), keyMeta))
-            return false;
-
-        if(!Write(std::make_pair(std::string("malpair"), keyView.ToString()), vchSecretH, false))
-            return false;
-
-        return true;
-    }
-
-    bool WriteCryptedMalleableKey(const CMalleableKeyView& keyView, const std::vector<unsigned char>& vchCryptedSecretH, const CKeyMetadata &keyMeta)
-    {
-        nWalletDBUpdated++;
-        if(!Write(std::make_pair(std::string("malmeta"), keyView.ToString()), keyMeta))
-            return false;
-
-        if(!Write(std::make_pair(std::string("malcpair"), keyView.ToString()), vchCryptedSecretH, false))
-            return false;
-
-        Erase(std::make_pair(std::string("malpair"), keyView.ToString()));
-
-        return true;
-    }
-
-
-    bool WriteCryptedKey(const CPubKey& vchPubKey, const std::vector<unsigned char>& vchCryptedSecret, const CKeyMetadata &keyMeta)
-    {
-        nWalletDBUpdated++;
-        bool fEraseUnencryptedKey = true;
-
-        if(!Write(std::make_pair(std::string("keymeta"), vchPubKey), keyMeta))
-            return false;
-
-        if (!Write(std::make_pair(std::string("ckey"), vchPubKey.Raw()), vchCryptedSecret, false))
-            return false;
-        if (fEraseUnencryptedKey)
-        {
-            Erase(std::make_pair(std::string("key"), vchPubKey.Raw()));
-            Erase(std::make_pair(std::string("wkey"), vchPubKey.Raw()));
-        }
-        return true;
-    }
-
-    bool WriteMasterKey(unsigned int nID, const CMasterKey& kMasterKey)
-    {
-        nWalletDBUpdated++;
-        return Write(std::make_pair(std::string("mkey"), nID), kMasterKey, true);
-    }
-
-    bool EraseMasterKey(unsigned int nID)
-    {
-        nWalletDBUpdated++;
-        return Erase(std::make_pair(std::string("mkey"), nID));
-    }
-
-    bool EraseCryptedKey(const CPubKey& vchPubKey)
-    {
-        return Erase(std::make_pair(std::string("ckey"), vchPubKey.Raw()));
-    }
-
-    bool EraseCryptedMalleableKey(const CMalleableKeyView& keyView)
-    {
-        return Erase(std::make_pair(std::string("malcpair"), keyView.ToString()));
-    }
-
-    bool WriteCScript(const uint160& hash, const CScript& redeemScript)
-    {
-        nWalletDBUpdated++;
-        return Write(std::make_pair(std::string("cscript"), hash), redeemScript, false);
-    }
-
-    bool WriteWatchOnly(const CScript &dest)
-    {
-        nWalletDBUpdated++;
-        return Write(std::make_pair(std::string("watchs"), dest), '1');
-    }
-
-    bool EraseWatchOnly(const CScript &dest)
-    {
-        nWalletDBUpdated++;
-        return Erase(std::make_pair(std::string("watchs"), dest));
-    }
-
-    bool WriteBestBlock(const CBlockLocator& locator)
-    {
-        nWalletDBUpdated++;
-        return Write(std::string("bestblock"), locator);
-    }
-
-    bool ReadBestBlock(CBlockLocator& locator)
-    {
-        return Read(std::string("bestblock"), locator);
-    }
-
-    bool WriteOrderPosNext(int64_t nOrderPosNext)
-    {
-        nWalletDBUpdated++;
-        return Write(std::string("orderposnext"), nOrderPosNext);
-    }
-
-    bool WriteDefaultKey(const CPubKey& vchPubKey)
-    {
-        nWalletDBUpdated++;
-        return Write(std::string("defaultkey"), vchPubKey.Raw());
-    }
-
-    bool ReadPool(int64_t nPool, CKeyPool& keypool)
-    {
-        return Read(std::make_pair(std::string("pool"), nPool), keypool);
-    }
-
-    bool WritePool(int64_t nPool, const CKeyPool& keypool)
-    {
-        nWalletDBUpdated++;
-        return Write(std::make_pair(std::string("pool"), nPool), keypool);
-    }
-
-    bool ErasePool(int64_t nPool)
-    {
-        nWalletDBUpdated++;
-        return Erase(std::make_pair(std::string("pool"), nPool));
-    }
-
-    bool WriteMinVersion(int nVersion)
-    {
-        return Write(std::string("minversion"), nVersion);
-    }
-
+    bool WriteTx(uint256 hash, const CWalletTx& wtx);
+    bool EraseTx(uint256 hash);
+    bool WriteKey(const CPubKey& key, const CPrivKey& vchPrivKey, const CKeyMetadata &keyMeta);
+    bool WriteMalleableKey(const CMalleableKeyView& keyView, const CSecret& vchSecretH, const CKeyMetadata &keyMeta);
+    bool WriteCryptedMalleableKey(const CMalleableKeyView& keyView, const std::vector<unsigned char>& vchCryptedSecretH, const CKeyMetadata &keyMeta);
+    bool WriteCryptedKey(const CPubKey& key, const std::vector<unsigned char>& vchCryptedSecret, const CKeyMetadata &keyMeta);
+    bool WriteMasterKey(unsigned int nID, const CMasterKey& kMasterKey);
+    bool EraseMasterKey(unsigned int nID);
+    bool EraseCryptedKey(const CPubKey& key);
+    bool EraseCryptedMalleableKey(const CMalleableKeyView& keyView);
+    bool WriteCScript(const uint160& hash, const CScript& redeemScript);
+    bool WriteWatchOnly(const CScript &dest);
+    bool EraseWatchOnly(const CScript &dest);
+    bool WriteBestBlock(const CBlockLocator& locator);
+    bool ReadBestBlock(CBlockLocator& locator);
+    bool WriteOrderPosNext(int64_t nOrderPosNext);
+    bool WriteDefaultKey(const CPubKey& key);
+    bool ReadPool(int64_t nPool, CKeyPool& keypool);
+    bool WritePool(int64_t nPool, const CKeyPool& keypool);
+    bool ErasePool(int64_t nPool);
+    bool WriteMinVersion(int nVersion);
     bool ReadAccount(const std::string& strAccount, CAccount& account);
     bool WriteAccount(const std::string& strAccount, const CAccount& account);
 private:
@@ -243,4 +95,6 @@ public:
     static bool Recover(CDBEnv& dbenv, std::string filename);
 };
 
+bool BackupWallet(const CWallet& wallet, const std::string& strDest);
+
 #endif // BITCOIN_WALLETDB_H