Coverage Report

Created: 2024-10-21 15:10

/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