Allows a user to export a watchonly version of their wallet to be used in an airgapped setup.
Menu action to export a watchonly wallet #872
pull achow101 wants to merge 13 commits into bitcoin-core:master from achow101:export-watchonly-wallet-gui changing 16 files +658 −49-
achow101 commented at 11:31 pm on May 13, 2025: member
-
DrahtBot commented at 11:31 pm on May 13, 2025: contributor
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
Reviews
See the guideline for information on the review process. A summary of reviews will appear here.
Conflicts
Reviewers, this pull request conflicts with the following ones:
- #bitcoin/bitcoin/32652 (wallet: add codex32 argument to addhdkey by roconnor-blockstream)
- #bitcoin/bitcoin/32594 (wallet, rpc: Return normalized descriptor in parent_descs by achow101)
- #bitcoin/bitcoin/32593 (wallet, rpc: Move (Un)LockCoin WalletBatch creation out of RPC by achow101)
- #bitcoin/bitcoin/32489 (wallet: Add
exportwatchonlywallet
RPC to export a watchonly version of a wallet by achow101) - #bitcoin/bitcoin/32481 (wallet, refactor: Remove Legacy wallet unused warnings and errors by pablomartin4btc)
- #bitcoin/bitcoin/32471 (wallet/rpc: fix listdescriptors RPC fails to return descriptors with private key information when wallet contains descriptors missing any key by Eunovo)
- #bitcoin/bitcoin/31244 (descriptors: MuSig2 by achow101)
- #bitcoin/bitcoin/29675 (wallet: Be able to receive and spend inputs involving MuSig2 aggregate keys by achow101)
- #bitcoin/bitcoin/29136 (wallet:
addhdkey
RPC to add just keys to wallets via newunused(KEY)
descriptor by achow101) - #bitcoin/bitcoin/28333 (wallet: Construct ScriptPubKeyMans with all data rather than loaded progressively by achow101)
- #bitcoin/bitcoin/27865 (wallet: Track no-longer-spendable TXOs separately by achow101)
- #bitcoin/bitcoin/27286 (wallet: Keep track of the wallet’s own transaction outputs in memory by achow101)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
-
DrahtBot added the label CI failed on May 14, 2025
-
DrahtBot added the label Needs rebase on May 16, 2025
-
achow101 force-pushed on May 16, 2025
-
DrahtBot removed the label Needs rebase on May 16, 2025
-
DrahtBot removed the label CI failed on May 17, 2025
-
DrahtBot added the label Needs rebase on May 19, 2025
-
achow101 force-pushed on May 20, 2025
-
DrahtBot removed the label Needs rebase on May 20, 2025
-
hebasto renamed this:
gui: Menu action to export a watchonly wallet
Menu action to export a watchonly wallet
on May 20, 2025 -
DrahtBot added the label Needs rebase on May 21, 2025
-
wallet: Track whether a locked coin is persisted 129fdf7b9b
-
wallet, rpc: Push the normalized parent descriptor
Instead of prividing the descriptor string as stored in the db, use the normalized descriptor as is done for getaddressinfo's parent_desc field.
-
wallet: Add GetWalletFlags 7f804ff98f
-
descriptor: Add CanSelfExpand()
CanSelfExpand() reports whether a descriptor can be expanded without needing any caches or private keys to be provided by the caller of Expand().
-
wallet: Use Descriptor::CanSelfExpand() in CanGetAddresses()
If a descriptor does not need any caches or private keys in order to expand, then CanGetAddresses() should return true for that descriptor.
-
wallet: Set upgraded descriptor cache flag for newly created wallets
New wallets always have these upgraded. As a belt-and-suspenders, do the upgrade as well, but it should not be necessary. Note that while WalletBatch::LoadWallet also does the upgrade, because newly created wallets do not have the descriptor flag set yet, the upgrade does not run and set the flag.
-
wallet: Write new descriptor's cache in AddWalletDescriptor
If a new WalletDescriptor is provided to us with a cache, write the cache to disk as well.
-
walletdb: Log additional exception error messages for corrupted wallets a80b399613
-
wallet: Move listdescriptors retrieving from RPC to CWallet
When listdescriptors retrieves the descriptors from the wallet, instead of having this logic in the RPC, move it into CWallet itself. This will enable other functions to get the descriptors in an exportable form.
-
wallet: Add CWallet::ExportWatchOnly
ExportWatchOnly produces a watchonly wallet file from a CWallet. This can be restored onto another instance of Bitcoin Core to allow that instance to watch the same descriptors, and also have all of the same initial address book and transactions.
-
wallet, rpc: Add exportwatchonlywallet RPC c87e0b8ce5
-
test: Test for exportwatchonlywallet 1ec0073636
-
gui: Menu action for exporting a watchonly wallet 6b252fe5d0
-
achow101 force-pushed on May 21, 2025
-
DrahtBot removed the label Needs rebase on May 21, 2025
-
DrahtBot added the label CI failed on May 21, 2025
github-metadata-mirror
This is a metadata mirror of the GitHub repository bitcoin-core/gui. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2025-05-31 18:20 UTC
This is a metadata mirror of the GitHub repository bitcoin-core/gui. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2025-05-31 18:20 UTC
This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me
More mirrored repositories can be found on mirror.b10c.me