Bitcoin ABC 0.30.3
P2P Digital Currency
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
CoinStatsIndex Class Referencefinal

CoinStatsIndex maintains statistics on the UTXO set. More...

#include <coinstatsindex.h>

Inheritance diagram for CoinStatsIndex:
[legend]
Collaboration diagram for CoinStatsIndex:
[legend]

Public Member Functions

 CoinStatsIndex (size_t n_cache_size, bool f_memory=false, bool f_wipe=false)
 
std::optional< kernel::CCoinsStatsLookUpStats (const CBlockIndex *block_index) const
 
- Public Member Functions inherited from BaseIndex
virtual ~BaseIndex ()
 Destructor interrupts sync thread if running and blocks until it exits. More...
 
bool BlockUntilSyncedToCurrentChain() const LOCKS_EXCLUDED(void Interrupt ()
 Blocks the current thread until the index is caught up to the current state of the block chain. More...
 
bool Start (Chainstate &active_chainstate)
 Start initializes the sync state and registers the instance as a ValidationInterface so that it stays in sync with blockchain updates. More...
 
void Stop ()
 Stops the instance from staying in sync with blockchain updates. More...
 
IndexSummary GetSummary () const
 Get a summary of the index and its state. More...
 

Protected Member Functions

bool Init () override
 Initialize internal state from the database and block index. More...
 
bool CommitInternal (CDBBatch &batch) override
 Virtual method called internally by Commit that can be overridden to atomically commit more index state. More...
 
bool WriteBlock (const CBlock &block, const CBlockIndex *pindex) override
 Write update index entries for a newly connected block. More...
 
bool Rewind (const CBlockIndex *current_tip, const CBlockIndex *new_tip) override
 Rewind index to an earlier chain tip during a chain reorg. More...
 
BaseIndex::DBGetDB () const override
 
const char * GetName () const override
 Get the name of the index for display in logs. More...
 
- Protected Member Functions inherited from BaseIndex
void BlockConnected (const std::shared_ptr< const CBlock > &block, const CBlockIndex *pindex) override
 Notifies listeners of a block being connected. More...
 
void ChainStateFlushed (const CBlockLocator &locator) override
 Notifies listeners of the new active block chain on-disk. More...
 
const CBlockIndexCurrentIndex ()
 
virtual bool Init ()
 Initialize internal state from the database and block index. More...
 
virtual bool WriteBlock (const CBlock &block, const CBlockIndex *pindex)
 Write update index entries for a newly connected block. More...
 
virtual bool CommitInternal (CDBBatch &batch)
 Virtual method called internally by Commit that can be overridden to atomically commit more index state. More...
 
virtual bool Rewind (const CBlockIndex *current_tip, const CBlockIndex *new_tip)
 Rewind index to an earlier chain tip during a chain reorg. More...
 
virtual DBGetDB () const =0
 
virtual const char * GetName () const =0
 Get the name of the index for display in logs. More...
 
void SetBestBlockIndex (const CBlockIndex *block)
 Update the internal best block index as well as the prune lock. More...
 
- Protected Member Functions inherited from CValidationInterface
 ~CValidationInterface ()=default
 Protected destructor so that instances can only be deleted by derived classes. More...
 
virtual void UpdatedBlockTip (const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload)
 Notifies listeners when the block chain tip advances. More...
 
virtual void TransactionAddedToMempool (const CTransactionRef &tx, std::shared_ptr< const std::vector< Coin > > spent_coins, uint64_t mempool_sequence)
 Notifies listeners of a transaction having been added to mempool. More...
 
virtual void TransactionRemovedFromMempool (const CTransactionRef &tx, MemPoolRemovalReason reason, uint64_t mempool_sequence)
 Notifies listeners of a transaction leaving mempool. More...
 
virtual void BlockConnected (const std::shared_ptr< const CBlock > &block, const CBlockIndex *pindex)
 Notifies listeners of a block being connected. More...
 
virtual void BlockDisconnected (const std::shared_ptr< const CBlock > &block, const CBlockIndex *pindex)
 Notifies listeners of a block being disconnected. More...
 
virtual void ChainStateFlushed (const CBlockLocator &locator)
 Notifies listeners of the new active block chain on-disk. More...
 
virtual void BlockChecked (const CBlock &, const BlockValidationState &)
 Notifies listeners of a block validation result. More...
 
virtual void NewPoWValidBlock (const CBlockIndex *pindex, const std::shared_ptr< const CBlock > &block)
 Notifies listeners that a block which builds directly on our current tip has been received and connected to the headers tree, though not validated yet. More...
 
virtual void BlockFinalized (const CBlockIndex *pindex)
 
virtual void BlockInvalidated (const CBlockIndex *pindex, const std::shared_ptr< const CBlock > &block)
 

Private Member Functions

bool ReverseBlock (const CBlock &block, const CBlockIndex *pindex)
 
bool AllowPrune () const override
 

Private Attributes

std::string m_name
 
std::unique_ptr< BaseIndex::DBm_db
 
MuHash3072 m_muhash
 
uint64_t m_transaction_output_count {0}
 
uint64_t m_bogo_size {0}
 
Amount m_total_amount {Amount::zero()}
 
Amount m_total_subsidy {Amount::zero()}
 
Amount m_total_unspendable_amount {Amount::zero()}
 
Amount m_total_prevout_spent_amount {Amount::zero()}
 
Amount m_total_new_outputs_ex_coinbase_amount {Amount::zero()}
 
Amount m_total_coinbase_amount {Amount::zero()}
 
Amount m_total_unspendables_genesis_block {Amount::zero()}
 
Amount m_total_unspendables_bip30 {Amount::zero()}
 
Amount m_total_unspendables_scripts {Amount::zero()}
 
Amount m_total_unspendables_unclaimed_rewards {Amount::zero()}
 

Additional Inherited Members

- Protected Attributes inherited from BaseIndex
Chainstatem_chainstate {nullptr}
 

Detailed Description

CoinStatsIndex maintains statistics on the UTXO set.

Definition at line 21 of file coinstatsindex.h.

Constructor & Destructor Documentation

◆ CoinStatsIndex()

CoinStatsIndex::CoinStatsIndex ( size_t  n_cache_size,
bool  f_memory = false,
bool  f_wipe = false 
)
explicit

Definition at line 104 of file coinstatsindex.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ AllowPrune()

bool CoinStatsIndex::AllowPrune ( ) const
inlineoverrideprivatevirtual

Implements BaseIndex.

Definition at line 42 of file coinstatsindex.h.

◆ CommitInternal()

bool CoinStatsIndex::CommitInternal ( CDBBatch batch)
overrideprotectedvirtual

Virtual method called internally by Commit that can be overridden to atomically commit more index state.

Reimplemented from BaseIndex.

Definition at line 427 of file coinstatsindex.cpp.

Here is the call graph for this function:

◆ GetDB()

BaseIndex::DB & CoinStatsIndex::GetDB ( ) const
inlineoverrideprotectedvirtual

Implements BaseIndex.

Definition at line 54 of file coinstatsindex.h.

◆ GetName()

const char * CoinStatsIndex::GetName ( ) const
inlineoverrideprotectedvirtual

Get the name of the index for display in logs.

Implements BaseIndex.

Definition at line 56 of file coinstatsindex.h.

Here is the caller graph for this function:

◆ Init()

bool CoinStatsIndex::Init ( )
overrideprotectedvirtual

Initialize internal state from the database and block index.

Reimplemented from BaseIndex.

Definition at line 373 of file coinstatsindex.cpp.

Here is the call graph for this function:

◆ LookUpStats()

std::optional< CCoinsStats > CoinStatsIndex::LookUpStats ( const CBlockIndex block_index) const

Definition at line 343 of file coinstatsindex.cpp.

Here is the call graph for this function:

◆ ReverseBlock()

bool CoinStatsIndex::ReverseBlock ( const CBlock block,
const CBlockIndex pindex 
)
private

Definition at line 435 of file coinstatsindex.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Rewind()

bool CoinStatsIndex::Rewind ( const CBlockIndex current_tip,
const CBlockIndex new_tip 
)
overrideprotectedvirtual

Rewind index to an earlier chain tip during a chain reorg.

The tip must be an ancestor of the current best block.

Reimplemented from BaseIndex.

Definition at line 282 of file coinstatsindex.cpp.

Here is the call graph for this function:

◆ WriteBlock()

bool CoinStatsIndex::WriteBlock ( const CBlock block,
const CBlockIndex pindex 
)
overrideprotectedvirtual

Write update index entries for a newly connected block.

Reimplemented from BaseIndex.

Definition at line 113 of file coinstatsindex.cpp.

Here is the call graph for this function:

Member Data Documentation

◆ m_bogo_size

uint64_t CoinStatsIndex::m_bogo_size {0}
private

Definition at line 28 of file coinstatsindex.h.

◆ m_db

std::unique_ptr<BaseIndex::DB> CoinStatsIndex::m_db
private

Definition at line 24 of file coinstatsindex.h.

◆ m_muhash

MuHash3072 CoinStatsIndex::m_muhash
private

Definition at line 26 of file coinstatsindex.h.

◆ m_name

std::string CoinStatsIndex::m_name
private

Definition at line 23 of file coinstatsindex.h.

◆ m_total_amount

Amount CoinStatsIndex::m_total_amount {Amount::zero()}
private

Definition at line 29 of file coinstatsindex.h.

◆ m_total_coinbase_amount

Amount CoinStatsIndex::m_total_coinbase_amount {Amount::zero()}
private

Definition at line 34 of file coinstatsindex.h.

◆ m_total_new_outputs_ex_coinbase_amount

Amount CoinStatsIndex::m_total_new_outputs_ex_coinbase_amount {Amount::zero()}
private

Definition at line 33 of file coinstatsindex.h.

◆ m_total_prevout_spent_amount

Amount CoinStatsIndex::m_total_prevout_spent_amount {Amount::zero()}
private

Definition at line 32 of file coinstatsindex.h.

◆ m_total_subsidy

Amount CoinStatsIndex::m_total_subsidy {Amount::zero()}
private

Definition at line 30 of file coinstatsindex.h.

◆ m_total_unspendable_amount

Amount CoinStatsIndex::m_total_unspendable_amount {Amount::zero()}
private

Definition at line 31 of file coinstatsindex.h.

◆ m_total_unspendables_bip30

Amount CoinStatsIndex::m_total_unspendables_bip30 {Amount::zero()}
private

Definition at line 36 of file coinstatsindex.h.

◆ m_total_unspendables_genesis_block

Amount CoinStatsIndex::m_total_unspendables_genesis_block {Amount::zero()}
private

Definition at line 35 of file coinstatsindex.h.

◆ m_total_unspendables_scripts

Amount CoinStatsIndex::m_total_unspendables_scripts {Amount::zero()}
private

Definition at line 37 of file coinstatsindex.h.

◆ m_total_unspendables_unclaimed_rewards

Amount CoinStatsIndex::m_total_unspendables_unclaimed_rewards {Amount::zero()}
private

Definition at line 38 of file coinstatsindex.h.

◆ m_transaction_output_count

uint64_t CoinStatsIndex::m_transaction_output_count {0}
private

Definition at line 27 of file coinstatsindex.h.


The documentation for this class was generated from the following files: