Bitcoin Core  22.0.0
P2P Digital Currency
coinstats.h
Go to the documentation of this file.
1 // Copyright (c) 2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2020 The Bitcoin Core developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #ifndef BITCOIN_NODE_COINSTATS_H
7 #define BITCOIN_NODE_COINSTATS_H
8 
9 #include <amount.h>
10 #include <chain.h>
11 #include <coins.h>
12 #include <streams.h>
13 #include <uint256.h>
14 
15 #include <cstdint>
16 #include <functional>
17 
18 class BlockManager;
19 class CCoinsView;
20 
21 enum class CoinStatsHashType {
23  MUHASH,
24  NONE,
25 };
26 
28 {
30  int nHeight{0};
32  uint64_t nTransactions{0};
33  uint64_t nTransactionOutputs{0};
34  uint64_t nBogoSize{0};
36  uint64_t nDiskSize{0};
38 
40  uint64_t coins_count{0};
41 
43  bool index_requested{true};
45  bool index_used{false};
46 
47  // Following values are only available from coinstats index
57 
58  CCoinsStats(CoinStatsHashType hash_type) : m_hash_type(hash_type) {}
59 };
60 
62 bool GetUTXOStats(CCoinsView* view, BlockManager& blockman, CCoinsStats& stats, const std::function<void()>& interruption_point = {}, const CBlockIndex* pindex = nullptr);
63 
64 uint64_t GetBogoSize(const CScript& script_pub_key);
65 
66 CDataStream TxOutSer(const COutPoint& outpoint, const Coin& coin);
67 
68 #endif // BITCOIN_NODE_COINSTATS_H
uint64_t nTransactionOutputs
Definition: coinstats.h:33
uint256 hashBlock
Definition: coinstats.h:31
A UTXO entry.
Definition: coins.h:30
int nHeight
Definition: coinstats.h:30
Maintains a tree of blocks (stored in m_block_index) which is consulted to determine where the most-w...
Definition: validation.h:395
CAmount unspendables_genesis_block
Definition: coinstats.h:53
bool index_requested
Signals if the coinstatsindex should be used (when available).
Definition: coinstats.h:43
uint64_t nTransactions
Definition: coinstats.h:32
uint64_t nDiskSize
Definition: coinstats.h:36
Double ended buffer combining vector and stream-like interfaces.
Definition: streams.h:204
CAmount block_coinbase_amount
Definition: coinstats.h:52
CAmount block_unspendable_amount
Definition: coinstats.h:49
uint64_t nBogoSize
Definition: coinstats.h:34
CAmount nTotalAmount
Definition: coinstats.h:37
uint256 hashSerialized
Definition: coinstats.h:35
int64_t CAmount
Amount in satoshis (Can be negative)
Definition: amount.h:12
CoinStatsHashType m_hash_type
Definition: coinstats.h:29
CoinStatsHashType
Definition: coinstats.h:21
CDataStream TxOutSer(const COutPoint &outpoint, const Coin &coin)
Definition: coinstats.cpp:30
Abstract view on the open txout dataset.
Definition: coins.h:157
CCoinsStats(CoinStatsHashType hash_type)
Definition: coinstats.h:58
bool GetUTXOStats(CCoinsView *view, BlockManager &blockman, CCoinsStats &stats, const std::function< void()> &interruption_point={}, const CBlockIndex *pindex=nullptr)
Calculate statistics about the unspent transaction output set.
Definition: coinstats.cpp:145
CAmount block_new_outputs_ex_coinbase_amount
Definition: coinstats.h:51
uint64_t coins_count
The number of coins contained.
Definition: coinstats.h:40
CAmount total_subsidy
Definition: coinstats.h:48
An outpoint - a combination of a transaction hash and an index n into its vout.
Definition: transaction.h:26
256-bit opaque blob.
Definition: uint256.h:124
The block chain is a tree shaped structure starting with the genesis block at the root...
Definition: chain.h:137
Serialized script, used inside transaction inputs and outputs.
Definition: script.h:404
uint64_t GetBogoSize(const CScript &script_pub_key)
Definition: coinstats.cpp:20
CAmount unspendables_unclaimed_rewards
Definition: coinstats.h:56
bool index_used
Signals if the coinstatsindex was used to retrieve the statistics.
Definition: coinstats.h:45
CAmount block_prevout_spent_amount
Definition: coinstats.h:50
CAmount unspendables_scripts
Definition: coinstats.h:55
CAmount unspendables_bip30
Definition: coinstats.h:54