-
Notifications
You must be signed in to change notification settings - Fork 38.8k
wallet: Migrate non-HD keys with single combo containing a list of keys #26627
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process. ConflictsReviewers, this pull request conflicts with the following ones:
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. |
5d4005b to
8e60255
Compare
8e60255 to
ce7c534
Compare
ce7c534 to
ff810de
Compare
bdb3f63 to
e60fdf3
Compare
e60fdf3 to
4d43312
Compare
4d43312 to
bdf0dbe
Compare
bdf0dbe to
5d205b8
Compare
|
Wouldn't #20018 address most performance concerns of having a large number of |
Yes, but these approaches aren't mutually exclusive, and I'd like to get feedback on both. |
5d205b8 to
96dea9d
Compare
96dea9d to
c6e00a4
Compare
c6e00a4 to
a15f10a
Compare
fc406a1 to
036cf7f
Compare
ListPubkeyProvider is a ranged PubkeyProvider that returns individual public keys that it was constructed with.
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.
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.
036cf7f to
dd1c9af
Compare
Based on #26626
This PR changes the legacy to descriptor wallet migration from creating a new
combo()for every individual key to creating one largecombo()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.