TARAXA
Loading...
Searching...
No Matches
sortition_params_manager.hpp
Go to the documentation of this file.
1#pragma once
2
4#include "storage/storage.hpp"
5#include "vdf/config.hpp"
6
7namespace taraxa {
8
9using EfficienciesMap = std::map<uint16_t, int32_t>;
10
28
37 public:
38 SortitionParamsManager(SortitionConfig sort_conf, std::shared_ptr<DbStorage> db);
39 SortitionParams getSortitionParams(std::optional<PbftPeriod> for_period = {}) const;
40
48 uint16_t calculateDagEfficiency(const PeriodData& block) const;
49
58 void pbftBlockPushed(const PeriodData& block, Batch& batch, PbftPeriod non_empty_pbft_chain_size);
59
64 uint16_t averageDagEfficiency();
65
70 const std::deque<SortitionParamsChange>& getParamsChanges() const { return params_changes_; }
71
72 protected:
74 std::shared_ptr<DbStorage> db_;
75 std::deque<uint16_t> dag_efficiencies_;
77 std::deque<SortitionParamsChange> params_changes_;
79 EfficienciesMap getEfficienciesToUpperRange(uint16_t efficiency, int32_t threshold) const;
80 int32_t getNewUpperRange(uint16_t efficiency) const;
81 void cleanup();
82
84};
87} // namespace taraxa
Definition RLP.h:56
std::deque< uint16_t > dag_efficiencies_
Definition sortition_params_manager.hpp:75
SortitionParams getSortitionParams(std::optional< PbftPeriod > for_period={}) const
Definition sortition_params_manager.cpp:66
SortitionParamsChange calculateChange(PbftPeriod period)
Definition sortition_params_manager.cpp:221
uint16_t calculateDagEfficiency(const PeriodData &block) const
Definition sortition_params_manager.cpp:79
VrfParams vrf_params
Definition sortition_params_manager.hpp:20
int32_t getNewUpperRange(uint16_t efficiency) const
Definition sortition_params_manager.cpp:179
void cleanup()
Definition sortition_params_manager.cpp:96
std::shared_ptr< DbStorage > db_
Definition sortition_params_manager.hpp:74
std::deque< SortitionParamsChange > params_changes_
Definition sortition_params_manager.hpp:77
uint16_t interval_efficiency
Definition sortition_params_manager.hpp:21
void pbftBlockPushed(const PeriodData &block, Batch &batch, PbftPeriod non_empty_pbft_chain_size)
Definition sortition_params_manager.cpp:103
bytes rlp() const
Definition sortition_params_manager.cpp:8
uint32_t ignored_efficiency_counter_
Definition sortition_params_manager.hpp:76
PbftPeriod period
Definition sortition_params_manager.hpp:19
static SortitionParamsChange from_rlp(const dev::RLP &rlp)
Definition sortition_params_manager.cpp:18
SortitionConfig config_
Definition sortition_params_manager.hpp:73
uint16_t averageDagEfficiency()
Definition sortition_params_manager.cpp:91
logger::Logger logger_
Definition sortition_params_manager.hpp:83
EfficienciesMap getEfficienciesToUpperRange(uint16_t efficiency, int32_t threshold) const
Definition sortition_params_manager.cpp:163
const std::deque< SortitionParamsChange > & getParamsChanges() const
Definition sortition_params_manager.hpp:70
SortitionParamsManager class calculates DAG efficiency and makes VDF difficulty adjustments.
Definition sortition_params_manager.hpp:36
Changing vrf params for DAG blocks generation.
Definition sortition_params_manager.hpp:18
PeriodData class is for block execution, that includes PBFT block, certify votes, DAG blocks,...
Definition period_data.hpp:26
std::shared_ptr< spdlog::logger > Logger
Definition logging.hpp:12
Definition app.hpp:16
rocksdb::WriteBatch Batch
Definition storage.hpp:70
std::vector< byte > bytes
Definition types.hpp:53
EthBlockNumber PbftPeriod
Definition types.hpp:25
std::map< uint16_t, int32_t > EfficienciesMap
Definition sortition_params_manager.hpp:9
Definition config.hpp:42
Definition config.hpp:23
Definition config.hpp:9