/root/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 uint256& 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 |