Bitcoin Core  31.0.0
P2P Digital Currency
txindex.h
Go to the documentation of this file.
1 // Copyright (c) 2017-present The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef BITCOIN_INDEX_TXINDEX_H
6 #define BITCOIN_INDEX_TXINDEX_H
7 
8 #include <index/base.h>
10 
11 #include <cstddef>
12 #include <memory>
13 
14 class uint256;
15 namespace interfaces {
16 class Chain;
17 }
18 
19 static constexpr bool DEFAULT_TXINDEX{false};
20 
26 class TxIndex final : public BaseIndex
27 {
28 protected:
29  class DB;
30 
31 private:
32  const std::unique_ptr<DB> m_db;
33 
34  bool AllowPrune() const override { return false; }
35 
36 protected:
37  bool CustomAppend(const interfaces::BlockInfo& block) override;
38 
39  BaseIndex::DB& GetDB() const override;
40 
41 public:
43  explicit TxIndex(std::unique_ptr<interfaces::Chain> chain, size_t n_cache_size, bool f_memory = false, bool f_wipe = false);
44 
45  // Destructor is declared because this class contains a unique_ptr to an incomplete type.
46  virtual ~TxIndex() override;
47 
54  bool FindTx(const Txid& tx_hash, uint256& block_hash, CTransactionRef& tx) const;
55 };
56 
58 extern std::unique_ptr<TxIndex> g_txindex;
59 
60 #endif // BITCOIN_INDEX_TXINDEX_H
std::shared_ptr< const CTransaction > CTransactionRef
Definition: transaction.h:403
bool AllowPrune() const override
Definition: txindex.h:34
const std::unique_ptr< DB > m_db
Definition: txindex.h:29
Access to the txindex database (indexes/txindex/)
Definition: txindex.cpp:38
The database stores a block locator of the chain the database is synced to so that the index can effi...
Definition: base.h:64
Block data sent with blockConnected, blockDisconnected notifications.
Definition: chain.h:19
Base class for indices of blockchain data.
Definition: base.h:54
BaseIndex::DB & GetDB() const override
Definition: txindex.cpp:92
virtual ~TxIndex() override
256-bit opaque blob.
Definition: uint256.h:195
bool CustomAppend(const interfaces::BlockInfo &block) override
Write update index entries for a newly connected block.
Definition: txindex.cpp:75
bool FindTx(const Txid &tx_hash, uint256 &block_hash, CTransactionRef &tx) const
Look up a transaction by hash.
Definition: txindex.cpp:94
std::unique_ptr< TxIndex > g_txindex
The global transaction index, used in GetTransaction. May be null.
Definition: txindex.cpp:34
static constexpr bool DEFAULT_TXINDEX
Definition: txindex.h:19
TxIndex(std::unique_ptr< interfaces::Chain > chain, size_t n_cache_size, bool f_memory=false, bool f_wipe=false)
Constructs the index, which becomes available to be queried.
Definition: txindex.cpp:69
TxIndex is used to look up transactions included in the blockchain by hash.
Definition: txindex.h:26