diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -1067,6 +1067,7 @@ //! Import these private keys if available (the value indicates whether if //! the key is required for solvability) std::map used_keys; + std::map key_origins; }; enum class ScriptContext { @@ -1382,7 +1383,8 @@ std::copy(out_keys.pubkeys.begin(), out_keys.pubkeys.end(), std::inserter(pubkey_map, pubkey_map.end())); - + import_data.key_origins.insert(out_keys.origins.begin(), + out_keys.origins.end()); for (size_t i = 0; i < priv_keys.size(); ++i) { const auto &str = priv_keys[i].get_str(); CKey key = DecodeSecret(str); @@ -1521,6 +1523,11 @@ throw JSONRPCError(RPC_WALLET_ERROR, "Error adding address to wallet"); } + const auto &key_orig_it = import_data.key_origins.find(id); + if (key_orig_it != import_data.key_origins.end()) { + pwallet->AddKeyOrigin(pubkey, key_orig_it->second); + } + pwallet->mapKeyMetadata[id].nCreateTime = timestamp; } for (const CScript &script : script_pub_keys) {