Changeset View
Changeset View
Standalone View
Standalone View
src/wallet/rpcdump.cpp
Show First 20 Lines • Show All 1,260 Lines • ▼ Show 20 Lines | static UniValue ProcessImportDescriptor(ImportData &import_data, | ||||
std::set<CScript> &script_pub_keys, | std::set<CScript> &script_pub_keys, | ||||
bool &have_solving_data, | bool &have_solving_data, | ||||
const UniValue &data, | const UniValue &data, | ||||
std::vector<CKeyID> &ordered_pubkeys) { | std::vector<CKeyID> &ordered_pubkeys) { | ||||
UniValue warnings(UniValue::VARR); | UniValue warnings(UniValue::VARR); | ||||
const std::string &descriptor = data["desc"].get_str(); | const std::string &descriptor = data["desc"].get_str(); | ||||
FlatSigningProvider keys; | FlatSigningProvider keys; | ||||
auto parsed_desc = Parse(descriptor, keys, /* require_checksum = */ true); | std::string error; | ||||
auto parsed_desc = | |||||
Parse(descriptor, keys, error, /* require_checksum = */ true); | |||||
if (!parsed_desc) { | if (!parsed_desc) { | ||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Descriptor is invalid"); | throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, | ||||
strprintf("Descriptor is invalid, %s", error)); | |||||
} | } | ||||
have_solving_data = parsed_desc->IsSolvable(); | have_solving_data = parsed_desc->IsSolvable(); | ||||
const bool watch_only = | const bool watch_only = | ||||
data.exists("watchonly") ? data["watchonly"].get_bool() : false; | data.exists("watchonly") ? data["watchonly"].get_bool() : false; | ||||
int64_t range_start = 0, range_end = 0; | int64_t range_start = 0, range_end = 0; | ||||
if (!parsed_desc->IsRange() && data.exists("range")) { | if (!parsed_desc->IsRange() && data.exists("range")) { | ||||
▲ Show 20 Lines • Show All 505 Lines • Show Last 20 Lines |