X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fkeystore.cpp;h=b4783ec5b9258e774ea3041e86c08729155452c8;hb=1c4fc9052a444c114d9c1501d2c6d1305de650d0;hp=18a39422a99dba9b6f8ae154af0a5eb1afc1b147;hpb=2c2107310f7c2f50fbb257283f223ec9b7007f41;p=novacoin.git diff --git a/src/keystore.cpp b/src/keystore.cpp index 18a3942..b4783ec 100644 --- a/src/keystore.cpp +++ b/src/keystore.cpp @@ -5,6 +5,7 @@ #include "keystore.h" #include "script.h" +#include "base58.h" extern bool fWalletUnlockMintOnly; @@ -62,6 +63,28 @@ bool CBasicKeyStore::GetCScript(const CScriptID &hash, CScript& redeemScriptOut) return false; } +bool CBasicKeyStore::AddWatchOnly(const CScript &dest) +{ + LOCK(cs_KeyStore); + + CTxDestination address; + if (ExtractDestination(dest, address)) { + CKeyID keyID; + CBitcoinAddress(address).GetKeyID(keyID); + if (HaveKey(keyID)) + return false; + } + + setWatchOnly.insert(dest); + return true; +} + +bool CBasicKeyStore::HaveWatchOnly(const CScript &dest) const +{ + LOCK(cs_KeyStore); + return setWatchOnly.count(dest) > 0; +} + bool CCryptoKeyStore::SetCrypted() { { @@ -124,6 +147,13 @@ bool CCryptoKeyStore::AddKey(const CKey& key) { { LOCK(cs_KeyStore); + + CScript script; + script.SetDestination(key.GetPubKey().GetID()); + + if (HaveWatchOnly(script)) + return false; + if (!IsCrypted()) return CBasicKeyStore::AddKey(key);