LCOV - code coverage report
Current view: top level - src/index - coinstatsindex.h (source / functions) Coverage Total Hit
Test: total_coverage.info Lines: 100.0 % 2 2
Test Date: 2025-01-19 05:08:01 Functions: 100.0 % 2 2

            Line data    Source code
       1              : // Copyright (c) 2020-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_COINSTATSINDEX_H
       6              : #define BITCOIN_INDEX_COINSTATSINDEX_H
       7              : 
       8              : #include <crypto/muhash.h>
       9              : #include <index/base.h>
      10              : 
      11              : class CBlockIndex;
      12              : class CDBBatch;
      13              : namespace kernel {
      14              : struct CCoinsStats;
      15              : }
      16              : 
      17              : static constexpr bool DEFAULT_COINSTATSINDEX{false};
      18              : 
      19              : /**
      20              :  * CoinStatsIndex maintains statistics on the UTXO set.
      21              :  */
      22              : class CoinStatsIndex final : public BaseIndex
      23              : {
      24              : private:
      25              :     std::unique_ptr<BaseIndex::DB> m_db;
      26              : 
      27              :     MuHash3072 m_muhash;
      28              :     uint64_t m_transaction_output_count{0};
      29              :     uint64_t m_bogo_size{0};
      30              :     CAmount m_total_amount{0};
      31              :     CAmount m_total_subsidy{0};
      32              :     CAmount m_total_unspendable_amount{0};
      33              :     CAmount m_total_prevout_spent_amount{0};
      34              :     CAmount m_total_new_outputs_ex_coinbase_amount{0};
      35              :     CAmount m_total_coinbase_amount{0};
      36              :     CAmount m_total_unspendables_genesis_block{0};
      37              :     CAmount m_total_unspendables_bip30{0};
      38              :     CAmount m_total_unspendables_scripts{0};
      39              :     CAmount m_total_unspendables_unclaimed_rewards{0};
      40              : 
      41              :     [[nodiscard]] bool ReverseBlock(const CBlock& block, const CBlockIndex* pindex);
      42              : 
      43        13773 :     bool AllowPrune() const override { return true; }
      44              : 
      45              : protected:
      46              :     bool CustomInit(const std::optional<interfaces::BlockRef>& block) override;
      47              : 
      48              :     bool CustomCommit(CDBBatch& batch) override;
      49              : 
      50              :     bool CustomAppend(const interfaces::BlockInfo& block) override;
      51              : 
      52              :     bool CustomRewind(const interfaces::BlockRef& current_tip, const interfaces::BlockRef& new_tip) override;
      53              : 
      54          517 :     BaseIndex::DB& GetDB() const override { return *m_db; }
      55              : 
      56              : public:
      57              :     // Constructs the index, which becomes available to be queried.
      58              :     explicit CoinStatsIndex(std::unique_ptr<interfaces::Chain> chain, size_t n_cache_size, bool f_memory = false, bool f_wipe = false);
      59              : 
      60              :     // Look up stats for a specific block using CBlockIndex
      61              :     std::optional<kernel::CCoinsStats> LookUpStats(const CBlockIndex& block_index) const;
      62              : };
      63              : 
      64              : /// The global UTXO set hash object.
      65              : extern std::unique_ptr<CoinStatsIndex> g_coin_stats_index;
      66              : 
      67              : #endif // BITCOIN_INDEX_COINSTATSINDEX_H
        

Generated by: LCOV version 2.0-1