diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2019-04-06 08:23:19 -0700 |
---|---|---|
committer | MeshCollider <dobsonsa68@gmail.com> | 2019-04-16 19:35:25 +1200 |
commit | 235550d01992555a316c9c4639f5bec6255a244f (patch) | |
tree | b3ed6c367eb72a1365bc4e0e6f901251dfcf7cac | |
parent | 802dcd37d196aab07f377938d851d7eaf095b03b (diff) | |
download | bitcoin-235550d01992555a316c9c4639f5bec6255a244f.tar.xz |
Take non-importing keys into account for spendability warning in descriptor import
Github-Pull: #15749
Rebased-From: b5d39877242504160a7f2c24c60c07a845d7a064
-rw-r--r-- | src/wallet/rpcdump.cpp | 3 | ||||
-rwxr-xr-x | test/functional/wallet_importmulti.py | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index a809a5e782..ed9742e6c2 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -1193,6 +1193,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 c6d0425f22..bfee2fe4c9 100755 --- a/test/functional/wallet_importmulti.py +++ b/test/functional/wallet_importmulti.py @@ -630,7 +630,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, |