mirror of
https://github.com/0glabs/0g-storage-node.git
synced 2024-11-20 15:05:19 +00:00
Refactor network peer db configs (#209)
This commit is contained in:
parent
1dd7bf7734
commit
9cde84ae15
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -5002,6 +5002,7 @@ dependencies = [
|
|||||||
"directory",
|
"directory",
|
||||||
"dirs 4.0.0",
|
"dirs 4.0.0",
|
||||||
"discv5",
|
"discv5",
|
||||||
|
"duration-str",
|
||||||
"error-chain",
|
"error-chain",
|
||||||
"eth2_ssz",
|
"eth2_ssz",
|
||||||
"eth2_ssz_derive",
|
"eth2_ssz_derive",
|
||||||
|
@ -40,6 +40,7 @@ unsigned-varint = { version = "=0.7.1", features = ["codec"] }
|
|||||||
if-addrs = "0.10.1"
|
if-addrs = "0.10.1"
|
||||||
slog = "2.7.0"
|
slog = "2.7.0"
|
||||||
igd = "0.12.1"
|
igd = "0.12.1"
|
||||||
|
duration-str = "0.5.1"
|
||||||
|
|
||||||
[dependencies.libp2p]
|
[dependencies.libp2p]
|
||||||
version = "0.45.1"
|
version = "0.45.1"
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use crate::peer_manager::peerdb::PeerDBConfig;
|
||||||
use crate::types::GossipKind;
|
use crate::types::GossipKind;
|
||||||
use crate::{Enr, PeerIdSerialized};
|
use crate::{Enr, PeerIdSerialized};
|
||||||
use directory::{
|
use directory::{
|
||||||
@ -126,6 +127,8 @@ pub struct Config {
|
|||||||
|
|
||||||
/// The id of the storage network.
|
/// The id of the storage network.
|
||||||
pub network_id: NetworkIdentity,
|
pub network_id: NetworkIdentity,
|
||||||
|
|
||||||
|
pub peer_db: PeerDBConfig,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Config {
|
impl Default for Config {
|
||||||
@ -204,6 +207,7 @@ impl Default for Config {
|
|||||||
topics: Vec::new(),
|
topics: Vec::new(),
|
||||||
metrics_enabled: false,
|
metrics_enabled: false,
|
||||||
network_id: Default::default(),
|
network_id: Default::default(),
|
||||||
|
peer_db: Default::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,15 @@ use crate::{
|
|||||||
multiaddr::{Multiaddr, Protocol},
|
multiaddr::{Multiaddr, Protocol},
|
||||||
Enr, Gossipsub, PeerId,
|
Enr, Gossipsub, PeerId,
|
||||||
};
|
};
|
||||||
|
use duration_str::deserialize_duration;
|
||||||
use peer_info::{ConnectionDirection, PeerConnectionStatus, PeerInfo};
|
use peer_info::{ConnectionDirection, PeerConnectionStatus, PeerInfo};
|
||||||
use rand::seq::SliceRandom;
|
use rand::seq::SliceRandom;
|
||||||
use score::{PeerAction, ReportSource, Score, ScoreState};
|
use score::{PeerAction, ReportSource, Score, ScoreState};
|
||||||
use std::cmp::Ordering;
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::{HashMap, HashSet};
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::net::{IpAddr, SocketAddr};
|
use std::net::{IpAddr, SocketAddr};
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
use std::{cmp::Ordering, time::Duration};
|
||||||
use sync_status::SyncStatus;
|
use sync_status::SyncStatus;
|
||||||
|
|
||||||
pub mod client;
|
pub mod client;
|
||||||
@ -17,21 +19,41 @@ pub mod peer_info;
|
|||||||
pub mod score;
|
pub mod score;
|
||||||
pub mod sync_status;
|
pub mod sync_status;
|
||||||
|
|
||||||
/// Max number of disconnected nodes to remember.
|
|
||||||
const MAX_DC_PEERS: usize = 500;
|
|
||||||
/// The maximum number of banned nodes to remember.
|
|
||||||
pub const MAX_BANNED_PEERS: usize = 1000;
|
|
||||||
/// We ban an IP if there are more than `BANNED_PEERS_PER_IP_THRESHOLD` banned peers with this IP.
|
/// We ban an IP if there are more than `BANNED_PEERS_PER_IP_THRESHOLD` banned peers with this IP.
|
||||||
const BANNED_PEERS_PER_IP_THRESHOLD: usize = 5;
|
const BANNED_PEERS_PER_IP_THRESHOLD: usize = 5;
|
||||||
/// Relative factor of peers that are allowed to have a negative gossipsub score without penalizing
|
|
||||||
/// them in lighthouse.
|
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
|
||||||
const ALLOWED_NEGATIVE_GOSSIPSUB_FACTOR: f32 = 0.1;
|
#[serde(default)]
|
||||||
/// The time we allow peers to be in the dialing state in our PeerDb before we revert them to a
|
pub struct PeerDBConfig {
|
||||||
/// disconnected state.
|
/// The maximum number of disconnected nodes to remember.
|
||||||
const DIAL_TIMEOUT: u64 = 15;
|
pub max_disconnected_peers: usize,
|
||||||
|
/// The maximum number of banned nodes to remember.
|
||||||
|
pub max_banned_peers: usize,
|
||||||
|
/// We ban an IP if there are more than `BANNED_PEERS_PER_IP_THRESHOLD` banned peers with this IP.
|
||||||
|
pub banned_peers_per_ip_threshold: usize,
|
||||||
|
/// Relative factor of peers that are allowed to have a negative gossipsub score without penalizing them in lighthouse.
|
||||||
|
pub allowed_negative_gossipsub_factor: f32,
|
||||||
|
/// The time we allow peers to be in the dialing state in our PeerDb before we revert them to a disconnected state.
|
||||||
|
#[serde(deserialize_with = "deserialize_duration")]
|
||||||
|
pub dail_timeout: Duration,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for PeerDBConfig {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
max_disconnected_peers: 500,
|
||||||
|
max_banned_peers: 1000,
|
||||||
|
banned_peers_per_ip_threshold: 5,
|
||||||
|
allowed_negative_gossipsub_factor: 0.1,
|
||||||
|
dail_timeout: Duration::from_secs(15),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Storage of known peers, their reputation and information
|
/// Storage of known peers, their reputation and information
|
||||||
pub struct PeerDB {
|
pub struct PeerDB {
|
||||||
|
config: PeerDBConfig,
|
||||||
|
|
||||||
/// The collection of known connected peers, their status and reputation
|
/// The collection of known connected peers, their status and reputation
|
||||||
peers: HashMap<PeerId, PeerInfo>,
|
peers: HashMap<PeerId, PeerInfo>,
|
||||||
/// The number of disconnected nodes in the database.
|
/// The number of disconnected nodes in the database.
|
||||||
@ -41,13 +63,14 @@ pub struct PeerDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl PeerDB {
|
impl PeerDB {
|
||||||
pub fn new(trusted_peers: Vec<PeerId>) -> Self {
|
pub fn new(config: PeerDBConfig, trusted_peers: Vec<PeerId>) -> Self {
|
||||||
// Initialize the peers hashmap with trusted peers
|
// Initialize the peers hashmap with trusted peers
|
||||||
let peers = trusted_peers
|
let peers = trusted_peers
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|peer_id| (peer_id, PeerInfo::trusted_peer_info()))
|
.map(|peer_id| (peer_id, PeerInfo::trusted_peer_info()))
|
||||||
.collect();
|
.collect();
|
||||||
Self {
|
Self {
|
||||||
|
config,
|
||||||
disconnected_peers: 0,
|
disconnected_peers: 0,
|
||||||
banned_peers_count: BannedPeersCount::default(),
|
banned_peers_count: BannedPeersCount::default(),
|
||||||
peers,
|
peers,
|
||||||
@ -316,9 +339,7 @@ impl PeerDB {
|
|||||||
.iter()
|
.iter()
|
||||||
.filter_map(|(peer_id, info)| {
|
.filter_map(|(peer_id, info)| {
|
||||||
if let PeerConnectionStatus::Dialing { since } = info.connection_status() {
|
if let PeerConnectionStatus::Dialing { since } = info.connection_status() {
|
||||||
if (*since) + std::time::Duration::from_secs(DIAL_TIMEOUT)
|
if (*since) + self.config.dail_timeout < std::time::Instant::now() {
|
||||||
< std::time::Instant::now()
|
|
||||||
{
|
|
||||||
return Some(*peer_id);
|
return Some(*peer_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -422,7 +443,7 @@ impl PeerDB {
|
|||||||
peers.sort_unstable_by(|(.., s1), (.., s2)| s2.partial_cmp(s1).unwrap_or(Ordering::Equal));
|
peers.sort_unstable_by(|(.., s1), (.., s2)| s2.partial_cmp(s1).unwrap_or(Ordering::Equal));
|
||||||
|
|
||||||
let mut to_ignore_negative_peers =
|
let mut to_ignore_negative_peers =
|
||||||
(target_peers as f32 * ALLOWED_NEGATIVE_GOSSIPSUB_FACTOR).ceil() as usize;
|
(target_peers as f32 * self.config.allowed_negative_gossipsub_factor).ceil() as usize;
|
||||||
|
|
||||||
for (peer_id, info, score) in peers {
|
for (peer_id, info, score) in peers {
|
||||||
let previous_state = info.score_state();
|
let previous_state = info.score_state();
|
||||||
@ -946,11 +967,11 @@ impl PeerDB {
|
|||||||
let excess_peers = self
|
let excess_peers = self
|
||||||
.banned_peers_count
|
.banned_peers_count
|
||||||
.banned_peers()
|
.banned_peers()
|
||||||
.saturating_sub(MAX_BANNED_PEERS);
|
.saturating_sub(self.config.max_banned_peers);
|
||||||
let mut unbanned_peers = Vec::with_capacity(excess_peers);
|
let mut unbanned_peers = Vec::with_capacity(excess_peers);
|
||||||
|
|
||||||
// Remove excess banned peers
|
// Remove excess banned peers
|
||||||
while self.banned_peers_count.banned_peers() > MAX_BANNED_PEERS {
|
while self.banned_peers_count.banned_peers() > self.config.max_banned_peers {
|
||||||
if let Some((to_drop, unbanned_ips)) = if let Some((id, info, _)) = self
|
if let Some((to_drop, unbanned_ips)) = if let Some((id, info, _)) = self
|
||||||
.peers
|
.peers
|
||||||
.iter()
|
.iter()
|
||||||
@ -982,7 +1003,7 @@ impl PeerDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Remove excess disconnected peers
|
// Remove excess disconnected peers
|
||||||
while self.disconnected_peers > MAX_DC_PEERS {
|
while self.disconnected_peers > self.config.max_disconnected_peers {
|
||||||
if let Some(to_drop) = self
|
if let Some(to_drop) = self
|
||||||
.peers
|
.peers
|
||||||
.iter()
|
.iter()
|
||||||
@ -1210,7 +1231,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_db() -> PeerDB {
|
fn get_db() -> PeerDB {
|
||||||
PeerDB::new(vec![])
|
PeerDB::new(PeerDBConfig::default(), vec![])
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1265,7 +1286,7 @@ mod tests {
|
|||||||
|
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
let mut peer_list = BTreeMap::new();
|
let mut peer_list = BTreeMap::new();
|
||||||
for id in 0..MAX_DC_PEERS + 1 {
|
for id in 0..pdb.config.max_disconnected_peers + 1 {
|
||||||
let new_peer = PeerId::random();
|
let new_peer = PeerId::random();
|
||||||
pdb.connect_ingoing(&new_peer, "/ip4/0.0.0.0".parse().unwrap(), None);
|
pdb.connect_ingoing(&new_peer, "/ip4/0.0.0.0".parse().unwrap(), None);
|
||||||
peer_list.insert(id, new_peer);
|
peer_list.insert(id, new_peer);
|
||||||
@ -1276,11 +1297,15 @@ mod tests {
|
|||||||
pdb.inject_disconnect(p);
|
pdb.inject_disconnect(p);
|
||||||
// Allow the timing to update correctly
|
// Allow the timing to update correctly
|
||||||
}
|
}
|
||||||
assert_eq!(pdb.disconnected_peers, MAX_DC_PEERS);
|
assert_eq!(pdb.disconnected_peers, pdb.config.max_disconnected_peers);
|
||||||
assert_eq!(pdb.disconnected_peers, pdb.disconnected_peers().count());
|
assert_eq!(pdb.disconnected_peers, pdb.disconnected_peers().count());
|
||||||
|
|
||||||
// Only the oldest peer should have been removed
|
// Only the oldest peer should have been removed
|
||||||
for (id, peer_id) in peer_list.iter().rev().take(MAX_DC_PEERS) {
|
for (id, peer_id) in peer_list
|
||||||
|
.iter()
|
||||||
|
.rev()
|
||||||
|
.take(pdb.config.max_disconnected_peers)
|
||||||
|
{
|
||||||
println!("Testing id {}", id);
|
println!("Testing id {}", id);
|
||||||
assert!(
|
assert!(
|
||||||
pdb.peer_info(peer_id).is_some(),
|
pdb.peer_info(peer_id).is_some(),
|
||||||
@ -1301,7 +1326,7 @@ mod tests {
|
|||||||
|
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
let mut peer_list = BTreeMap::new();
|
let mut peer_list = BTreeMap::new();
|
||||||
for id in 0..MAX_DC_PEERS + 20 {
|
for id in 0..pdb.config.max_disconnected_peers + 20 {
|
||||||
let new_peer = PeerId::random();
|
let new_peer = PeerId::random();
|
||||||
pdb.connect_ingoing(&new_peer, "/ip4/0.0.0.0".parse().unwrap(), None);
|
pdb.connect_ingoing(&new_peer, "/ip4/0.0.0.0".parse().unwrap(), None);
|
||||||
peer_list.insert(id, new_peer);
|
peer_list.insert(id, new_peer);
|
||||||
@ -1314,7 +1339,7 @@ mod tests {
|
|||||||
println!("{}", pdb.disconnected_peers);
|
println!("{}", pdb.disconnected_peers);
|
||||||
|
|
||||||
peer_list.clear();
|
peer_list.clear();
|
||||||
for id in 0..MAX_DC_PEERS + 20 {
|
for id in 0..pdb.config.max_disconnected_peers + 20 {
|
||||||
let new_peer = PeerId::random();
|
let new_peer = PeerId::random();
|
||||||
pdb.connect_ingoing(&new_peer, "/ip4/0.0.0.0".parse().unwrap(), None);
|
pdb.connect_ingoing(&new_peer, "/ip4/0.0.0.0".parse().unwrap(), None);
|
||||||
peer_list.insert(id, new_peer);
|
peer_list.insert(id, new_peer);
|
||||||
@ -1345,7 +1370,7 @@ mod tests {
|
|||||||
fn test_disconnected_are_bounded() {
|
fn test_disconnected_are_bounded() {
|
||||||
let mut pdb = get_db();
|
let mut pdb = get_db();
|
||||||
|
|
||||||
for _ in 0..MAX_DC_PEERS + 1 {
|
for _ in 0..pdb.config.max_disconnected_peers + 1 {
|
||||||
let p = PeerId::random();
|
let p = PeerId::random();
|
||||||
pdb.connect_ingoing(&p, "/ip4/0.0.0.0".parse().unwrap(), None);
|
pdb.connect_ingoing(&p, "/ip4/0.0.0.0".parse().unwrap(), None);
|
||||||
}
|
}
|
||||||
@ -1356,14 +1381,14 @@ mod tests {
|
|||||||
}
|
}
|
||||||
assert_eq!(pdb.disconnected_peers, pdb.disconnected_peers().count());
|
assert_eq!(pdb.disconnected_peers, pdb.disconnected_peers().count());
|
||||||
|
|
||||||
assert_eq!(pdb.disconnected_peers, MAX_DC_PEERS);
|
assert_eq!(pdb.disconnected_peers, pdb.config.max_disconnected_peers);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_banned_are_bounded() {
|
fn test_banned_are_bounded() {
|
||||||
let mut pdb = get_db();
|
let mut pdb = get_db();
|
||||||
|
|
||||||
for _ in 0..MAX_BANNED_PEERS + 1 {
|
for _ in 0..pdb.config.max_banned_peers + 1 {
|
||||||
let p = PeerId::random();
|
let p = PeerId::random();
|
||||||
pdb.connect_ingoing(&p, "/ip4/0.0.0.0".parse().unwrap(), None);
|
pdb.connect_ingoing(&p, "/ip4/0.0.0.0".parse().unwrap(), None);
|
||||||
}
|
}
|
||||||
@ -1374,7 +1399,10 @@ mod tests {
|
|||||||
pdb.inject_disconnect(&p);
|
pdb.inject_disconnect(&p);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_eq!(pdb.banned_peers_count.banned_peers(), MAX_BANNED_PEERS);
|
assert_eq!(
|
||||||
|
pdb.banned_peers_count.banned_peers(),
|
||||||
|
pdb.config.max_banned_peers
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1908,7 +1936,7 @@ mod tests {
|
|||||||
#[allow(clippy::float_cmp)]
|
#[allow(clippy::float_cmp)]
|
||||||
fn test_trusted_peers_score() {
|
fn test_trusted_peers_score() {
|
||||||
let trusted_peer = PeerId::random();
|
let trusted_peer = PeerId::random();
|
||||||
let mut pdb: PeerDB = PeerDB::new(vec![trusted_peer]);
|
let mut pdb: PeerDB = PeerDB::new(PeerDBConfig::default(), vec![trusted_peer]);
|
||||||
|
|
||||||
pdb.connect_ingoing(&trusted_peer, "/ip4/0.0.0.0".parse().unwrap(), None);
|
pdb.connect_ingoing(&trusted_peer, "/ip4/0.0.0.0".parse().unwrap(), None);
|
||||||
|
|
||||||
|
@ -84,6 +84,7 @@ impl<AppReqId: ReqId> Service<AppReqId> {
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|x| PeerId::from(x.clone()))
|
.map(|x| PeerId::from(x.clone()))
|
||||||
.collect(),
|
.collect(),
|
||||||
|
config.peer_db,
|
||||||
config.network_id.clone(),
|
config.network_id.clone(),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
//! A collection of variables that are accessible outside of the network thread itself.
|
//! A collection of variables that are accessible outside of the network thread itself.
|
||||||
use crate::peer_manager::peerdb::PeerDB;
|
use crate::peer_manager::peerdb::PeerDB;
|
||||||
|
use crate::peer_manager::peerdb::PeerDBConfig;
|
||||||
use crate::Client;
|
use crate::Client;
|
||||||
use crate::EnrExt;
|
use crate::EnrExt;
|
||||||
use crate::{Enr, GossipTopic, Multiaddr, PeerId};
|
use crate::{Enr, GossipTopic, Multiaddr, PeerId};
|
||||||
@ -34,6 +35,7 @@ impl NetworkGlobals {
|
|||||||
tcp_port: u16,
|
tcp_port: u16,
|
||||||
udp_port: u16,
|
udp_port: u16,
|
||||||
trusted_peers: Vec<PeerId>,
|
trusted_peers: Vec<PeerId>,
|
||||||
|
peer_db_config: PeerDBConfig,
|
||||||
network_id: NetworkIdentity,
|
network_id: NetworkIdentity,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
NetworkGlobals {
|
NetworkGlobals {
|
||||||
@ -42,7 +44,7 @@ impl NetworkGlobals {
|
|||||||
listen_multiaddrs: RwLock::new(Vec::new()),
|
listen_multiaddrs: RwLock::new(Vec::new()),
|
||||||
listen_port_tcp: AtomicU16::new(tcp_port),
|
listen_port_tcp: AtomicU16::new(tcp_port),
|
||||||
listen_port_udp: AtomicU16::new(udp_port),
|
listen_port_udp: AtomicU16::new(udp_port),
|
||||||
peers: RwLock::new(PeerDB::new(trusted_peers)),
|
peers: RwLock::new(PeerDB::new(peer_db_config, trusted_peers)),
|
||||||
gossipsub_subscriptions: RwLock::new(HashSet::new()),
|
gossipsub_subscriptions: RwLock::new(HashSet::new()),
|
||||||
network_id: RwLock::new(network_id),
|
network_id: RwLock::new(network_id),
|
||||||
}
|
}
|
||||||
@ -110,6 +112,13 @@ impl NetworkGlobals {
|
|||||||
let enr_key: discv5::enr::CombinedKey =
|
let enr_key: discv5::enr::CombinedKey =
|
||||||
discv5::enr::CombinedKey::from_libp2p(&keypair).unwrap();
|
discv5::enr::CombinedKey::from_libp2p(&keypair).unwrap();
|
||||||
let enr = discv5::enr::EnrBuilder::new("v4").build(&enr_key).unwrap();
|
let enr = discv5::enr::EnrBuilder::new("v4").build(&enr_key).unwrap();
|
||||||
NetworkGlobals::new(enr, 9000, 9000, vec![], Default::default())
|
NetworkGlobals::new(
|
||||||
|
enr,
|
||||||
|
9000,
|
||||||
|
9000,
|
||||||
|
vec![],
|
||||||
|
Default::default(),
|
||||||
|
Default::default(),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ use common::{
|
|||||||
swarm,
|
swarm,
|
||||||
};
|
};
|
||||||
use network::{
|
use network::{
|
||||||
peer_manager::{self, config::Config, PeerManagerEvent},
|
peer_manager::{config::Config, peerdb::PeerDBConfig, PeerManagerEvent},
|
||||||
NetworkGlobals, PeerAction, PeerInfo, PeerManager, ReportSource,
|
NetworkGlobals, PeerAction, PeerInfo, PeerManager, ReportSource,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ async fn banned_peers_consistency() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let excess_banned_peers = 15;
|
let excess_banned_peers = 15;
|
||||||
let peers_to_ban = peer_manager::peerdb::MAX_BANNED_PEERS + excess_banned_peers;
|
let peers_to_ban = PeerDBConfig::default().max_banned_peers + excess_banned_peers;
|
||||||
|
|
||||||
// Build all the dummy peers needed.
|
// Build all the dummy peers needed.
|
||||||
let (mut swarm_pool, peers) = {
|
let (mut swarm_pool, peers) = {
|
||||||
|
@ -948,8 +948,14 @@ mod tests {
|
|||||||
let keypair = Keypair::generate_secp256k1();
|
let keypair = Keypair::generate_secp256k1();
|
||||||
let enr_key = CombinedKey::from_libp2p(&keypair).unwrap();
|
let enr_key = CombinedKey::from_libp2p(&keypair).unwrap();
|
||||||
let enr = EnrBuilder::new("v4").build(&enr_key).unwrap();
|
let enr = EnrBuilder::new("v4").build(&enr_key).unwrap();
|
||||||
let network_globals =
|
let network_globals = NetworkGlobals::new(
|
||||||
NetworkGlobals::new(enr, 30000, 30000, vec![], Default::default());
|
enr,
|
||||||
|
30000,
|
||||||
|
30000,
|
||||||
|
vec![],
|
||||||
|
Default::default(),
|
||||||
|
Default::default(),
|
||||||
|
);
|
||||||
|
|
||||||
let listen_addr: Multiaddr = "/ip4/127.0.0.1/tcp/30000".parse().unwrap();
|
let listen_addr: Multiaddr = "/ip4/127.0.0.1/tcp/30000".parse().unwrap();
|
||||||
network_globals.listen_multiaddrs.write().push(listen_addr);
|
network_globals.listen_multiaddrs.write().push(listen_addr);
|
||||||
|
@ -96,6 +96,8 @@ impl ZgsConfig {
|
|||||||
network_config.target_peers = self.network_target_peers;
|
network_config.target_peers = self.network_target_peers;
|
||||||
network_config.private = self.network_private;
|
network_config.private = self.network_private;
|
||||||
|
|
||||||
|
network_config.peer_db = self.network_peer_db;
|
||||||
|
|
||||||
Ok(network_config)
|
Ok(network_config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +91,9 @@ build_config! {
|
|||||||
pub struct ZgsConfig {
|
pub struct ZgsConfig {
|
||||||
pub raw_conf: RawConfiguration,
|
pub raw_conf: RawConfiguration,
|
||||||
|
|
||||||
|
/// Network peer db config, configured by [network_peer_db] section by `config` crate.
|
||||||
|
pub network_peer_db: network::peer_manager::peerdb::PeerDBConfig,
|
||||||
|
|
||||||
// router config, configured by [router] section by `config` crate.
|
// router config, configured by [router] section by `config` crate.
|
||||||
pub router: router::Config,
|
pub router: router::Config,
|
||||||
|
|
||||||
|
@ -218,6 +218,18 @@ reward_contract_address = "0x0496D0817BD8519e0de4894Dc379D35c35275609"
|
|||||||
#
|
#
|
||||||
# prune_batch_wait_time_ms = 1000
|
# prune_batch_wait_time_ms = 1000
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
### Network Peer DB Config Options ###
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
# [network_peer_db]
|
||||||
|
|
||||||
|
# The maximum number of disconnected nodes to remember.
|
||||||
|
# max_disconnected_peers = 500
|
||||||
|
|
||||||
|
# The maximum number of banned nodes to remember.
|
||||||
|
# max_banned_peers = 1000
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
### Router Config Options ###
|
### Router Config Options ###
|
||||||
#######################################################################
|
#######################################################################
|
||||||
|
@ -230,6 +230,18 @@ reward_contract_address = "0x51998C4d486F406a788B766d93510980ae1f9360"
|
|||||||
#
|
#
|
||||||
# prune_batch_wait_time_ms = 1000
|
# prune_batch_wait_time_ms = 1000
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
### Network Peer DB Config Options ###
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
# [network_peer_db]
|
||||||
|
|
||||||
|
# The maximum number of disconnected nodes to remember.
|
||||||
|
# max_disconnected_peers = 500
|
||||||
|
|
||||||
|
# The maximum number of banned nodes to remember.
|
||||||
|
# max_banned_peers = 1000
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
### Router Config Options ###
|
### Router Config Options ###
|
||||||
#######################################################################
|
#######################################################################
|
||||||
|
@ -232,6 +232,18 @@
|
|||||||
#
|
#
|
||||||
# prune_batch_wait_time_ms = 1000
|
# prune_batch_wait_time_ms = 1000
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
### Network Peer DB Config Options ###
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
# [network_peer_db]
|
||||||
|
|
||||||
|
# The maximum number of disconnected nodes to remember.
|
||||||
|
# max_disconnected_peers = 500
|
||||||
|
|
||||||
|
# The maximum number of banned nodes to remember.
|
||||||
|
# max_banned_peers = 1000
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
### Router Config Options ###
|
### Router Config Options ###
|
||||||
#######################################################################
|
#######################################################################
|
||||||
|
Loading…
Reference in New Issue
Block a user