Enable wallet key imports without rescan in pruned mode.
Complete rescan is incompatible with pruning, but rescan is optional on our wallet key import RPCs. Import on use is very useful in some common situations in conjunction with pruning, e.g. merchant payment tracking. This reenables importprivkey/importaddress/importpubkey when rescan is not used. In the future we should consider changing the rescan argument to allow depth or date to allow limited rescanning when compatible with the retained block depth.
This commit is contained in:
parent
536207f316
commit
77c6072473
1 changed files with 9 additions and 6 deletions
|
@ -97,8 +97,6 @@ UniValue importprivkey(const UniValue& params, bool fHelp)
|
||||||
+ HelpExampleRpc("importprivkey", "\"mykey\", \"testing\", false")
|
+ HelpExampleRpc("importprivkey", "\"mykey\", \"testing\", false")
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fPruneMode)
|
|
||||||
throw JSONRPCError(RPC_WALLET_ERROR, "Importing keys is disabled in pruned mode");
|
|
||||||
|
|
||||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
|
|
||||||
|
@ -114,6 +112,9 @@ UniValue importprivkey(const UniValue& params, bool fHelp)
|
||||||
if (params.size() > 2)
|
if (params.size() > 2)
|
||||||
fRescan = params[2].get_bool();
|
fRescan = params[2].get_bool();
|
||||||
|
|
||||||
|
if (fRescan && fPruneMode)
|
||||||
|
throw JSONRPCError(RPC_WALLET_ERROR, "Rescan is disabled in pruned mode");
|
||||||
|
|
||||||
CBitcoinSecret vchSecret;
|
CBitcoinSecret vchSecret;
|
||||||
bool fGood = vchSecret.SetString(strSecret);
|
bool fGood = vchSecret.SetString(strSecret);
|
||||||
|
|
||||||
|
@ -201,8 +202,6 @@ UniValue importaddress(const UniValue& params, bool fHelp)
|
||||||
+ HelpExampleRpc("importaddress", "\"myscript\", \"testing\", false")
|
+ HelpExampleRpc("importaddress", "\"myscript\", \"testing\", false")
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fPruneMode)
|
|
||||||
throw JSONRPCError(RPC_WALLET_ERROR, "Importing addresses is disabled in pruned mode");
|
|
||||||
|
|
||||||
string strLabel = "";
|
string strLabel = "";
|
||||||
if (params.size() > 1)
|
if (params.size() > 1)
|
||||||
|
@ -213,6 +212,9 @@ UniValue importaddress(const UniValue& params, bool fHelp)
|
||||||
if (params.size() > 2)
|
if (params.size() > 2)
|
||||||
fRescan = params[2].get_bool();
|
fRescan = params[2].get_bool();
|
||||||
|
|
||||||
|
if (fRescan && fPruneMode)
|
||||||
|
throw JSONRPCError(RPC_WALLET_ERROR, "Rescan is disabled in pruned mode");
|
||||||
|
|
||||||
// Whether to import a p2sh version, too
|
// Whether to import a p2sh version, too
|
||||||
bool fP2SH = false;
|
bool fP2SH = false;
|
||||||
if (params.size() > 3)
|
if (params.size() > 3)
|
||||||
|
@ -264,8 +266,6 @@ UniValue importpubkey(const UniValue& params, bool fHelp)
|
||||||
+ HelpExampleRpc("importpubkey", "\"mypubkey\", \"testing\", false")
|
+ HelpExampleRpc("importpubkey", "\"mypubkey\", \"testing\", false")
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fPruneMode)
|
|
||||||
throw JSONRPCError(RPC_WALLET_ERROR, "Importing public keys is disabled in pruned mode");
|
|
||||||
|
|
||||||
string strLabel = "";
|
string strLabel = "";
|
||||||
if (params.size() > 1)
|
if (params.size() > 1)
|
||||||
|
@ -276,6 +276,9 @@ UniValue importpubkey(const UniValue& params, bool fHelp)
|
||||||
if (params.size() > 2)
|
if (params.size() > 2)
|
||||||
fRescan = params[2].get_bool();
|
fRescan = params[2].get_bool();
|
||||||
|
|
||||||
|
if (fRescan && fPruneMode)
|
||||||
|
throw JSONRPCError(RPC_WALLET_ERROR, "Rescan is disabled in pruned mode");
|
||||||
|
|
||||||
if (!IsHex(params[0].get_str()))
|
if (!IsHex(params[0].get_str()))
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Pubkey must be a hex string");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Pubkey must be a hex string");
|
||||||
std::vector<unsigned char> data(ParseHex(params[0].get_str()));
|
std::vector<unsigned char> data(ParseHex(params[0].get_str()));
|
||||||
|
|
Loading…
Reference in a new issue