TARAXA
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <json/json.h>
4
6
7namespace taraxa {
8
9struct 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
16struct 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
52Json::Value enc_json(const VrfParams& obj);
53void dec_json(const Json::Value& json, VrfParams& obj);
54Json::Value enc_json(const VdfParams& obj);
55void dec_json(const Json::Value& json, VdfParams& obj);
56
57Json::Value enc_json(const SortitionParams& obj);
58void dec_json(const Json::Value& json, SortitionParams& obj);
59
60Json::Value enc_json(const SortitionConfig& obj);
61void dec_json(const Json::Value& json, SortitionConfig& obj);
62
63} // namespace taraxa
Definition app.hpp:16
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:12
std::vector< byte > bytes
Definition types.hpp:53
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
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
friend std::ostream & operator<<(std::ostream &strm, const SortitionParams &config)
Definition config.hpp:29
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