TARAXA
Loading...
Searching...
No Matches
rewards_stats.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "config/hardfork.hpp"
5#include "storage/storage.hpp"
6
7namespace taraxa::rewards {
13class Stats {
14 public:
15 Stats(uint32_t committee_size, const HardforksConfig& hardforks, std::shared_ptr<DbStorage> db,
16 std::function<uint64_t(EthBlockNumber)>&& dpos_eligible_total_vote_count, EthBlockNumber last_blk_num = 0);
17
23 std::vector<BlockStats> processStats(const PeriodData& current_blk, const std::vector<gas_t>& trxs_gas_used,
24 Batch& write_batch);
29 void clear(uint64_t current_period);
30
31 protected:
35 void recoverFromDb(EthBlockNumber last_blk_num);
39 uint32_t getCurrentDistributionFrequency(uint64_t current_period) const;
40 /*
41 * @brief gets all needed data and makes(processes) BlocksStats
42 * @param current_blk block to process
43 * @return block statistics needed for rewards distribution
44 */
45 BlockStats getBlockStats(const PeriodData& current_blk, const std::vector<gas_t>& trxs_fees);
49 void saveBlockStats(uint64_t number, const BlockStats& stats, Batch& write_batch);
50
51 const uint32_t kCommitteeSize;
53 std::shared_ptr<DbStorage> db_;
54 const std::function<uint64_t(EthBlockNumber)> dpos_eligible_total_vote_count_;
55 std::unordered_map<PbftPeriod, BlockStats> blocks_stats_;
56};
57} // namespace taraxa::rewards
Definition block_stats.hpp:14
class that is managing rewards stats processing and hardforks(intervals changes) So intermediate bloc...
Definition rewards_stats.hpp:13
std::vector< BlockStats > processStats(const PeriodData &current_blk, const std::vector< gas_t > &trxs_gas_used, Batch &write_batch)
processing passed block and returns stats that should be processed at this block
Definition rewards_stats.cpp:69
void saveBlockStats(uint64_t number, const BlockStats &stats, Batch &write_batch)
saves stats to database to not lose this data in case of node restart
Definition rewards_stats.cpp:30
std::unordered_map< PbftPeriod, BlockStats > blocks_stats_
Definition rewards_stats.hpp:55
uint32_t getCurrentDistributionFrequency(uint64_t current_period) const
returns rewards distribution frequency for specified period
Definition rewards_stats.cpp:36
void recoverFromDb(EthBlockNumber last_blk_num)
recover current interval stats from database
Definition rewards_stats.cpp:17
const uint32_t kCommitteeSize
Definition rewards_stats.hpp:51
std::shared_ptr< DbStorage > db_
Definition rewards_stats.hpp:53
void clear(uint64_t current_period)
called on start of new rewards interval. clears blocks_stats_ collection and removes all data saved i...
Definition rewards_stats.cpp:45
BlockStats getBlockStats(const PeriodData &current_blk, const std::vector< gas_t > &trxs_fees)
Definition rewards_stats.cpp:54
const std::function< uint64_t(EthBlockNumber)> dpos_eligible_total_vote_count_
Definition rewards_stats.hpp:54
const HardforksConfig kHardforksConfig
Definition rewards_stats.hpp:52
PeriodData class is for block execution, that includes PBFT block, certify votes, DAG blocks,...
Definition period_data.hpp:26
Definition block_stats.hpp:8
rocksdb::WriteBatch Batch
Definition storage.hpp:70
uint64_t EthBlockNumber
Definition types.hpp:24
Definition hardfork.hpp:114