X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fwalletdb.h;h=714b3ccf5c48b7b596121433f5e8f4965121abac;hb=HEAD;hp=e9d6404efcb01559be44b9fc5a0e79aafa51ee70;hpb=580fa137c61abe24c56b440e62fa21657227e9a2;p=novacoin.git diff --git a/src/walletdb.h b/src/walletdb.h index e9d6404..1f727c1 100644 --- a/src/walletdb.h +++ b/src/walletdb.h @@ -6,8 +6,6 @@ #define BITCOIN_WALLETDB_H #include "db.h" -#include "base58.h" -#include "keystore.h" class CKeyPool; class CAccount; @@ -29,17 +27,10 @@ class CKeyMetadata public: static const int CURRENT_VERSION=1; int nVersion; - int64 nCreateTime; // 0 means unknown + int64_t nCreateTime; // 0 means unknown - CKeyMetadata() - { - SetNull(); - } - CKeyMetadata(int64 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,144 +55,46 @@ 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; - - return Write(std::make_pair(std::string("key"), vchPubKey.Raw()), vchPrivKey, false); - } - - bool WriteCryptedKey(const CPubKey& vchPubKey, const std::vector& 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 WriteCScript(const uint160& hash, const CScript& redeemScript) - { - nWalletDBUpdated++; - return Write(std::make_pair(std::string("cscript"), hash), redeemScript, false); - } - - bool WriteWatchOnly(const CTxDestination &dest) - { - nWalletDBUpdated++; - return Write(std::make_pair(std::string("watch"), CBitcoinAddress(dest).ToString()), '1'); - } - - 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 nOrderPosNext) - { - nWalletDBUpdated++; - return Write(std::string("orderposnext"), nOrderPosNext); - } - - bool WriteDefaultKey(const CPubKey& vchPubKey) - { - nWalletDBUpdated++; - return Write(std::string("defaultkey"), vchPubKey.Raw()); - } - - bool ReadPool(int64 nPool, CKeyPool& keypool) - { - return Read(std::make_pair(std::string("pool"), nPool), keypool); - } - - bool WritePool(int64 nPool, const CKeyPool& keypool) - { - nWalletDBUpdated++; - return Write(std::make_pair(std::string("pool"), nPool), keypool); - } - - bool ErasePool(int64 nPool) - { - nWalletDBUpdated++; - return Erase(std::make_pair(std::string("pool"), nPool)); - } - - // Settings are no longer stored in wallet.dat; these are - // used only for backwards compatibility: - template - bool ReadSetting(const std::string& strKey, T& value) - { - return Read(std::make_pair(std::string("setting"), strKey), value); - } - template - bool WriteSetting(const std::string& strKey, const T& value) - { - nWalletDBUpdated++; - return Write(std::make_pair(std::string("setting"), strKey), value); - } - bool EraseSetting(const std::string& strKey) - { - nWalletDBUpdated++; - return Erase(std::make_pair(std::string("setting"), strKey)); - } - - 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& vchCryptedSecretH, const CKeyMetadata &keyMeta); + bool WriteCryptedKey(const CPubKey& key, const std::vector& 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: - bool WriteAccountingEntry(const uint64 nAccEntryNum, const CAccountingEntry& acentry); + bool WriteAccountingEntry(const uint64_t nAccEntryNum, const CAccountingEntry& acentry); public: bool WriteAccountingEntry(const CAccountingEntry& acentry); - int64 GetAccountCreditDebit(const std::string& strAccount); + int64_t GetAccountCreditDebit(const std::string& strAccount); void ListAccountCreditDebit(const std::string& strAccount, std::list& acentries); DBErrors ReorderTransactions(CWallet*); DBErrors LoadWallet(CWallet* pwallet); + DBErrors FindWalletTx(CWallet* pwallet, std::vector& vTxHash); + DBErrors ZapWalletTx(CWallet* pwallet); + static bool Recover(CDBEnv& dbenv, std::string filename, bool fOnlyKeys); static bool Recover(CDBEnv& dbenv, std::string filename); }; +bool BackupWallet(const CWallet& wallet, const std::string& strDest); + #endif // BITCOIN_WALLETDB_H