You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[blockchain] Add traits to reuse Blockchains across multiple wallets
Add three new traits:
- `StatelessBlockchain` is used to tag `Blockchain`s that don't have any
wallet-specic state, i.e. they can be used as-is to sync multiple wallets.
- `StatefulBlockchain` is the opposite of `StatelessBlockchain`: it
provides a method to "clone" a `Blockchain` with an updated internal
state (a new wallet checksum and, optionally, a different number of
blocks to skip from genesis). Potentially this also allows reusing the
underlying connection on `Blockchain` types that support it.
- `MultiBlockchain` is a generalization of this concept: it's
implemented automatically for every type that implements
`StatefulBlockchain` and for every `Arc<T>` where `T` is a
`StatelessBlockchain`. This allows a piece of code that deals with
multiple sub-wallets to just get a `&B: MultiBlockchain` without having
to deal with stateful and statless blockchains individually.
These new traits have been implemented for Electrum, Esplora and RPC
(the first two being stateless and the latter stateful). It hasn't been
implemented on the CBF blockchain, because I don't think it would work
in its current form (it throws away old block filters, so it's hard to
go back and rescan).
This is the first step for bitcoindevkit#549, as BIP47 needs to sync many different
descriptors internally.
It's also very useful for bitcoindevkit#486.
0 commit comments