![]() |
Bitcoin ABC 0.30.13
P2P Digital Currency
|
BlockFilterIndex is used to store and retrieve block filters, hashes, and headers for a range of blocks by height. More...
#include <blockfilterindex.h>
Public Member Functions | |
BlockFilterIndex (std::unique_ptr< interfaces::Chain > chain, 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) EXCLUSIVE_LOCKS_REQUIRED(!m_cs_headers_cache) |
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... | |
![]() | |
BaseIndex (std::unique_ptr< interfaces::Chain > chain, std::string name) | |
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 | Init () |
Initializes the sync state and registers the instance to the validation interface so that it stays in sync with blockchain updates. More... | |
bool | StartBackgroundSync () |
Starts the initial sync process. 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 | CustomInit (const std::optional< interfaces::BlockKey > &block) 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::DB & | GetDB () const override |
![]() | |
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... | |
virtual bool | CustomInit (const std::optional< interfaces::BlockKey > &block) |
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 DB & | GetDB () const =0 |
const std::string & | GetName () const LIFETIMEBOUND |
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... | |
![]() | |
~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 | ReadFilterFromDisk (const FlatFilePos &pos, BlockFilter &filter) const |
size_t | WriteFilterToDisk (FlatFilePos &pos, const BlockFilter &filter) |
std::unordered_map< BlockHash, uint256, FilterHeaderHasher > m_headers_cache | GUARDED_BY (m_cs_headers_cache) |
Cache of block hash to filter header, to avoid disk access when responding to getcfcheckpt. More... | |
bool | AllowPrune () const override |
Private Attributes | |
BlockFilterType | m_filter_type |
std::unique_ptr< BaseIndex::DB > | m_db |
FlatFilePos | m_next_filter_pos |
std::unique_ptr< FlatFileSeq > | m_filter_fileseq |
Mutex | m_cs_headers_cache |
Additional Inherited Members | |
![]() | |
std::unique_ptr< interfaces::Chain > | m_chain |
Chainstate * | m_chainstate {nullptr} |
const std::string | m_name |
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 27 of file blockfilterindex.h.
|
explicit |
Constructs the index, which becomes available to be queried.
Definition at line 105 of file blockfilterindex.cpp.
|
inlineoverrideprivatevirtual |
Implements BaseIndex.
Definition at line 46 of file blockfilterindex.h.
|
overrideprotectedvirtual |
Virtual method called internally by Commit that can be overridden to atomically commit more index state.
Reimplemented from BaseIndex.
Definition at line 147 of file blockfilterindex.cpp.
|
overrideprotectedvirtual |
Initialize internal state from the database and block index.
Reimplemented from BaseIndex.
Definition at line 127 of file blockfilterindex.cpp.
|
inlineoverrideprotectedvirtual |
Implements BaseIndex.
Definition at line 58 of file blockfilterindex.h.
|
inline |
|
private |
Cache of block hash to filter header, to avoid disk access when responding to getcfcheckpt.
bool BlockFilterIndex::LookupFilter | ( | const CBlockIndex * | block_index, |
BlockFilter & | filter_out | ||
) | const |
Get a single filter by block.
Definition at line 412 of file blockfilterindex.cpp.
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 472 of file blockfilterindex.cpp.
bool BlockFilterIndex::LookupFilterHeader | ( | const CBlockIndex * | block_index, |
uint256 & | header_out | ||
) |
Get a single filter header by block.
Definition at line 422 of file blockfilterindex.cpp.
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 452 of file blockfilterindex.cpp.
|
private |
Definition at line 164 of file blockfilterindex.cpp.
|
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 307 of file blockfilterindex.cpp.
|
overrideprotectedvirtual |
Write update index entries for a newly connected block.
Reimplemented from BaseIndex.
Definition at line 235 of file blockfilterindex.cpp.
|
private |
Definition at line 185 of file blockfilterindex.cpp.
|
private |
Definition at line 38 of file blockfilterindex.h.
|
private |
Definition at line 30 of file blockfilterindex.h.
|
private |
Definition at line 33 of file blockfilterindex.h.
|
private |
Definition at line 29 of file blockfilterindex.h.
|
private |
Definition at line 32 of file blockfilterindex.h.