aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2019-04-06 08:23:19 -0700
committerPieter Wuille <pieter.wuille@gmail.com>2019-04-06 09:14:56 -0700
commitb5d39877242504160a7f2c24c60c07a845d7a064 (patch)
treeed527112e0c21af94d05653b4105286b92f049fc
parent6e597001a4fc1ba837f3f23cfd7f2d65c3d58104 (diff)
downloadbitcoin-b5d39877242504160a7f2c24c60c07a845d7a064.tar.xz
Take non-importing keys into account for spendability warning in descriptor import
-rw-r--r--src/wallet/rpcdump.cpp3
-rwxr-xr-xtest/functional/wallet_importmulti.py3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp
index 4cbb39c81e..c339e111ba 100644
--- a/src/wallet/rpcdump.cpp
+++ b/src/wallet/rpcdump.cpp
@@ -1197,6 +1197,9 @@ static UniValue ProcessImportDescriptor(ImportData& import_data, std::map<CKeyID
bool spendable = std::all_of(pubkey_map.begin(), pubkey_map.end(),
[&](const std::pair<CKeyID, CPubKey>& used_key) {
return privkey_map.count(used_key.first) > 0;
+ }) && std::all_of(import_data.key_origins.begin(), import_data.key_origins.end(),
+ [&](const std::pair<CKeyID, std::pair<CPubKey, KeyOriginInfo>>& entry) {
+ return privkey_map.count(entry.first) > 0;
});
if (!watch_only && !spendable) {
warnings.push_back("Some private keys are missing, outputs will be considered watchonly. If this is intentional, specify the watchonly flag.");
diff --git a/test/functional/wallet_importmulti.py b/test/functional/wallet_importmulti.py
index 5bfbaa2f0b..a43330ff6e 100755
--- a/test/functional/wallet_importmulti.py
+++ b/test/functional/wallet_importmulti.py
@@ -629,7 +629,8 @@ class ImportMultiTest(BitcoinTestFramework):
self.log.info("Should import a 1-of-2 bare multisig from descriptor")
self.test_importmulti({"desc": descsum_create("multi(1," + key1.pubkey + "," + key2.pubkey + ")"),
"timestamp": "now"},
- success=True)
+ success=True,
+ warnings=["Some private keys are missing, outputs will be considered watchonly. If this is intentional, specify the watchonly flag."])
self.log.info("Should not treat individual keys from the imported bare multisig as watchonly")
test_address(self.nodes[1],
key1.p2pkh_addr,