| Provides an interface for creating
| and interacting with one or two chainstates:
| an IBD chainstate generated by downloading
| blocks, and an optional snapshot chainstate
| loaded from a UTXO snapshot. Managed
| chainstates can be maintained at different
| heights simultaneously.
|
| This class provides abstractions that
| allow the retrieval of the current most-work
| chainstate (“Active”) as well as chainstates
| which may be in background use to validate
| UTXO snapshots.
|
| Definitions:
|
| -IBD chainstate*: a chainstate whose
| current state has been “fully” validated
| by the initial block download process.
|
| -Snapshot chainstate*: a chainstate
| populated by loading in an assumeutxo
| UTXO snapshot.
|
| -Active chainstate*: the chainstate
| containing the current most-work chain.
| Consulted by most parts of the system
| (net_processing, wallet) as a reflection
| of the current chain and UTXO set.
|
| This may either be an IBD chainstate
| or a snapshot chainstate.
|
| -Background IBD chainstate*: an IBD
| chainstate for which the
|
| IBD process is happening in the background
| while use of the active (snapshot) chainstate
| allows the rest of the system to function.
|