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