No way to rescan cached filters, without retrieving them again
Opened this issue · 1 comments
Preamble: It's possible that there is a way just I could not find it, or there is some fundamental reason why this is not possible.
I could not use nakamoto
in a way, that when blocks and filters are already downloaded and cached, it re-verifies the filters, without downloading them again.
Use cases:
- Restart client after some time, and reevaluate/reload loaded client (rescan for transactions)
- Having a client with cached data, load and scan another wallet, without re-downloading all the filters.
I observed the following phases, when starting the client:
- loading: blocks (and filters?) are read from disk
- filter retrieval is initiated, from the beginning or the provided hint block height, even if they were previously downloaded
- filters are checked.
Re-downloading the filters can takes some time (10-20 minutes).
In the code, I found these relevant parts:
- client Handle
rescan()
(handle.rs) - Filter Manager
rescan()
(cbfmgs.rs), calls into - Filter Manager
get_cfilters()
(cbfmgs.rs).
I suggest to expose the functionality of re-scanning cached filters.
Any comments appreciated.
@optout21 Did you see this happening over the wire? Perusing the code for something else, the logic in cbfmgr.rs#get_cfilters
calls rescan.rs#requests
which seems to intend to skip anything in cache.