Bitcoin Core 30.99.0
P2P Digital Currency
coinstatsindex.h
Go to the documentation of this file.
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 <arith_uint256.h>
9#include <crypto/muhash.h>
10#include <index/base.h>
11
12class CBlockIndex;
13class CDBBatch;
14namespace kernel {
15struct CCoinsStats;
16}
17
18static constexpr bool DEFAULT_COINSTATSINDEX{false};
19
23class CoinStatsIndex final : public BaseIndex
24{
25private:
26 std::unique_ptr<BaseIndex::DB> m_db;
27
30 uint64_t m_bogo_size{0};
40
42
43 [[nodiscard]] bool RevertBlock(const interfaces::BlockInfo& block);
44
45 bool AllowPrune() const override { return true; }
46
47protected:
49
50 bool CustomInit(const std::optional<interfaces::BlockRef>& block) override;
51
52 bool CustomCommit(CDBBatch& batch) override;
53
54 bool CustomAppend(const interfaces::BlockInfo& block) override;
55
56 bool CustomRemove(const interfaces::BlockInfo& block) override;
57
58 BaseIndex::DB& GetDB() const override { return *m_db; }
59
60public:
61 // Constructs the index, which becomes available to be queried.
62 explicit CoinStatsIndex(std::unique_ptr<interfaces::Chain> chain, size_t n_cache_size, bool f_memory = false, bool f_wipe = false);
63
64 // Look up stats for a specific block using CBlockIndex
65 std::optional<kernel::CCoinsStats> LookUpStats(const CBlockIndex& block_index) const;
66};
67
69extern std::unique_ptr<CoinStatsIndex> g_coin_stats_index;
70
71#endif // BITCOIN_INDEX_COINSTATSINDEX_H
int64_t CAmount
Amount in satoshis (Can be negative)
Definition: amount.h:12
The database stores a block locator of the chain the database is synced to so that the index can effi...
Definition: base.h:53
Base class for indices of blockchain data.
Definition: base.h:43
The block chain is a tree shaped structure starting with the genesis block at the root,...
Definition: chain.h:141
Batch of changes queued to be written to a CDBWrapper.
Definition: dbwrapper.h:72
CoinStatsIndex maintains statistics on the UTXO set.
CAmount m_total_subsidy
arith_uint256 m_total_new_outputs_ex_coinbase_amount
bool AllowPrune() const override
interfaces::Chain::NotifyOptions CustomOptions() override
Return custom notification options for index.
bool CustomInit(const std::optional< interfaces::BlockRef > &block) override
Initialize internal state from the database and block index.
CAmount m_total_unspendables_genesis_block
bool CustomRemove(const interfaces::BlockInfo &block) override
Rewind index by one block during a chain reorg.
CoinStatsIndex(std::unique_ptr< interfaces::Chain > chain, size_t n_cache_size, bool f_memory=false, bool f_wipe=false)
CAmount m_total_unspendables_scripts
CAmount m_total_amount
uint64_t m_bogo_size
uint64_t m_transaction_output_count
bool CustomAppend(const interfaces::BlockInfo &block) override
Write update index entries for a newly connected block.
arith_uint256 m_total_prevout_spent_amount
uint256 m_current_block_hash
MuHash3072 m_muhash
std::optional< kernel::CCoinsStats > LookUpStats(const CBlockIndex &block_index) const
std::unique_ptr< BaseIndex::DB > m_db
bool CustomCommit(CDBBatch &batch) override
Virtual method called internally by Commit that can be overridden to atomically commit more index sta...
BaseIndex::DB & GetDB() const override
arith_uint256 m_total_coinbase_amount
CAmount m_total_unspendables_bip30
CAmount m_total_unspendables_unclaimed_rewards
bool RevertBlock(const interfaces::BlockInfo &block)
A class representing MuHash sets.
Definition: muhash.h:100
256-bit unsigned big integer.
256-bit opaque blob.
Definition: uint256.h:196
std::unique_ptr< CoinStatsIndex > g_coin_stats_index
The global UTXO set hash object.
static constexpr bool DEFAULT_COINSTATSINDEX
Block data sent with blockConnected, blockDisconnected notifications.
Definition: chain.h:79
Options specifying which chain notifications are required.
Definition: chain.h:325