Bitcoin Core  0.18.99
P2P Digital Currency
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
BlockFilterIndex Class Referencefinal

BlockFilterIndex is used to store and retrieve block filters, hashes, and headers for a range of blocks by height. More...

#include <blockfilterindex.h>

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

Public Member Functions

 BlockFilterIndex (BlockFilterType filter_type, size_t n_cache_size, bool f_memory=false, bool f_wipe=false)
 Constructs the index, which becomes available to be queried. More...
 
BlockFilterType GetFilterType () const
 
bool LookupFilter (const CBlockIndex *block_index, BlockFilter &filter_out) const
 Get a single filter by block. More...
 
bool LookupFilterHeader (const CBlockIndex *block_index, uint256 &header_out) const
 Get a single filter header by block. More...
 
bool LookupFilterRange (int start_height, const CBlockIndex *stop_index, std::vector< BlockFilter > &filters_out) const
 Get a range of filters between two heights on a chain. More...
 
bool LookupFilterHashRange (int start_height, const CBlockIndex *stop_index, std::vector< uint256 > &hashes_out) const
 Get a range of filter hashes between two heights on a chain. More...
 
- Public Member Functions inherited from BaseIndex
virtual ~BaseIndex ()
 Destructor interrupts sync thread if running and blocks until it exits. More...
 
bool BlockUntilSyncedToCurrentChain ()
 Blocks the current thread until the index is caught up to the current state of the block chain. More...
 
void Interrupt ()
 
void Start ()
 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...
 

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, const std::vector< CTransactionRef > &txn_conflicted) 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...
 
- 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 &ptxn)
 Notifies listeners of a transaction having been added to mempool. More...
 
virtual void TransactionRemovedFromMempool (const CTransactionRef &ptx)
 Notifies listeners of a transaction leaving mempool. More...
 
virtual void BlockDisconnected (const std::shared_ptr< const CBlock > &block)
 Notifies listeners of a block being disconnected. More...
 
virtual void BlockChecked (const CBlock &, const CValidationState &)
 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...
 
friend void ::RegisterValidationInterface (CValidationInterface *)
 
friend void ::UnregisterValidationInterface (CValidationInterface *)
 
friend void ::UnregisterAllValidationInterfaces ()
 

Private Member Functions

bool ReadFilterFromDisk (const FlatFilePos &pos, BlockFilter &filter) const
 
size_t WriteFilterToDisk (FlatFilePos &pos, const BlockFilter &filter)
 

Private Attributes

BlockFilterType m_filter_type
 
std::string m_name
 
std::unique_ptr< BaseIndex::DBm_db
 
FlatFilePos m_next_filter_pos
 
std::unique_ptr< FlatFileSeqm_filter_fileseq
 

Detailed Description

BlockFilterIndex is used to store and retrieve block filters, hashes, and headers for a range of blocks by height.

An index is constructed for each supported filter type with its own database (ie. filter data for different types are stored in separate databases).

This index is used to serve BIP 157 net requests.

Definition at line 20 of file blockfilterindex.h.

Constructor & Destructor Documentation

◆ BlockFilterIndex()

BlockFilterIndex::BlockFilterIndex ( BlockFilterType  filter_type,
size_t  n_cache_size,
bool  f_memory = false,
bool  f_wipe = false 
)
explicit

Constructs the index, which becomes available to be queried.

Definition at line 99 of file blockfilterindex.cpp.

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

Member Function Documentation

◆ CommitInternal()

bool BlockFilterIndex::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 132 of file blockfilterindex.cpp.

Here is the call graph for this function:

◆ GetDB()

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

Implements BaseIndex.

Definition at line 42 of file blockfilterindex.h.

◆ GetFilterType()

BlockFilterType BlockFilterIndex::GetFilterType ( ) const
inline

Definition at line 51 of file blockfilterindex.h.

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

◆ GetName()

const char* BlockFilterIndex::GetName ( ) const
inlineoverrideprotectedvirtual

Get the name of the index for display in logs.

Implements BaseIndex.

Definition at line 44 of file blockfilterindex.h.

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

◆ Init()

bool BlockFilterIndex::Init ( )
overrideprotectedvirtual

Initialize internal state from the database and block index.

Reimplemented from BaseIndex.

Definition at line 114 of file blockfilterindex.cpp.

Here is the call graph for this function:

◆ LookupFilter()

bool BlockFilterIndex::LookupFilter ( const CBlockIndex block_index,
BlockFilter filter_out 
) const

Get a single filter by block.

Definition at line 380 of file blockfilterindex.cpp.

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

◆ LookupFilterHashRange()

bool BlockFilterIndex::LookupFilterHashRange ( int  start_height,
const CBlockIndex stop_index,
std::vector< uint256 > &  hashes_out 
) const

Get a range of filter hashes between two heights on a chain.

Definition at line 421 of file blockfilterindex.cpp.

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

◆ LookupFilterHeader()

bool BlockFilterIndex::LookupFilterHeader ( const CBlockIndex block_index,
uint256 header_out 
) const

Get a single filter header by block.

Definition at line 390 of file blockfilterindex.cpp.

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

◆ LookupFilterRange()

bool BlockFilterIndex::LookupFilterRange ( int  start_height,
const CBlockIndex stop_index,
std::vector< BlockFilter > &  filters_out 
) const

Get a range of filters between two heights on a chain.

Definition at line 401 of file blockfilterindex.cpp.

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

◆ ReadFilterFromDisk()

bool BlockFilterIndex::ReadFilterFromDisk ( const FlatFilePos pos,
BlockFilter filter 
) const
private

Definition at line 149 of file blockfilterindex.cpp.

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

◆ Rewind()

bool BlockFilterIndex::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 284 of file blockfilterindex.cpp.

Here is the call graph for this function:

◆ WriteBlock()

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

Write update index entries for a newly connected block.

Reimplemented from BaseIndex.

Definition at line 215 of file blockfilterindex.cpp.

Here is the call graph for this function:

◆ WriteFilterToDisk()

size_t BlockFilterIndex::WriteFilterToDisk ( FlatFilePos pos,
const BlockFilter filter 
)
private

Definition at line 169 of file blockfilterindex.cpp.

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

Member Data Documentation

◆ m_db

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

Definition at line 25 of file blockfilterindex.h.

◆ m_filter_fileseq

std::unique_ptr<FlatFileSeq> BlockFilterIndex::m_filter_fileseq
private

Definition at line 28 of file blockfilterindex.h.

◆ m_filter_type

BlockFilterType BlockFilterIndex::m_filter_type
private

Definition at line 23 of file blockfilterindex.h.

◆ m_name

std::string BlockFilterIndex::m_name
private

Definition at line 24 of file blockfilterindex.h.

◆ m_next_filter_pos

FlatFilePos BlockFilterIndex::m_next_filter_pos
private

Definition at line 27 of file blockfilterindex.h.


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