|
|
@ -109,20 +109,14 @@ UniValue getinfo(const UniValue& params, bool fHelp) |
|
|
|
#ifdef ENABLE_WALLET |
|
|
|
#ifdef ENABLE_WALLET |
|
|
|
class DescribeAddressVisitor : public boost::static_visitor<UniValue> |
|
|
|
class DescribeAddressVisitor : public boost::static_visitor<UniValue> |
|
|
|
{ |
|
|
|
{ |
|
|
|
private: |
|
|
|
|
|
|
|
isminetype mine; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
|
public: |
|
|
|
DescribeAddressVisitor(isminetype mineIn) : mine(mineIn) {} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UniValue operator()(const CNoDestination &dest) const { return UniValue(UniValue::VOBJ); } |
|
|
|
UniValue operator()(const CNoDestination &dest) const { return UniValue(UniValue::VOBJ); } |
|
|
|
|
|
|
|
|
|
|
|
UniValue operator()(const CKeyID &keyID) const { |
|
|
|
UniValue operator()(const CKeyID &keyID) const { |
|
|
|
UniValue obj(UniValue::VOBJ); |
|
|
|
UniValue obj(UniValue::VOBJ); |
|
|
|
CPubKey vchPubKey; |
|
|
|
CPubKey vchPubKey; |
|
|
|
obj.push_back(Pair("isscript", false)); |
|
|
|
obj.push_back(Pair("isscript", false)); |
|
|
|
if (mine == ISMINE_SPENDABLE) { |
|
|
|
if (pwalletMain->GetPubKey(keyID, vchPubKey)) { |
|
|
|
pwalletMain->GetPubKey(keyID, vchPubKey); |
|
|
|
|
|
|
|
obj.push_back(Pair("pubkey", HexStr(vchPubKey))); |
|
|
|
obj.push_back(Pair("pubkey", HexStr(vchPubKey))); |
|
|
|
obj.push_back(Pair("iscompressed", vchPubKey.IsCompressed())); |
|
|
|
obj.push_back(Pair("iscompressed", vchPubKey.IsCompressed())); |
|
|
|
} |
|
|
|
} |
|
|
@ -131,10 +125,9 @@ public: |
|
|
|
|
|
|
|
|
|
|
|
UniValue operator()(const CScriptID &scriptID) const { |
|
|
|
UniValue operator()(const CScriptID &scriptID) const { |
|
|
|
UniValue obj(UniValue::VOBJ); |
|
|
|
UniValue obj(UniValue::VOBJ); |
|
|
|
obj.push_back(Pair("isscript", true)); |
|
|
|
|
|
|
|
if (mine != ISMINE_NO) { |
|
|
|
|
|
|
|
CScript subscript; |
|
|
|
CScript subscript; |
|
|
|
pwalletMain->GetCScript(scriptID, subscript); |
|
|
|
obj.push_back(Pair("isscript", true)); |
|
|
|
|
|
|
|
if (pwalletMain->GetCScript(scriptID, subscript)) { |
|
|
|
std::vector<CTxDestination> addresses; |
|
|
|
std::vector<CTxDestination> addresses; |
|
|
|
txnouttype whichType; |
|
|
|
txnouttype whichType; |
|
|
|
int nRequired; |
|
|
|
int nRequired; |
|
|
@ -200,11 +193,9 @@ UniValue validateaddress(const UniValue& params, bool fHelp) |
|
|
|
#ifdef ENABLE_WALLET |
|
|
|
#ifdef ENABLE_WALLET |
|
|
|
isminetype mine = pwalletMain ? IsMine(*pwalletMain, dest) : ISMINE_NO; |
|
|
|
isminetype mine = pwalletMain ? IsMine(*pwalletMain, dest) : ISMINE_NO; |
|
|
|
ret.push_back(Pair("ismine", (mine & ISMINE_SPENDABLE) ? true : false)); |
|
|
|
ret.push_back(Pair("ismine", (mine & ISMINE_SPENDABLE) ? true : false)); |
|
|
|
if (mine != ISMINE_NO) { |
|
|
|
|
|
|
|
ret.push_back(Pair("iswatchonly", (mine & ISMINE_WATCH_ONLY) ? true: false)); |
|
|
|
ret.push_back(Pair("iswatchonly", (mine & ISMINE_WATCH_ONLY) ? true: false)); |
|
|
|
UniValue detail = boost::apply_visitor(DescribeAddressVisitor(mine), dest); |
|
|
|
UniValue detail = boost::apply_visitor(DescribeAddressVisitor(), dest); |
|
|
|
ret.pushKVs(detail); |
|
|
|
ret.pushKVs(detail); |
|
|
|
} |
|
|
|
|
|
|
|
if (pwalletMain && pwalletMain->mapAddressBook.count(dest)) |
|
|
|
if (pwalletMain && pwalletMain->mapAddressBook.count(dest)) |
|
|
|
ret.push_back(Pair("account", pwalletMain->mapAddressBook[dest].name)); |
|
|
|
ret.push_back(Pair("account", pwalletMain->mapAddressBook[dest].name)); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|