Struct bitcoin_chainman::ChainstateManagerInner
source · pub struct ChainstateManagerInner {
pub ibd_chainstate: Box<dyn ChainStateInterface>,
pub snapshot_chainstate: Box<dyn ChainStateInterface>,
pub active_chainstate: *mut dyn ChainStateInterface,
pub blockman: BlockManager,
}
Fields§
§ibd_chainstate: Box<dyn ChainStateInterface>
| The chainstate used under normal operation | (i.e. “regular” IBD) or, if a snapshot is | in use, for background validation. | | Its contents (including on-disk data) will | be deleted upon shutdown after | background validation of the snapshot has | completed. We do not free the chainstate | contents immediately after it finishes | validation to cautiously avoid a case | where some other part of the system is | still using this pointer | (e.g. net_processing). | | Once this pointer is set to | a corresponding chainstate, it will not be | reset until init.cpp:Shutdown(). | | This is especially important when, e.g., | calling ActivateBestChain() on all | chainstates because we are not able to | hold ::cs_main going into that call.
snapshot_chainstate: Box<dyn ChainStateInterface>
| A chainstate initialized on the basis of | a UTXO snapshot. If this is non-null, it | is always our active chainstate. | | Once this pointer is set to | a corresponding chainstate, it will not be | reset until init.cpp:Shutdown(). | | This is especially important when, e.g., | calling ActivateBestChain() on all | chainstates because we are not able to | hold ::cs_main going into that call.
active_chainstate: *mut dyn ChainStateInterface
| Points to either the ibd or snapshot | chainstate; indicates our most-work chain. | | Once this pointer is set to | a corresponding chainstate, it will not be | reset until init.cpp:Shutdown(). | | This is especially important when, e.g., | calling ActivateBestChain() on all | chainstates because we are not able to | hold ::cs_main going into that call.
blockman: BlockManager
| A single BlockManager instance is shared | across each constructed chainstate to | avoid duplicating block metadata.