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

TxoSpenderIndex is used to look up which transaction spent a given output. More...

#include <txospenderindex.h>

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

Public Member Functions

 TxoSpenderIndex (std::unique_ptr< interfaces::Chain > chain, size_t n_cache_size, bool f_memory=false, bool f_wipe=false)
 
util::Expected< std::optional< TxoSpender >, std::string > FindSpender (const COutPoint &txo) const
 
- Public Member Functions inherited from BaseIndex
 BaseIndex (std::unique_ptr< interfaces::Chain > chain, std::string name)
 
virtual ~BaseIndex ()
 Destructor interrupts sync thread if running and blocks until it exits. More...
 
const std::string & GetName () const LIFETIMEBOUND
 Get the name of the index for display in logs. 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 on a background thread. More...
 
void Sync ()
 Sync the index with the block index starting from the current best block. 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

interfaces::Chain::NotifyOptions CustomOptions () override
 Return custom notification options for index. More...
 
bool CustomAppend (const interfaces::BlockInfo &block) override
 Write update index entries for a newly connected block. More...
 
bool CustomRemove (const interfaces::BlockInfo &block) override
 Rewind index by one block during a chain reorg. More...
 
BaseIndex::DBGetDB () const override
 
- Protected Member Functions inherited from BaseIndex
void BlockConnected (const kernel::ChainstateRole &role, const std::shared_ptr< const CBlock > &block, const CBlockIndex *pindex) override
 Notifies listeners of a block being connected. More...
 
void ChainStateFlushed (const kernel::ChainstateRole &role, const CBlockLocator &locator) override
 Notifies listeners of the new active block chain on-disk. More...
 
virtual interfaces::Chain::NotifyOptions CustomOptions ()
 Return custom notification options for index. More...
 
virtual bool CustomInit (const std::optional< interfaces::BlockRef > &block)
 Initialize internal state from the database and block index. More...
 
virtual bool CustomAppend (const interfaces::BlockInfo &block)
 Write update index entries for a newly connected block. More...
 
virtual bool CustomCommit (CDBBatch &batch)
 Virtual method called internally by Commit that can be overridden to atomically commit more index state. More...
 
virtual bool CustomRemove (const interfaces::BlockInfo &block)
 Rewind index by one block during a chain reorg. More...
 
virtual DBGetDB () const =0
 
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 ActiveTipChange (const CBlockIndex &new_tip, bool is_ibd)
 Notifies listeners any time the block chain tip changes, synchronously. More...
 
virtual void TransactionAddedToMempool (const NewMempoolTransactionInfo &tx, 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 MempoolTransactionsRemovedForBlock (const std::vector< RemovedMempoolTransactionInfo > &txs_removed_for_block, unsigned int nBlockHeight)
 
virtual void BlockConnected (const kernel::ChainstateRole &role, 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 Provides the block that was disconnected. More...
 
virtual void ChainStateFlushed (const kernel::ChainstateRole &role, const CBlockLocator &locator)
 Notifies listeners of the new active block chain on-disk. More...
 
virtual void BlockChecked (const std::shared_ptr< 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...
 

Private Member Functions

bool AllowPrune () const override
 
void WriteSpenderInfos (const std::vector< std::pair< COutPoint, CDiskTxPos > > &items)
 
void EraseSpenderInfos (const std::vector< std::pair< COutPoint, CDiskTxPos > > &items)
 
util::Expected< TxoSpender, std::string > ReadTransaction (const CDiskTxPos &pos) const
 

Private Attributes

std::unique_ptr< BaseIndex::DBm_db
 
std::pair< uint64_t, uint64_t > m_siphash_key
 

Additional Inherited Members

- Protected Attributes inherited from BaseIndex
std::unique_ptr< interfaces::Chainm_chain
 
Chainstatem_chainstate {nullptr}
 
const std::string m_name
 

Detailed Description

TxoSpenderIndex is used to look up which transaction spent a given output.

The index is written to a LevelDB database and, for each input of each transaction in a block, records the outpoint that is spent and the hash of the spending transaction.

Definition at line 37 of file txospenderindex.h.

Constructor & Destructor Documentation

◆ TxoSpenderIndex()

TxoSpenderIndex::TxoSpenderIndex ( std::unique_ptr< interfaces::Chain chain,
size_t  n_cache_size,
bool  f_memory = false,
bool  f_wipe = false 
)
explicit

Definition at line 63 of file txospenderindex.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ AllowPrune()

bool TxoSpenderIndex::AllowPrune ( ) const
inlineoverrideprivatevirtual

Implements BaseIndex.

Definition at line 42 of file txospenderindex.h.

◆ CustomAppend()

bool TxoSpenderIndex::CustomAppend ( const interfaces::BlockInfo block)
overrideprotectedvirtual

Write update index entries for a newly connected block.

Reimplemented from BaseIndex.

Definition at line 130 of file txospenderindex.cpp.

Here is the call graph for this function:

◆ CustomOptions()

interfaces::Chain::NotifyOptions TxoSpenderIndex::CustomOptions ( )
overrideprotectedvirtual

Return custom notification options for index.

Reimplemented from BaseIndex.

Definition at line 73 of file txospenderindex.cpp.

◆ CustomRemove()

bool TxoSpenderIndex::CustomRemove ( const interfaces::BlockInfo block)
overrideprotectedvirtual

Rewind index by one block during a chain reorg.

Reimplemented from BaseIndex.

Definition at line 136 of file txospenderindex.cpp.

Here is the call graph for this function:

◆ EraseSpenderInfos()

void TxoSpenderIndex::EraseSpenderInfos ( const std::vector< std::pair< COutPoint, CDiskTxPos > > &  items)
private

Definition at line 102 of file txospenderindex.cpp.

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

◆ FindSpender()

util::Expected< std::optional< TxoSpender >, std::string > TxoSpenderIndex::FindSpender ( const COutPoint txo) const

Definition at line 161 of file txospenderindex.cpp.

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

◆ GetDB()

BaseIndex::DB & TxoSpenderIndex::GetDB ( ) const
overrideprotectedvirtual

Implements BaseIndex.

Definition at line 184 of file txospenderindex.cpp.

◆ ReadTransaction()

util::Expected< TxoSpender, std::string > TxoSpenderIndex::ReadTransaction ( const CDiskTxPos pos) const
private

Definition at line 142 of file txospenderindex.cpp.

Here is the caller graph for this function:

◆ WriteSpenderInfos()

void TxoSpenderIndex::WriteSpenderInfos ( const std::vector< std::pair< COutPoint, CDiskTxPos > > &  items)
private

Definition at line 90 of file txospenderindex.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> TxoSpenderIndex::m_db
private

Definition at line 40 of file txospenderindex.h.

◆ m_siphash_key

std::pair<uint64_t, uint64_t> TxoSpenderIndex::m_siphash_key
private

Definition at line 41 of file txospenderindex.h.


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