mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 15:09:59 +01:00
e041ed9b75wallet: Retrieve ID from loaded DescSPKM directly (Ava Chow)39640dd34ewallet: Use scriptPubKeyCache in GetSolvingProvider (Ava Chow)b410f68791wallet: Use scriptPubKey cache in GetScriptPubKeyMans (Ava Chow)edf4e73a16wallet: Use scriptPubKey cache in IsMine (Ava Chow)37232332bdwallet: Cache scriptPubKeys for all DescriptorSPKMs (Ava Chow)99a0cddbc0wallet: Introduce a callback called after TopUp completes (Ava Chow)b276825932bench: Add a benchmark for ismine (Ava Chow) Pull request description: Wallets that have a ton of non-ranged descriptors (such as a migrated non-HD wallet) perform fairly poorly due to looping through all of the wallet's `ScriptPubKeyMan`s. This is done in various places, such as `IsMine`, and helper functions for fetching a `ScriptPubKeyMan` and a `SolvingProvider`. This also has a bit of a performance impact on standard descriptor wallets, although less noticeable due to the small number of SPKMs. As these functions are based on doing `IsMine` for each `ScriptPubKeyMan`, we can improve this performance by caching `IsMine` scriptPubKeys for all descriptors and use that to determine which `ScriptPubKeyMan` to actually use for those things. This cache is used exclusively and we no longer iterate the SPKMs. Also added a benchmark for `IsMine`. ACKs for top commit: ryanofsky: Code review ACKe041ed9b75. Just suggested changes since last review josibake: ACKe041ed9b75furszy: Code review ACKe041ed9bTree-SHA512: 8e7081991a025e682e9dea838b4543b0d179832d1c47397fb9fe7a97fa01eb699c15a5d5a785634926844fc83a46e6ac07ef753119f39d84423220ef8a548894
52 KiB
52 KiB