diff --git a/rpc.cpp b/rpc.cpp index 88e44cc4..81d36b37 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 \n" + "Return information about ."); + + 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 pCallTable[] = make_pair("listreceivedbyaddress", &listreceivedbyaddress), make_pair("listreceivedbylabel", &listreceivedbylabel), make_pair("backupwallet", &backupwallet), + make_pair("validateaddress", &validateaddress), }; map mapCallTable(pCallTable, pCallTable + sizeof(pCallTable)/sizeof(pCallTable[0])); @@ -715,6 +737,7 @@ string pAllowInSafeMode[] = "getlabel", "getaddressesbylabel", "backupwallet", + "validateaddress", }; set setAllowInSafeMode(pAllowInSafeMode, pAllowInSafeMode + sizeof(pAllowInSafeMode)/sizeof(pAllowInSafeMode[0])); diff --git a/serialize.h b/serialize.h index 44b647f1..0268c750 100644 --- a/serialize.h +++ b/serialize.h @@ -22,7 +22,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 31305; +static const int VERSION = 31306; static const char* pszSubVer = "";