mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-11 01:26:10 +01:00
coinstats: Split node/coinstats.h to kernel/coinstats.h
Most of this commit is pure-move. After this change: - kernel/coinstats.h -> Contains declarations for: - enum class CoinStatsHashType - struct CCoinsStats - GetBogoSize(...) - TxOutSer(...) - ComputeUTXOStats(...) - node/coinstats.h -> Just GetUTXOStats, which will be removed as we change callers to directly use the hashing/indexing codepaths in future commits.
This commit is contained in:
parent
35f73ce4b2
commit
80970985c9
4 changed files with 82 additions and 55 deletions
|
@ -172,6 +172,7 @@ BITCOIN_CORE_H = \
|
|||
interfaces/node.h \
|
||||
interfaces/wallet.h \
|
||||
kernel/chainstatemanager_opts.h \
|
||||
kernel/coinstats.h \
|
||||
key.h \
|
||||
key_io.h \
|
||||
logging.h \
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include <node/coinstats.h>
|
||||
#include <kernel/coinstats.h>
|
||||
|
||||
#include <coins.h>
|
||||
#include <crypto/muhash.h>
|
||||
|
|
78
src/kernel/coinstats.h
Normal file
78
src/kernel/coinstats.h
Normal file
|
@ -0,0 +1,78 @@
|
|||
// Copyright (c) 2022 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_KERNEL_COINSTATS_H
|
||||
#define BITCOIN_KERNEL_COINSTATS_H
|
||||
|
||||
#include <chain.h>
|
||||
#include <coins.h>
|
||||
#include <consensus/amount.h>
|
||||
#include <streams.h>
|
||||
#include <uint256.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
|
||||
class CCoinsView;
|
||||
namespace node {
|
||||
class BlockManager;
|
||||
} // namespace node
|
||||
|
||||
namespace node {
|
||||
enum class CoinStatsHashType {
|
||||
HASH_SERIALIZED,
|
||||
MUHASH,
|
||||
NONE,
|
||||
};
|
||||
|
||||
struct CCoinsStats {
|
||||
int nHeight{0};
|
||||
uint256 hashBlock{};
|
||||
uint64_t nTransactions{0};
|
||||
uint64_t nTransactionOutputs{0};
|
||||
uint64_t nBogoSize{0};
|
||||
uint256 hashSerialized{};
|
||||
uint64_t nDiskSize{0};
|
||||
//! The total amount, or nullopt if an overflow occurred calculating it
|
||||
std::optional<CAmount> total_amount{0};
|
||||
|
||||
//! The number of coins contained.
|
||||
uint64_t coins_count{0};
|
||||
|
||||
//! Signals if the coinstatsindex was used to retrieve the statistics.
|
||||
bool index_used{false};
|
||||
|
||||
// Following values are only available from coinstats index
|
||||
|
||||
//! Total cumulative amount of block subsidies up to and including this block
|
||||
CAmount total_subsidy{0};
|
||||
//! Total cumulative amount of unspendable coins up to and including this block
|
||||
CAmount total_unspendable_amount{0};
|
||||
//! Total cumulative amount of prevouts spent up to and including this block
|
||||
CAmount total_prevout_spent_amount{0};
|
||||
//! Total cumulative amount of outputs created up to and including this block
|
||||
CAmount total_new_outputs_ex_coinbase_amount{0};
|
||||
//! Total cumulative amount of coinbase outputs up to and including this block
|
||||
CAmount total_coinbase_amount{0};
|
||||
//! The unspendable coinbase amount from the genesis block
|
||||
CAmount total_unspendables_genesis_block{0};
|
||||
//! The two unspendable coinbase outputs total amount caused by BIP30
|
||||
CAmount total_unspendables_bip30{0};
|
||||
//! Total cumulative amount of outputs sent to unspendable scripts (OP_RETURN for example) up to and including this block
|
||||
CAmount total_unspendables_scripts{0};
|
||||
//! Total cumulative amount of coins lost due to unclaimed miner rewards up to and including this block
|
||||
CAmount total_unspendables_unclaimed_rewards{0};
|
||||
|
||||
CCoinsStats() = default;
|
||||
CCoinsStats(int block_height, const uint256& block_hash);
|
||||
};
|
||||
|
||||
uint64_t GetBogoSize(const CScript& script_pub_key);
|
||||
|
||||
CDataStream TxOutSer(const COutPoint& outpoint, const Coin& coin);
|
||||
|
||||
std::optional<CCoinsStats> ComputeUTXOStats(CoinStatsHashType hash_type, CCoinsView* view, node::BlockManager& blockman, const std::function<void()>& interruption_point = {});
|
||||
} // namespace node
|
||||
|
||||
#endif // BITCOIN_KERNEL_COINSTATS_H
|
|
@ -6,6 +6,8 @@
|
|||
#ifndef BITCOIN_NODE_COINSTATS_H
|
||||
#define BITCOIN_NODE_COINSTATS_H
|
||||
|
||||
#include <kernel/coinstats.h>
|
||||
|
||||
#include <chain.h>
|
||||
#include <coins.h>
|
||||
#include <consensus/amount.h>
|
||||
|
@ -21,54 +23,6 @@ class BlockManager;
|
|||
} // namespace node
|
||||
|
||||
namespace node {
|
||||
enum class CoinStatsHashType {
|
||||
HASH_SERIALIZED,
|
||||
MUHASH,
|
||||
NONE,
|
||||
};
|
||||
|
||||
struct CCoinsStats {
|
||||
int nHeight{0};
|
||||
uint256 hashBlock{};
|
||||
uint64_t nTransactions{0};
|
||||
uint64_t nTransactionOutputs{0};
|
||||
uint64_t nBogoSize{0};
|
||||
uint256 hashSerialized{};
|
||||
uint64_t nDiskSize{0};
|
||||
//! The total amount, or nullopt if an overflow occurred calculating it
|
||||
std::optional<CAmount> total_amount{0};
|
||||
|
||||
//! The number of coins contained.
|
||||
uint64_t coins_count{0};
|
||||
|
||||
//! Signals if the coinstatsindex was used to retrieve the statistics.
|
||||
bool index_used{false};
|
||||
|
||||
// Following values are only available from coinstats index
|
||||
|
||||
//! Total cumulative amount of block subsidies up to and including this block
|
||||
CAmount total_subsidy{0};
|
||||
//! Total cumulative amount of unspendable coins up to and including this block
|
||||
CAmount total_unspendable_amount{0};
|
||||
//! Total cumulative amount of prevouts spent up to and including this block
|
||||
CAmount total_prevout_spent_amount{0};
|
||||
//! Total cumulative amount of outputs created up to and including this block
|
||||
CAmount total_new_outputs_ex_coinbase_amount{0};
|
||||
//! Total cumulative amount of coinbase outputs up to and including this block
|
||||
CAmount total_coinbase_amount{0};
|
||||
//! The unspendable coinbase amount from the genesis block
|
||||
CAmount total_unspendables_genesis_block{0};
|
||||
//! The two unspendable coinbase outputs total amount caused by BIP30
|
||||
CAmount total_unspendables_bip30{0};
|
||||
//! Total cumulative amount of outputs sent to unspendable scripts (OP_RETURN for example) up to and including this block
|
||||
CAmount total_unspendables_scripts{0};
|
||||
//! Total cumulative amount of coins lost due to unclaimed miner rewards up to and including this block
|
||||
CAmount total_unspendables_unclaimed_rewards{0};
|
||||
|
||||
CCoinsStats() = default;
|
||||
CCoinsStats(int block_height, const uint256& block_hash);
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate statistics about the unspent transaction output set
|
||||
*
|
||||
|
@ -79,12 +33,6 @@ std::optional<CCoinsStats> GetUTXOStats(CCoinsView* view, node::BlockManager& bl
|
|||
const std::function<void()>& interruption_point = {},
|
||||
const CBlockIndex* pindex = nullptr,
|
||||
bool index_requested = true);
|
||||
|
||||
uint64_t GetBogoSize(const CScript& script_pub_key);
|
||||
|
||||
CDataStream TxOutSer(const COutPoint& outpoint, const Coin& coin);
|
||||
|
||||
std::optional<CCoinsStats> ComputeUTXOStats(CoinStatsHashType hash_type, CCoinsView* view, BlockManager& blockman, const std::function<void()>& interruption_point = {});
|
||||
} // namespace node
|
||||
|
||||
#endif // BITCOIN_NODE_COINSTATS_H
|
||||
|
|
Loading…
Add table
Reference in a new issue