Branch data Line data Source code
# 1 : : // Copyright (c) 2017-2018 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 <chain.h> # 9 : : #include <index/base.h> # 10 : : #include <txdb.h> # 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 : : protected: # 26 : : /// Override base class init to migrate from old database. # 27 : : bool Init() override; # 28 : : # 29 : : bool WriteBlock(const CBlock& block, const CBlockIndex* pindex) override; # 30 : : # 31 : : BaseIndex::DB& GetDB() const override; # 32 : : # 33 : 355 : const char* GetName() const override { return "txindex"; } # 34 : : # 35 : : public: # 36 : : /// Constructs the index, which becomes available to be queried. # 37 : : explicit TxIndex(size_t n_cache_size, bool f_memory = false, bool f_wipe = false); # 38 : : # 39 : : // Destructor is declared because this class contains a unique_ptr to an incomplete type. # 40 : : virtual ~TxIndex() override; # 41 : : # 42 : : /// Look up a transaction by hash. # 43 : : /// # 44 : : /// @param[in] tx_hash The hash of the transaction to be returned. # 45 : : /// @param[out] block_hash The hash of the block the transaction is found in. # 46 : : /// @param[out] tx The transaction itself. # 47 : : /// @return true if transaction is found, false otherwise # 48 : : bool FindTx(const uint256& tx_hash, uint256& block_hash, CTransactionRef& tx) const; # 49 : : }; # 50 : : # 51 : : /// The global transaction index, used in GetTransaction. May be null. # 52 : : extern std::unique_ptr<TxIndex> g_txindex; # 53 : : # 54 : : #endif // BITCOIN_INDEX_TXINDEX_H