aboutsummaryrefslogtreecommitdiff
path: root/rpc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rpc.cpp')
-rw-r--r--rpc.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/rpc.cpp b/rpc.cpp
index 88e44cc478..81d36b378b 100644
--- a/rpc.cpp
+++ b/rpc.cpp
@@ -654,7 +654,28 @@ Value backupwallet(const Array& params, bool fHelp)
return Value::null;
}
+Value validateaddress(const Array& params, bool fHelp)
+{
+ if (fHelp || params.size() != 1)
+ throw runtime_error(
+ "validateaddress <bitcoinaddress>\n"
+ "Return information about <bitcoinaddress>.");
+
+ string strAddress = params[0].get_str();
+ uint160 hash160;
+ bool isValid = AddressToHash160(strAddress, hash160);
+ Object ret;
+ ret.push_back(Pair("isvalid", isValid));
+ if (isValid)
+ {
+ // Call Hash160ToAddress() so we always return current ADDRESSVERSION
+ // version of the address:
+ ret.push_back(Pair("address", Hash160ToAddress(hash160)));
+ ret.push_back(Pair("ismine", (mapPubKeys.count(hash160) > 0)));
+ }
+ return ret;
+}
@@ -695,6 +716,7 @@ pair<string, rpcfn_type> pCallTable[] =
make_pair("listreceivedbyaddress", &listreceivedbyaddress),
make_pair("listreceivedbylabel", &listreceivedbylabel),
make_pair("backupwallet", &backupwallet),
+ make_pair("validateaddress", &validateaddress),
};
map<string, rpcfn_type> mapCallTable(pCallTable, pCallTable + sizeof(pCallTable)/sizeof(pCallTable[0]));
@@ -715,6 +737,7 @@ string pAllowInSafeMode[] =
"getlabel",
"getaddressesbylabel",
"backupwallet",
+ "validateaddress",
};
set<string> setAllowInSafeMode(pAllowInSafeMode, pAllowInSafeMode + sizeof(pAllowInSafeMode)/sizeof(pAllowInSafeMode[0]));