This PR changes the legacy to descriptor wallet migration from creating a new combo() for every individual key to creating one large combo() that has a list of every key. This improves the performance of the migrated wallet as it will only have one DescriptorSPKM for all of the non-HD keys.
Note that this does not affect previously migrated wallets. Such wallets will still have a combo() for every key.
DrahtBot
commented at 8:12 PM on December 2, 2022:
contributor
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--021abf342d371248e50ceaed478a90ca-->
Reviews
See the guideline for information on the review process.
A summary of reviews will appear here.
<!--174a7506f384e20aa4161008e828411d-->
Conflicts
Reviewers, this pull request conflicts with the following ones:
#28333 (wallet: Construct ScriptPubKeyMans with all data rather than loaded progressively by achow101)
#22838 (descriptors: Be able to specify change and receiving in a single descriptor string 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 Wallet on Dec 2, 2022
achow101 marked this as a draft on Dec 2, 2022
achow101 force-pushed on Dec 2, 2022
achow101 force-pushed on Dec 12, 2022
achow101 force-pushed on Jan 26, 2023
achow101 force-pushed on Jan 26, 2023
achow101 force-pushed on Jan 26, 2023
DrahtBot added the label Needs rebase on Feb 1, 2023
achow101 force-pushed on Feb 1, 2023
DrahtBot removed the label Needs rebase on Feb 1, 2023
DrahtBot added the label Needs rebase on Feb 16, 2023
achow101 force-pushed on Feb 16, 2023
DrahtBot removed the label Needs rebase on Feb 16, 2023
DrahtBot added the label Needs rebase on Feb 17, 2023
achow101 force-pushed on Feb 17, 2023
DrahtBot removed the label Needs rebase on Feb 17, 2023
darosior
commented at 11:47 AM on March 22, 2023:
member
Wouldn't #20018 address most performance concerns of having a large number of DescriptorSPKMs? Albeit at the cost of a slightly higher memory footprint, especially in this case.
achow101
commented at 3:59 PM on March 22, 2023:
member
Wouldn't #20018 address most performance concerns of having a large number of DescriptorSPKMs? Albeit at the cost of a slightly higher memory footprint, especially in this case.
Yes, but these approaches aren't mutually exclusive, and I'd like to get feedback on both.
DrahtBot added the label Needs rebase on May 8, 2023
achow101 force-pushed on May 8, 2023
DrahtBot removed the label Needs rebase on May 8, 2023
DrahtBot added the label Needs rebase on May 15, 2023
achow101 force-pushed on May 15, 2023
DrahtBot removed the label Needs rebase on May 15, 2023
achow101 force-pushed on May 15, 2023
DrahtBot added the label CI failed on May 15, 2023
DrahtBot removed the label CI failed on May 16, 2023
achow101 force-pushed on May 27, 2023
achow101 force-pushed on May 30, 2023
DrahtBot added the label CI failed on May 30, 2023
DrahtBot removed the label CI failed on May 31, 2023
DrahtBot added the label CI failed on Jul 4, 2023
descriptors: Add ListPubkeyProvider for lists of single keys
ListPubkeyProvider is a ranged PubkeyProvider that returns individual
public keys that it was constructed with.
ec94996d99
descriptors: Add key expression for list of public keys
A new KEY expression is introduced which takes a list of non-ranged
public keys. This expression itself is ranged and can provide the key at
a particular index. It can take any KEY as long as it is not ranged.
29c53f908a
tests: Test descriptors with list of keysee4c4bc588
descriptors: Change pos to uint32_t1488496613
bench: Add a benchmark for ismineee06828304
wallet: Migrate non-HD keys to single combo with list of keys
Instead of having several thousand individual combo descriptors, have a
single large combo descriptor with a list of keys. This will improve
performance in IsMine and other similar areas.
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-04-18 09:13 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me