diff --git a/p2p/cuprate-p2p/Cargo.toml b/p2p/cuprate-p2p/Cargo.toml index 17a68525..e0ed1c28 100644 --- a/p2p/cuprate-p2p/Cargo.toml +++ b/p2p/cuprate-p2p/Cargo.toml @@ -16,7 +16,7 @@ cuprate-helper = { path = "../../helper", features = ["asynch"] } monero-serai = { workspace = true, features = ["std"] } tower = { workspace = true } -tokio = { workspace = true, features = ["full"] } +tokio = { workspace = true, features = ["rt"] } rayon = { workspace = true } tokio-util = { workspace = true } tokio-stream = { workspace = true, features = ["sync", "time"] } diff --git a/p2p/cuprate-p2p/src/peer_set.rs b/p2p/cuprate-p2p/src/client_pool.rs similarity index 100% rename from p2p/cuprate-p2p/src/peer_set.rs rename to p2p/cuprate-p2p/src/client_pool.rs diff --git a/p2p/cuprate-p2p/src/peer_set/disconnect_monitor.rs b/p2p/cuprate-p2p/src/client_pool/disconnect_monitor.rs similarity index 100% rename from p2p/cuprate-p2p/src/peer_set/disconnect_monitor.rs rename to p2p/cuprate-p2p/src/client_pool/disconnect_monitor.rs diff --git a/p2p/cuprate-p2p/src/peer_set/drop_guard_client.rs b/p2p/cuprate-p2p/src/client_pool/drop_guard_client.rs similarity index 95% rename from p2p/cuprate-p2p/src/peer_set/drop_guard_client.rs rename to p2p/cuprate-p2p/src/client_pool/drop_guard_client.rs index 771e6301..8342e073 100644 --- a/p2p/cuprate-p2p/src/peer_set/drop_guard_client.rs +++ b/p2p/cuprate-p2p/src/client_pool/drop_guard_client.rs @@ -6,7 +6,7 @@ use std::{ use monero_p2p::NetworkZone; -use crate::peer_set::ClientPool; +use crate::client_pool::ClientPool; pub struct ClientPoolGuard<N: NetworkZone> { pub(super) pool: Arc<ClientPool<N>>, diff --git a/p2p/cuprate-p2p/src/config.rs b/p2p/cuprate-p2p/src/config.rs index 39ecc0ad..1dc95416 100644 --- a/p2p/cuprate-p2p/src/config.rs +++ b/p2p/cuprate-p2p/src/config.rs @@ -1,15 +1,6 @@ -use cuprate_helper::network::Network; -use monero_address_book::AddressBookConfig; - /// P2P config. #[derive(Clone, Debug)] pub struct P2PConfig { - pub p2p_port: u16, - - pub rpc_port: u16, - - pub network: Network, - /// The number of outbound connections to make and try keep. pub outbound_connections: usize, /// The absolute maximum number of held outbound connections. @@ -18,21 +9,10 @@ pub struct P2PConfig { /// to get peers from that node, these connections are not held for long though. pub max_outbound_connections: usize, - /// The number of anchor connections to make. - /// - /// An anchor connection is a connection which was held before last shutdown, anchor connections - /// help to prevent certain attacks. - pub anchor_connections: usize, - /// The percent of outbound peers that should be gray aka never connected to before. /// /// Only values 0..=1 are valid. pub gray_peers_percent: f64, - - /// The maximum amount of inbound peers - pub max_inbound_connections: usize, - - pub address_book_config: AddressBookConfig, } impl P2PConfig { diff --git a/p2p/cuprate-p2p/src/connection_maintainer.rs b/p2p/cuprate-p2p/src/connection_maintainer.rs index 3522495b..78568650 100644 --- a/p2p/cuprate-p2p/src/connection_maintainer.rs +++ b/p2p/cuprate-p2p/src/connection_maintainer.rs @@ -21,11 +21,11 @@ use monero_p2p::{ }; use crate::{ + client_pool::ClientPool, config::P2PConfig, constants::{ HANDSHAKE_TIMEOUT, MAX_SEED_CONNECTIONS, OUTBOUND_CONNECTION_TIMEOUT, PEER_FIND_TIMEOUT, }, - peer_set::ClientPool, }; enum OutboundConnectorError { @@ -47,9 +47,9 @@ pub struct MakeConnectionRequest { /// /// This handles maintaining a minimum number of connections and making extra connections when needed, upto a maximum. pub struct OutboundConnectionKeeper<N: NetworkZone, A, C> { - /// TODO. + /// The pool of currently connected peers. pub client_pool: Arc<ClientPool<N>>, - /// The channel that tells us to make new outbound connections + /// The channel that tells us to make new _extra_ outbound connections. pub make_connection_rx: mpsc::Receiver<MakeConnectionRequest>, /// The address book service pub address_book_svc: A, @@ -58,7 +58,7 @@ pub struct OutboundConnectionKeeper<N: NetworkZone, A, C> { /// A semaphore to keep the amount of outbound peers constant. pub outbound_semaphore: Arc<Semaphore>, /// The amount of peers we connected to because we needed more peers. If the `outbound_semaphore` - /// is full, and we need to connect to more peers for blocks ro because not enough peers are ready + /// is full, and we need to connect to more peers for blocks or because not enough peers are ready /// we add a permit to the semaphore and keep track here, upto a value in config. pub extra_peers: usize, /// The p2p config. diff --git a/p2p/cuprate-p2p/src/constants.rs b/p2p/cuprate-p2p/src/constants.rs index 82acefbc..8a5fe397 100644 --- a/p2p/cuprate-p2p/src/constants.rs +++ b/p2p/cuprate-p2p/src/constants.rs @@ -2,44 +2,8 @@ use std::time::Duration; pub(crate) const HANDSHAKE_TIMEOUT: Duration = Duration::from_secs(30); -pub(crate) const CHAIN_REQUEST_TIMEOUT: Duration = Duration::from_secs(10); - -pub(crate) const BLOCK_REQUEST_TIMEOUT: Duration = Duration::from_secs(20); - -pub(crate) const BLOCK_REQUEST_TIMEOUT_INTERVAL: Duration = Duration::from_secs(5); - -pub(crate) const SEED_CONNECTION_RETRY_TIMEOUT: Duration = Duration::from_secs(60); - -pub(crate) const CONCURRENT_PEER_LIST_REQUESTS: usize = 3; - pub(crate) const MAX_SEED_CONNECTIONS: usize = 3; pub(crate) const PEER_FIND_TIMEOUT: Duration = Duration::from_secs(30); -pub(crate) const OUTBOUND_CONNECTION_TIMEOUT: Duration = Duration::from_secs(10); - -/// The duration of a short ban (1 hour). -pub(crate) const SHORT_BAN: Duration = Duration::from_secs(60 * 60); - -/// The duration of a medium ban (24 hours). -pub(crate) const MEDIUM_BAN: Duration = Duration::from_secs(60 * 60 * 24); - -pub(crate) const DIFFUSION_FLUSH_AVERAGE_SECONDS_INBOUND: Duration = Duration::from_secs(5); - -pub(crate) const DIFFUSION_FLUSH_AVERAGE_SECONDS_OUTBOUND: Duration = Duration::from_millis(2500); - -pub(crate) const SOFT_TX_MESSAGE_SIZE_SIZE_LIMIT: usize = 1024 * 1024 * 60; - -/// The limit on the amount of transactions kept in the broadcast channel. -/// -/// A transaction is kept in the broadcast channel until all nodes have broadcast it. -/// -/// Because of internal implementation details this limit will ALWAYS be hit i.e. a tx will stay in the -/// channel until [`MAX_TXS_IN_BROADCAST_CHANNEL`] more txs are added. -pub(crate) const MAX_TXS_IN_BROADCAST_CHANNEL: usize = 50; - -pub(crate) const INCOMING_BLOCKS_CACHE_SIZE: usize = 10 * 1024 * 1024; - -pub(crate) const NUMBER_OF_BLOCKS_TO_REQUEST: usize = 100; - -pub(crate) const CHAIN_REQUESTS_TO_SEND: usize = 2; +pub(crate) const OUTBOUND_CONNECTION_TIMEOUT: Duration = Duration::from_secs(5); diff --git a/p2p/cuprate-p2p/src/lib.rs b/p2p/cuprate-p2p/src/lib.rs index 024b8788..b9492f9e 100644 --- a/p2p/cuprate-p2p/src/lib.rs +++ b/p2p/cuprate-p2p/src/lib.rs @@ -10,9 +10,9 @@ #![allow(dead_code)] +mod client_pool; pub mod config; pub mod connection_maintainer; mod constants; -mod peer_set; pub use config::P2PConfig;