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

TxIndex is used to look up transactions included in the blockchain by hash. More...

#include <txindex.h>

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

Classes

class  DB
 Access to the txindex database (indexes/txindex/) More...
 

Public Member Functions

 TxIndex (size_t n_cache_size, bool f_memory=false, bool f_wipe=false)
 Constructs the index, which becomes available to be queried. More...
 
virtual ~TxIndex () override
 
bool FindTx (const uint256 &tx_hash, uint256 &block_hash, CTransactionRef &tx) const
 Look up a transaction by hash. 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
 Override base class init to migrate from old database. More...
 
bool WriteBlock (const CBlock &block, const CBlockIndex *pindex) override
 Write update index entries for a newly connected block. 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...
 
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...
 
- 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 Attributes

const std::unique_ptr< DBm_db
 

Detailed Description

TxIndex is used to look up transactions included in the blockchain by hash.

The index is written to a LevelDB database and records the filesystem location of each transaction by transaction hash.

Definition at line 17 of file txindex.h.

Constructor & Destructor Documentation

◆ TxIndex()

TxIndex::TxIndex ( 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 226 of file txindex.cpp.

Here is the caller graph for this function:

◆ ~TxIndex()

TxIndex::~TxIndex ( )
overridevirtual

Definition at line 230 of file txindex.cpp.

Here is the caller graph for this function:

Member Function Documentation

◆ FindTx()

bool TxIndex::FindTx ( const uint256 tx_hash,
uint256 block_hash,
CTransactionRef tx 
) const

Look up a transaction by hash.

Parameters
[in]tx_hashThe hash of the transaction to be returned.
[out]block_hashThe hash of the block the transaction is found in.
[out]txThe transaction itself.
Returns
true if transaction is found, false otherwise

Definition at line 263 of file txindex.cpp.

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

◆ GetDB()

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

Implements BaseIndex.

Definition at line 261 of file txindex.cpp.

◆ GetName()

const char* TxIndex::GetName ( ) const
inlineoverrideprotectedvirtual

Get the name of the index for display in logs.

Implements BaseIndex.

Definition at line 33 of file txindex.h.

Here is the call graph for this function:

◆ Init()

bool TxIndex::Init ( )
overrideprotectedvirtual

Override base class init to migrate from old database.

Reimplemented from BaseIndex.

Definition at line 232 of file txindex.cpp.

Here is the call graph for this function:

◆ WriteBlock()

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

Write update index entries for a newly connected block.

Reimplemented from BaseIndex.

Definition at line 246 of file txindex.cpp.

Here is the call graph for this function:

Member Data Documentation

◆ m_db

const std::unique_ptr<DB> TxIndex::m_db
private

Definition at line 20 of file txindex.h.


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