X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fkeystore.cpp;fp=src%2Fkeystore.cpp;h=b4783ec5b9258e774ea3041e86c08729155452c8;hb=1c4fc9052a444c114d9c1501d2c6d1305de650d0;hp=089f2d5b3b240c382c115266d794048e87b375f1;hpb=5249b8a7060b3f59bdf4c710cfc20a99d3c164e9;p=novacoin.git diff --git a/src/keystore.cpp b/src/keystore.cpp index 089f2d5..b4783ec 100644 --- a/src/keystore.cpp +++ b/src/keystore.cpp @@ -63,20 +63,23 @@ bool CBasicKeyStore::GetCScript(const CScriptID &hash, CScript& redeemScriptOut) return false; } -bool CBasicKeyStore::AddWatchOnly(const CTxDestination &dest) +bool CBasicKeyStore::AddWatchOnly(const CScript &dest) { LOCK(cs_KeyStore); - CKeyID keyID; - CBitcoinAddress(dest).GetKeyID(keyID); - if (HaveKey(keyID)) - return false; + 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 CTxDestination &dest) const +bool CBasicKeyStore::HaveWatchOnly(const CScript &dest) const { LOCK(cs_KeyStore); return setWatchOnly.count(dest) > 0; @@ -145,8 +148,10 @@ bool CCryptoKeyStore::AddKey(const CKey& key) { LOCK(cs_KeyStore); - CTxDestination address = key.GetPubKey().GetID(); - if (HaveWatchOnly(address)) + CScript script; + script.SetDestination(key.GetPubKey().GetID()); + + if (HaveWatchOnly(script)) return false; if (!IsCrypted())