TARAXA
network.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <json/json.h>
4 
5 #include <string>
6 
7 #include "common/types.hpp"
8 
9 namespace taraxa {
10 
12  std::string address;
13  uint16_t listen_port = 0;
14  uint16_t polling_interval_ms = 1000;
15 };
16 
18  std::optional<uint16_t> http_port;
19  std::optional<uint16_t> ws_port;
20  boost::asio::ip::address address;
21 
22  // Number of threads dedicated to the rpc calls processing, default = 5
23  uint16_t threads_num{5};
24 
25  void validate() const;
26 };
27 
28 void dec_json(const Json::Value &json, ConnectionConfig &config);
29 
30 struct NodeConfig {
31  std::string id;
32  std::string ip;
33  uint16_t port = 0;
34 };
35 
37  // How many periods(of votes) into the future compared to the current state we accept
39  // How many rounds(of votes) into the future compared to the current state we accept
41  // How many steps(of votes) into the future compared to the current state we accept
43 
44  // Time period for collecting packets stats
45  std::chrono::milliseconds packets_stats_time_period_ms{60000};
46  // Log packets stats flag
47  bool log_packets_stats = false;
48  // Peer's max allowed packets processing time during packets_stats_time_period_ms
49  std::chrono::microseconds peer_max_packets_processing_time_us{0};
50  // Queue size limit when we start dropping packets from peers if they exceed peer_max_packets_processing_time_us
52 
53  // Max packets queue size, 0 means unlimited
55 
56  // Time of allowed queue over the limit
57  std::chrono::milliseconds queue_limit_time{5000};
58 
59  // Time period between disconnecting peers
60  std::chrono::milliseconds peer_disconnect_interval{5000};
61 
62  void validate(uint32_t delegation_delay) const;
63 };
64 
65 struct NetworkConfig {
66  static constexpr uint16_t kBlacklistTimeoutDefaultInSeconds = 600;
67 
68  std::string json_file_name;
69  std::string public_ip;
70  std::string listen_ip = "127.0.0.1";
71  uint16_t listen_port = 0;
72  std::vector<NodeConfig> boot_nodes;
73  uint16_t ideal_peer_count = 10;
74  uint16_t max_peer_count = 50;
75  uint16_t transaction_interval_ms = 100;
76  uint16_t sync_level_size = 10;
77  uint16_t num_threads = std::max(uint(1), uint(std::thread::hardware_concurrency() / 2));
80  bool disable_peer_blacklist = false;
81  uint16_t deep_syncing_threshold = 10;
83 
84  std::optional<ConnectionConfig> rpc;
85  std::optional<ConnectionConfig> graphql;
86  std::optional<PrometheusConfig> prometheus;
87 
88  void validate(uint32_t delegation_delay) const;
89 };
90 
91 void dec_json(const Json::Value &json, NetworkConfig &network);
92 
93 } // namespace taraxa
Definition: config.hpp:8
uint16_t port
Definition: network.hpp:33
uint32_t PbftStep
Definition: types.hpp:26
std::string id
Definition: network.hpp:31
void dec_json(Json::Value const &json, DBConfig &db_config)
Definition: config.cpp:13
uint32_t PbftRound
Definition: types.hpp:25
EthBlockNumber PbftPeriod
Definition: types.hpp:24
uint16_t polling_interval_ms
Definition: network.hpp:14
std::string address
Definition: network.hpp:12
uint16_t listen_port
Definition: network.hpp:13
std::string ip
Definition: network.hpp:32
Definition: network.hpp:30
Definition: network.hpp:11
Definition: network.hpp:17
boost::asio::ip::address address
Definition: network.hpp:20
uint16_t threads_num
Definition: network.hpp:23
void validate() const
Definition: network.cpp:13
std::optional< uint16_t > http_port
Definition: network.hpp:18
std::optional< uint16_t > ws_port
Definition: network.hpp:19
Definition: network.hpp:36
std::chrono::milliseconds queue_limit_time
Definition: network.hpp:57
std::chrono::milliseconds packets_stats_time_period_ms
Definition: network.hpp:45
std::chrono::milliseconds peer_disconnect_interval
Definition: network.hpp:60
uint64_t peer_max_packets_queue_size_limit
Definition: network.hpp:51
uint64_t max_packets_queue_size
Definition: network.hpp:54
bool log_packets_stats
Definition: network.hpp:47
PbftRound vote_accepting_rounds
Definition: network.hpp:40
PbftPeriod vote_accepting_periods
Definition: network.hpp:38
PbftStep vote_accepting_steps
Definition: network.hpp:42
std::chrono::microseconds peer_max_packets_processing_time_us
Definition: network.hpp:49
void validate(uint32_t delegation_delay) const
Definition: network.cpp:42
Definition: network.hpp:65
std::optional< ConnectionConfig > rpc
Definition: network.hpp:84
std::optional< PrometheusConfig > prometheus
Definition: network.hpp:86
uint16_t ideal_peer_count
Definition: network.hpp:73
uint16_t listen_port
Definition: network.hpp:71
uint16_t peer_blacklist_timeout
Definition: network.hpp:79
DdosProtectionConfig ddos_protection
Definition: network.hpp:82
uint16_t max_peer_count
Definition: network.hpp:74
static constexpr uint16_t kBlacklistTimeoutDefaultInSeconds
Definition: network.hpp:66
std::vector< NodeConfig > boot_nodes
Definition: network.hpp:72
uint16_t deep_syncing_threshold
Definition: network.hpp:81
uint16_t packets_processing_threads
Definition: network.hpp:78
std::string listen_ip
Definition: network.hpp:70
std::string json_file_name
Definition: network.hpp:68
uint16_t transaction_interval_ms
Definition: network.hpp:75
void validate(uint32_t delegation_delay) const
Definition: network.cpp:80
std::string public_ip
Definition: network.hpp:69
uint16_t sync_level_size
Definition: network.hpp:76
std::optional< ConnectionConfig > graphql
Definition: network.hpp:85
bool disable_peer_blacklist
Definition: network.hpp:80
uint16_t num_threads
Definition: network.hpp:77