/Users/eugenesiegel/btc/bitcoin/src/index/txindex.h
| Line | Count | Source (jump to first uncovered line) | 
| 1 |  | // Copyright (c) 2017-2022 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> | 
| 9 |  |  | 
| 10 |  | static constexpr bool DEFAULT_TXINDEX{false}; | 
| 11 |  |  | 
| 12 |  | /** | 
| 13 |  |  * TxIndex is used to look up transactions included in the blockchain by hash. | 
| 14 |  |  * The index is written to a LevelDB database and records the filesystem | 
| 15 |  |  * location of each transaction by transaction hash. | 
| 16 |  |  */ | 
| 17 |  | class TxIndex final : public BaseIndex | 
| 18 |  | { | 
| 19 |  | protected: | 
| 20 |  |     class DB; | 
| 21 |  |  | 
| 22 |  | private: | 
| 23 |  |     const std::unique_ptr<DB> m_db; | 
| 24 |  |  | 
| 25 | 0 |     bool AllowPrune() const override { return false; } | 
| 26 |  |  | 
| 27 |  | protected: | 
| 28 |  |     bool CustomAppend(const interfaces::BlockInfo& block) override; | 
| 29 |  |  | 
| 30 |  |     BaseIndex::DB& GetDB() const override; | 
| 31 |  |  | 
| 32 |  | public: | 
| 33 |  |     /// Constructs the index, which becomes available to be queried. | 
| 34 |  |     explicit TxIndex(std::unique_ptr<interfaces::Chain> chain, size_t n_cache_size, bool f_memory = false, bool f_wipe = false); | 
| 35 |  |  | 
| 36 |  |     // Destructor is declared because this class contains a unique_ptr to an incomplete type. | 
| 37 |  |     virtual ~TxIndex() override; | 
| 38 |  |  | 
| 39 |  |     /// Look up a transaction by hash. | 
| 40 |  |     /// | 
| 41 |  |     /// @param[in]   tx_hash  The hash of the transaction to be returned. | 
| 42 |  |     /// @param[out]  block_hash  The hash of the block the transaction is found in. | 
| 43 |  |     /// @param[out]  tx  The transaction itself. | 
| 44 |  |     /// @return  true if transaction is found, false otherwise | 
| 45 |  |     bool FindTx(const Txid& tx_hash, uint256& block_hash, CTransactionRef& tx) const; | 
| 46 |  | }; | 
| 47 |  |  | 
| 48 |  | /// The global transaction index, used in GetTransaction. May be null. | 
| 49 |  | extern std::unique_ptr<TxIndex> g_txindex; | 
| 50 |  |  | 
| 51 |  | #endif // BITCOIN_INDEX_TXINDEX_H |