aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Chow <achow101-github@achow101.com>2019-06-27 17:53:08 -0400
committerAndrew Chow <achow101-github@achow101.com>2019-07-18 20:35:51 -0400
commitc6a827424711333f6f66cf5f9d79e0e6884769de (patch)
treef3c89fe62d3003a3ec2db08a3d3cfdea92387fe8 /src
parentfae7a5befd0b8746d84a6fde575e5b4ea46cb3c4 (diff)
downloadbitcoin-c6a827424711333f6f66cf5f9d79e0e6884769de.tar.xz
Have importprivkey use CWallet's ImportPrivKeys, ImportScripts, and ImportScriptPubKeys
Behavior changes: * If we already have the key, it's wpkh script will still be added, although it should already be there
Diffstat (limited to 'src')
-rw-r--r--src/wallet/rpcdump.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp
index 506b7c4bef..7f192e9364 100644
--- a/src/wallet/rpcdump.cpp
+++ b/src/wallet/rpcdump.cpp
@@ -187,19 +187,15 @@ UniValue importprivkey(const JSONRPCRequest& request)
}
}
- // Don't throw error in case a key is already there
- if (pwallet->HaveKey(vchAddress)) {
- return NullUniValue;
+ // Use timestamp of 1 to scan the whole chain
+ if (!pwallet->ImportPrivKeys({{vchAddress, key}}, 1)) {
+ throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
}
- // whenever a key is imported, we need to scan the whole chain
- pwallet->UpdateTimeFirstKey(1);
- pwallet->mapKeyMetadata[vchAddress].nCreateTime = 1;
-
- if (!pwallet->AddKeyPubKey(key, pubkey)) {
- throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
+ // Add the wpkh script for this key if possible
+ if (pubkey.IsCompressed()) {
+ pwallet->ImportScripts({GetScriptForDestination(WitnessV0KeyHash(vchAddress))});
}
- pwallet->LearnAllRelatedScripts(pubkey);
}
}
if (fRescan) {