TARAXA
config.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <json/json.h>
4 
5 #include "common/constants.hpp"
6 
7 namespace taraxa {
8 
9 struct VrfParams {
10  uint16_t threshold_upper = 0; // upper bound of selection
11  VrfParams& operator+=(int32_t change);
12 
13  static constexpr uint16_t kThresholdUpperMinValue = 0x50;
14 };
15 
16 struct VdfParams {
17  uint16_t difficulty_min = 0;
18  uint16_t difficulty_max = 1;
19  uint16_t difficulty_stale = 0;
20  uint16_t lambda_bound = 1500; // lambda upper bound, should be constant
21 };
22 
24  SortitionParams() = default;
25  SortitionParams(uint16_t threshold_upper, uint16_t min, uint16_t max, uint16_t stale, uint16_t lambda_max_bound)
26  : vrf{threshold_upper}, vdf{min, max, stale, lambda_max_bound} {}
28 
29  friend std::ostream& operator<<(std::ostream& strm, const SortitionParams& config) {
30  strm << " [VDF config] " << std::endl;
31  strm << " vrf upper threshold: " << config.vrf.threshold_upper << std::endl;
32  strm << " difficulty minimum: " << config.vdf.difficulty_min << std::endl;
33  strm << " difficulty maximum: " << config.vdf.difficulty_max << std::endl;
34  strm << " difficulty stale: " << config.vdf.difficulty_stale << std::endl;
35  strm << " lambda bound: " << config.vdf.lambda_bound << std::endl;
36  return strm;
37  }
40 };
41 
43  uint16_t changes_count_for_average = 10; // intervals
44  std::pair<uint16_t, uint16_t> dag_efficiency_targets = {69 * kOnePercent, 71 * kOnePercent};
45  uint16_t changing_interval = 200; // non empty pbft blocks
46  uint16_t computation_interval = 50; // non empty pbft blocks
47 
48  uint16_t targetEfficiency() const { return (dag_efficiency_targets.first + dag_efficiency_targets.second) / 2; }
49  bytes rlp() const;
50 };
51 
52 Json::Value enc_json(const VrfParams& obj);
53 void dec_json(const Json::Value& json, VrfParams& obj);
54 Json::Value enc_json(const VdfParams& obj);
55 void dec_json(const Json::Value& json, VdfParams& obj);
56 
57 Json::Value enc_json(const SortitionParams& obj);
58 void dec_json(const Json::Value& json, SortitionParams& obj);
59 
60 Json::Value enc_json(const SortitionConfig& obj);
61 void dec_json(const Json::Value& json, SortitionConfig& obj);
62 
63 } // namespace taraxa
std::vector<::byte > bytes
Definition: Common.h:46
Definition: config.hpp:8
uint16_t difficulty_max
Definition: config.hpp:18
Json::Value enc_json(const DagBlockProposerConfig &obj)
Definition: dag_config.cpp:16
void dec_json(Json::Value const &json, DBConfig &db_config)
Definition: config.cpp:13
uint16_t difficulty_stale
Definition: config.hpp:19
uint16_t lambda_bound
Definition: config.hpp:20
constexpr uint16_t kOnePercent
Definition: constants.hpp:17
uint16_t difficulty_min
Definition: config.hpp:17
Definition: config.hpp:16
Definition: config.hpp:42
uint16_t targetEfficiency() const
Definition: config.hpp:48
std::pair< uint16_t, uint16_t > dag_efficiency_targets
Definition: config.hpp:44
uint16_t computation_interval
Definition: config.hpp:46
bytes rlp() const
Definition: config.cpp:91
uint16_t changing_interval
Definition: config.hpp:45
uint16_t changes_count_for_average
Definition: config.hpp:43
Definition: config.hpp:23
friend std::ostream & operator<<(std::ostream &strm, const SortitionParams &config)
Definition: config.hpp:29
SortitionParams(const VrfParams &vrf, const VdfParams &vdf)
Definition: config.hpp:27
VdfParams vdf
Definition: config.hpp:39
SortitionParams(uint16_t threshold_upper, uint16_t min, uint16_t max, uint16_t stale, uint16_t lambda_max_bound)
Definition: config.hpp:25
VrfParams vrf
Definition: config.hpp:38
Definition: config.hpp:9
uint16_t threshold_upper
Definition: config.hpp:10
static constexpr uint16_t kThresholdUpperMinValue
Definition: config.hpp:13
VrfParams & operator+=(int32_t change)
Definition: config.cpp:17