Merge pull request #6262
506bae3
Return all available information via validateaddress (dexX7)
This commit is contained in:
commit
247b91449a
1 changed files with 6 additions and 15 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue