elements/src
Hennadii Stepanov e682e7db7e
Merge bitcoin-core/gui#824: Migrate legacy wallets that are not loaded
8f2522d242 gui: Use menu for wallet migration (Ava Chow)
d56a450bf5 gui: Use wallet name for wallet migration rather than WalletModel (Ava Chow)
c3918583dd gui: don't remove wallet manually before migration (furszy)
bfba63880f gui: Consolidate wallet display name to GUIUtil function (Ava Chow)
28fc562f26 wallet, interfaces: Include database format in listWalletDir (Ava Chow)

Pull request description:

  Currently the Migrate Wallet menu item can only be used to migrate the currently loaded wallet. This is not suitable for the future when legacy wallets can no longer be loaded at all, but should still be able to be migrated. This PR changes that menu item into a menu list like Open Wallet and lets users migrate any legacy wallet in their wallet directory regardless of the wallets loaded.

  One issue I ran into was dealing with encrypted wallets. Ideally, we would detect whether a wallet is encrypted, and prompt the user for their passphrase at that time. However, that's actually difficult to do in the GUI since migration will unload the wallet if it was already loaded, and reload it without connecting it to any signals or interfaces. Only then can it detect whether a wallet is encrypted, but then there is no `WalletModel` or even an `interfaces::Wallet` that the GUI could use to unlock it via a callback.

  To deal with this, I've opted to just add a button to the migration dialog box that has the user enter their passphrase first, along with instructional text to use that button if their wallet was encrypted. If the user enters the wrong passphrase or clicked the other button that does not prompt for the passphrase, migration will fail with a message indicating that the passphrase was incorrect.

ACKs for top commit:
  hebasto:
    ACK 8f2522d242.
  furszy:
    ACK 8f2522d

Tree-SHA512: a0e3b70dbfcacb89617956510ebcea94cad8617a987c68fe39fa16ac1721190b7cf7afc156c39b9032920cfb67b5d4ca28791681f5021d92d16acc691387afa1
2024-08-14 14:09:35 +01:00
..
bench Merge bitcoin/bitcoin#30051: crypto, refactor: add new KeyPair class 2024-08-06 22:10:02 -04:00
common Merge bitcoin/bitcoin#29775: Testnet4 including PoW difficulty adjustment fix 2024-08-07 13:05:04 -04:00
compat netbase: refactor CreateSock() to accept sa_family_t 2024-03-01 13:13:07 -05:00
config
consensus testnet: Introduce Testnet4 2024-08-06 01:38:10 +02:00
crc32c Update crc32c subtree to latest upstream master 2024-02-27 18:28:19 +00:00
crypto refactor: fix missing includes 2024-07-24 15:57:01 +01:00
index tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
init logging: clarify -debug and -debugexclude descriptions 2024-08-04 06:43:01 +02:00
interfaces gui: Use wallet name for wallet migration rather than WalletModel 2024-08-13 11:25:38 -04:00
ipc multiprocess: Add type conversion code for UniValue types 2023-11-28 12:35:50 -05:00
kernel chainparams: Handle Testnet4 in GetNetworkForMagic 2024-08-10 22:19:42 +02:00
leveldb Update leveldb-subtree subtree to latest upstream 2024-06-13 13:17:57 +01:00
logging
minisketch Update minisketch subtree to latest master 2024-06-12 14:38:39 +01:00
node add missing #include <cstdint> for GCC 15 2024-08-12 11:15:11 +01:00
policy policy/feerate.h: avoid constraint self-dependency 2024-08-12 11:16:49 +01:00
primitives tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
qt gui: Use menu for wallet migration 2024-08-13 19:18:11 -04:00
rpc doc: add missing "testnet4" network string in RPC/init help texts 2024-08-12 23:00:47 +02:00
script Merge bitcoin/bitcoin#30577: miniscript: Use ToIntegral instead of ParseInt64 2024-08-06 20:11:38 -04:00
secp256k1 Update secp256k1 subtree to latest master 2024-08-02 11:32:47 +01:00
support cleanse: Use SecureZeroMemory for mingw-w64 (release) builds 2024-07-24 09:57:49 +01:00
test Merge bitcoin/bitcoin#30617: net: Clarify that m_addr_local is only set once 2024-08-13 10:19:19 +01:00
univalue test: Fix MSVC warning C4101 "unreferenced local variable" 2024-07-16 22:40:25 +01:00
util Merge bitcoin/bitcoin#29775: Testnet4 including PoW difficulty adjustment fix 2024-08-07 13:05:04 -04:00
wallet Merge bitcoin-core/gui#824: Migrate legacy wallets that are not loaded 2024-08-14 14:09:35 +01:00
zmq tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
.bear-tidy-config tidy: modernize-use-emplace 2023-10-12 11:27:19 +02:00
.clang-format refactor: Print verbose serialize compiler error messages 2023-12-15 15:20:54 +01:00
.clang-tidy Merge bitcoin/bitcoin#30234: Enable clang-tidy checks for self-assignment 2024-07-11 19:21:05 +01:00
addrdb.cpp random: get rid of GetRand by inlining 2024-07-01 12:39:53 -04:00
addrdb.h Use serialization parameters for CAddress serialization 2023-09-05 10:13:25 +02:00
addresstype.cpp policy: Add OP_1 <0x4e73> as a standard output type 2024-07-30 14:06:58 -04:00
addresstype.h policy: Add OP_1 <0x4e73> as a standard output type 2024-07-30 14:06:58 -04:00
addrman.cpp random: add RandomMixin::randbits with compile-known bits 2024-07-01 10:26:46 -04:00
addrman.h doc, test: Test and explain service flag handling 2024-01-15 16:19:53 -05:00
addrman_impl.h Remove timedata 2024-04-10 17:01:27 +02:00
arith_uint256.cpp refactor: Remove unused and fragile string interface from arith_uint256 2023-11-21 17:37:25 +01:00
arith_uint256.h doc + test: Correct uint256 hex string endianness 2024-08-03 21:59:54 +02:00
attributes.h Introduce platform-agnostic ALWAYS_INLINE macro 2023-05-04 20:57:51 +01:00
banman.cpp Merge bitcoin/bitcoin#24097: Replace RecursiveMutex m_cs_banned with Mutex, and rename it 2023-11-02 14:09:27 -04:00
banman.h net_processing: remove Misbehavior score and increments 2024-05-30 08:35:18 -04:00
base58.cpp util: Move util/string.h functions to util namespace 2024-05-16 10:16:08 -05:00
base58.h
bech32.cpp fuzz: replace hardcoded numbers for bech32 limits 2024-08-06 11:03:31 +02:00
bech32.h fuzz: replace hardcoded numbers for bech32 limits 2024-08-06 11:03:31 +02:00
bip324.cpp net: merge V2Transport constructors, move key gen 2023-09-10 16:11:52 -04:00
bip324.h net: merge V2Transport constructors, move key gen 2023-09-10 16:11:52 -04:00
bitcoin-chainstate.cpp Merge bitcoin/bitcoin#30386: Early logging improvements 2024-07-26 08:06:08 -04:00
bitcoin-cli-res.rc
bitcoin-cli.cpp testnet: Introduce Testnet4 2024-08-06 01:38:10 +02:00
bitcoin-tx-res.rc
bitcoin-tx.cpp refactor: Replace ParseHashStr with FromHex 2024-07-24 17:40:18 +02:00
bitcoin-util-res.rc
bitcoin-util.cpp scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
bitcoin-wallet-res.rc
bitcoin-wallet.cpp testnet: Introduce Testnet4 2024-08-06 01:38:10 +02:00
bitcoind-res.rc
bitcoind.cpp refactor: remove warnings globals 2024-06-13 11:20:49 +01:00
blockencodings.cpp test: Make blockencodings_tests deterministic 2024-06-19 22:56:30 +01:00
blockencodings.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
blockfilter.cpp util: Move util/string.h functions to util namespace 2024-05-16 10:16:08 -05:00
blockfilter.h Remove unused includes from blockfilter.h 2023-08-17 18:28:15 +02:00
chain.cpp
chain.h scripted-diff: Modernize naming of nChainTx and nTxCount 2024-08-04 14:24:43 +02:00
chainparams.cpp testnet: Introduce Testnet4 2024-08-06 01:38:10 +02:00
chainparams.h test: Throw error when -signetchallenge is non-hex 2023-05-25 19:24:05 +02:00
chainparamsbase.cpp doc: add missing "testnet4" network string in RPC/init help texts 2024-08-12 23:00:47 +02:00
chainparamsbase.h add missing #include <cstdint> for GCC 15 2024-08-12 11:15:11 +01:00
chainparamsseeds.h testnet: Introduce Testnet4 2024-08-06 01:38:10 +02:00
checkqueue.h refactor: Make CCheckQueue non-copyable and non-movable explicitly 2023-10-03 10:52:17 +01:00
clientversion.cpp util: Move util/string.h functions to util namespace 2024-05-16 10:16:08 -05:00
clientversion.h scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes 2024-05-01 08:33:04 +02:00
cluster_linearize.h clusterlin: improve rechunking in LinearizationChunking (optimization) 2024-08-01 16:03:38 -04:00
coins.cpp Reduce cache lookups in CCoinsViewCache::FetchCoin 2024-08-08 22:51:24 +02:00
coins.h coins: move Sync logic to CoinsViewCacheCursor 2024-08-05 22:34:35 -04:00
compressor.cpp Clean up things that include script/standard.h 2023-08-14 17:38:27 -04:00
compressor.h refactor: Rename CTransaction::nVersion to version 2024-06-07 13:55:23 -04:00
core_io.h refactor: Replace ParseHashStr with FromHex 2024-07-24 17:40:18 +02:00
core_memusage.h
core_read.cpp refactor: Replace ParseHashStr with FromHex 2024-07-24 17:40:18 +02:00
core_write.cpp refactor: Rename CTransaction::nVersion to version 2024-06-07 13:55:23 -04:00
cuckoocache.h validation: Don't error if maxsigcachesize exceeds uint32::max 2024-07-04 22:35:29 +02:00
dbwrapper.cpp log: Remove NOLINT(bitcoin-unterminated-logprintf) 2024-07-19 15:09:00 +02:00
dbwrapper.h dbwrapper: Use DataStream for batch operations 2023-09-12 12:07:39 +02:00
deploymentinfo.cpp
deploymentinfo.h
deploymentstatus.cpp
deploymentstatus.h
dummywallet.cpp wallet, test: Be able to always swap BDB endianness 2024-05-16 15:03:13 -04:00
external_signer.cpp external_signer: replace boost::process with cpp-subprocess 2024-03-27 14:16:37 +00:00
external_signer.h refactor: Move system from util to common library 2023-05-20 12:08:13 +02:00
flatfile.cpp refactor: Add FlatFileSeq member variables in BlockManager 2024-07-24 09:39:35 +02:00
flatfile.h refactor: Add FlatFileSeq member variables in BlockManager 2024-07-24 09:39:35 +02:00
hash.cpp crypto, hash: replace custom rotl32 with std::rotl 2024-01-05 17:12:38 +01:00
hash.h Include version.h in fewer places 2023-11-16 11:36:22 +10:00
headerssync.cpp random: get rid of GetRand by inlining 2024-07-01 12:39:53 -04:00
headerssync.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
httprpc.cpp Merge bitcoin/bitcoin#28167: init: Add option for rpccookie permissions (replace 26088) 2024-06-27 17:35:08 -04:00
httprpc.h
httpserver.cpp rest: don't copy data when sending binary response 2024-06-26 06:47:30 +03:00
httpserver.h Merge bitcoin/bitcoin#30406: refactor: modernize-use-equals-default 2024-07-11 19:08:46 +01:00
i2p.cpp Merge bitcoin/bitcoin#29833: i2p: fix and improve logs 2024-06-26 15:28:26 -04:00
i2p.h i2p: log errors properly according to their severity 2024-06-12 16:19:50 -03:00
indirectmap.h
init.cpp Merge bitcoin/bitcoin#29775: Testnet4 including PoW difficulty adjustment fix 2024-08-07 13:05:04 -04:00
init.h refactor: fix missing includes 2024-07-24 15:57:01 +01:00
key.cpp refactor: remove un-tested early returns 2024-08-04 08:52:22 +02:00
key.h refactor: move SignSchnorr to KeyPair 2024-08-04 08:51:36 +02:00
key_io.cpp policy: Add OP_1 <0x4e73> as a standard output type 2024-07-30 14:06:58 -04:00
key_io.h Clean up things that include script/standard.h 2023-08-14 17:38:27 -04:00
logging.cpp rpc: make logging method reject "0" category and correct the help text 2024-08-04 06:43:00 +02:00
logging.h logging, refactor: minor encapsulation improvement and use BCLog::NONE instead of 0 2024-08-04 06:42:59 +02:00
Makefile.am refactor: use c++20 std::views::reverse instead of reverse_iterator.h 2024-08-06 00:23:38 +01:00
Makefile.bench.include bench: Candidate finding and linearization benchmarks 2024-07-25 10:16:40 -04:00
Makefile.crc32c.include
Makefile.leveldb.include
Makefile.minisketch.include build: remove minisketch clz check 2024-04-12 14:28:34 +02:00
Makefile.qt.include build, test, doc: Temporarily remove Android-related stuff 2024-05-06 11:29:14 +01:00
Makefile.qt_locale.include qt: 27.0 translations update 2024-03-04 10:02:26 +00:00
Makefile.qttest.include
Makefile.test.include Merge bitcoin/bitcoin#28209: fuzz: a target for the block index database 2024-08-12 16:06:38 -04:00
Makefile.test_fuzz.include fuzz: move MockedDescriptorConverter to fuzz/util 2023-11-20 15:57:50 -03:00
Makefile.test_util.include tests: framework for testing DepGraph class 2024-07-25 10:16:37 -04:00
Makefile.univalue.include
mapport.cpp upnp: add compatibility for miniupnpc 2.2.8 2024-06-18 12:24:48 +00:00
mapport.h
memusage.h add std::list to memusage 2023-09-13 11:37:45 +01:00
merkleblock.cpp [clang-tidy] Enable the misc-no-recursion check 2024-04-07 14:04:45 +01:00
merkleblock.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
net.cpp net: Clarify that m_addr_local is only set once 2024-08-09 14:05:04 +02:00
net.h net: Clarify that m_addr_local is only set once 2024-08-09 14:05:04 +02:00
net_permissions.cpp util: move fees.h and error.h to common/messages.h 2024-05-16 10:16:08 -05:00
net_permissions.h Accept "in" and "out" flags to -whitelist to allow whitelisting manual connections 2024-02-28 10:05:56 -03:00
net_processing.cpp Merge bitcoin/bitcoin#29519: p2p: For assumeutxo, download snapshot chain before background chain 2024-08-09 17:42:39 -04:00
net_processing.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
net_types.cpp rpc: avoid copying into UniValue 2024-05-20 16:48:19 +00:00
net_types.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
netaddress.cpp util: Move util/string.h functions to util namespace 2024-05-16 10:16:08 -05:00
netaddress.h random: get rid of GetRand by inlining 2024-07-01 12:39:53 -04:00
netbase.cpp Merge bitcoin/bitcoin#30064: net: log connections failures via SOCKS5 with less severity 2024-08-05 17:44:12 -04:00
netbase.h netbase: extend CreateSock() to support creating arbitrary sockets 2024-06-14 14:23:50 +02:00
netgroup.cpp Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check 2023-12-06 11:22:42 -05:00
netgroup.h net: Add continuous ASMap health check logging 2023-12-02 22:03:08 +01:00
netmessagemaker.h refactor: NetMsg::Make() without nVersion 2023-11-20 14:02:27 +01:00
noui.cpp node: Use log levels in noui_ThreadSafeMessageBox 2024-03-21 16:41:16 +01:00
noui.h
outputtype.cpp fix incorrect multisig redeem script size limit for segwit 2024-05-03 14:20:44 -03:00
outputtype.h fix incorrect multisig redeem script size limit for segwit 2024-05-03 14:20:44 -03:00
pow.cpp testnet: Add Testnet4 difficulty adjustment rules fix 2024-08-06 01:38:12 +02:00
pow.h
prevector.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
protocol.cpp protocol: make message types constexpr 2024-02-28 18:03:23 +01:00
protocol.h Merge bitcoin/bitcoin#29421: net: make the list of known message types a compile time constant 2024-05-21 13:59:33 -04:00
psbt.cpp util: add TransactionError includes and namespace declarations 2024-05-16 10:16:08 -05:00
psbt.h Merge bitcoin/bitcoin#30406: refactor: modernize-use-equals-default 2024-07-11 19:08:46 +01:00
pubkey.cpp crypto: add NUMS_H const 2024-05-14 10:24:31 +02:00
pubkey.h crypto: add NUMS_H const 2024-05-14 10:24:31 +02:00
random.cpp random: replace construct/assign with explicit Reseed() 2024-07-01 12:39:57 -04:00
random.h random: drop ad-hoc Shuffle in favor of std::shuffle 2024-07-06 09:06:36 -04:00
randomenv.cpp Fix MSVC warning C4273 "inconsistent dll linkage" 2024-07-19 22:01:01 +01:00
randomenv.h
rest.cpp refactor: Replace ParseHashStr with FromHex 2024-07-24 17:40:18 +02:00
rest.h
scheduler.cpp scripted-diff: Rename SingleThreadedSchedulerClient to SerialTaskRunner 2024-02-15 14:43:14 +01:00
scheduler.h kernel: Remove dependency on CScheduler 2024-02-16 17:12:52 +01:00
serialize.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
signet.cpp refactor: Rename CTransaction::nVersion to version 2024-06-07 13:55:23 -04:00
signet.h
span.h Allow int8_t optimized vector serialization 2023-12-22 09:58:19 +01:00
streams.cpp Add AutoFile::seek and tell 2024-04-01 14:37:24 -04:00
streams.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
sync.cpp util: avoid using thread_local variable that has a destructor 2024-05-16 18:16:46 +02:00
sync.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
threadsafety.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
tinyformat.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
torcontrol.cpp util: Move util/string.h functions to util namespace 2024-05-16 10:16:08 -05:00
torcontrol.h doc, refactor: Changing -torcontrol help to specify that a default port is used 2023-08-17 23:58:47 -05:00
txdb.cpp coins: pass linked list of flagged entries to BatchWrite 2024-08-05 19:43:56 -04:00
txdb.h coins: pass linked list of flagged entries to BatchWrite 2024-08-05 19:43:56 -04:00
txmempool.cpp refactor: use c++20 std::views::reverse instead of reverse_iterator.h 2024-08-06 00:23:38 +01:00
txmempool.h Merge bitcoin/bitcoin#30194: refactor: use recommended type hiding on multi_index types 2024-08-07 20:00:28 +01:00
txorphanage.cpp Merge bitcoin/bitcoin#30082: test: expand LimitOrphan and EraseForPeer coverage 2024-08-05 17:25:57 -04:00
txorphanage.h Merge bitcoin/bitcoin#30082: test: expand LimitOrphan and EraseForPeer coverage 2024-08-05 17:25:57 -04:00
txrequest.cpp Merge bitcoin/bitcoin#30194: refactor: use recommended type hiding on multi_index types 2024-08-07 20:00:28 +01:00
txrequest.h
uint256.cpp scripted-diff: Rename SetHex to SetHexDeprecated 2024-07-24 09:15:34 +02:00
uint256.h refactor: Add consteval uint256(hex_str) 2024-08-05 14:45:18 +02:00
undo.h Include version.h in fewer places 2023-11-16 11:36:22 +10:00
validation.cpp doc: Remove outdated nTx faking comment 2024-08-10 17:04:54 +02:00
validation.h doc: Remove outdated nTx faking comment 2024-08-10 17:04:54 +02:00
validationinterface.cpp [refactor] change ActiveTipChange to use CBlockIndex ref instead of ptr 2024-07-25 11:01:22 +01:00
validationinterface.h [refactor] change ActiveTipChange to use CBlockIndex ref instead of ptr 2024-07-25 11:01:22 +01:00
versionbits.cpp
versionbits.h
walletinitinterface.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00