Skip to content
Open
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,3 @@ cobertura.xml

# Build scripts artifacts
*.log
/dash-spv-ffi/peer_reputation.json
/dash-spv/peer_reputation.json
28 changes: 7 additions & 21 deletions dash-spv/src/network/manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ use crate::error::{NetworkError, NetworkResult, SpvError as Error};
use crate::network::addrv2::AddrV2Handler;
use crate::network::constants::*;
use crate::network::discovery::DnsDiscovery;
use crate::network::persist::PeerStore;
use crate::network::pool::PeerPool;
use crate::network::reputation::{
misbehavior_scores, positive_scores, PeerReputationManager, ReputationAware,
};
use crate::network::{HandshakeManager, NetworkManager, Peer};
use crate::storage::{PeerStorage, PersistentPeerStorage, PersistentStorage};
use crate::types::PeerInfo;

/// Peer network manager
Expand All @@ -39,7 +39,7 @@ pub struct PeerNetworkManager {
/// AddrV2 handler
addrv2_handler: Arc<AddrV2Handler>,
/// Peer persistence
peer_store: Arc<PeerStore>,
peer_store: Arc<PersistentPeerStorage>,
/// Peer reputation manager
reputation_manager: Arc<PeerReputationManager>,
/// Network type
Expand Down Expand Up @@ -80,23 +80,12 @@ impl PeerNetworkManager {

let discovery = DnsDiscovery::new().await?;
let data_dir = config.storage_path.clone().unwrap_or_else(|| PathBuf::from("."));
let peer_store = PeerStore::new(config.network, data_dir.clone());

let reputation_manager = Arc::new(PeerReputationManager::new());

// Load reputation data if available
let reputation_path = data_dir.join("peer_reputation.json");
let peer_store = PersistentPeerStorage::open(data_dir.clone()).await?;

// Ensure the directory exists before attempting to load
if let Some(parent_dir) = reputation_path.parent() {
if !parent_dir.exists() {
if let Err(e) = std::fs::create_dir_all(parent_dir) {
log::warn!("Failed to create directory for reputation data: {}", e);
}
}
}
let reputation_manager = Arc::new(PeerReputationManager::new());

if let Err(e) = reputation_manager.load_from_storage(&reputation_path).await {
if let Err(e) = reputation_manager.load_from_storage(&peer_store).await {
log::warn!("Failed to load peer reputation data: {}", e);
}

Expand Down Expand Up @@ -595,7 +584,6 @@ impl PeerNetworkManager {
let reputation_manager = self.reputation_manager.clone();
let peer_search_started = self.peer_search_started.clone();
let initial_peers = self.initial_peers.clone();
let data_dir = self.data_dir.clone();
let connected_peer_count = self.connected_peer_count.clone();

// Check if we're in exclusive mode (explicit flag or peers configured)
Expand Down Expand Up @@ -750,8 +738,7 @@ impl PeerNetworkManager {
}

// Save reputation data periodically
let storage_path = data_dir.join("peer_reputation.json");
if let Err(e) = reputation_manager.save_to_storage(&storage_path).await {
if let Err(e) = reputation_manager.save_to_storage(&*peer_store).await {
log::warn!("Failed to save reputation data: {}", e);
}
}
Expand Down Expand Up @@ -1025,8 +1012,7 @@ impl PeerNetworkManager {
}

// Save reputation data before shutdown
let reputation_path = self.data_dir.join("peer_reputation.json");
if let Err(e) = self.reputation_manager.save_to_storage(&reputation_path).await {
if let Err(e) = self.reputation_manager.save_to_storage(&*self.peer_store).await {
log::warn!("Failed to save reputation data on shutdown: {}", e);
}

Expand Down
1 change: 0 additions & 1 deletion dash-spv/src/network/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ pub mod discovery;
pub mod handshake;
pub mod manager;
pub mod peer;
pub mod persist;
pub mod pool;
pub mod reputation;

Expand Down
159 changes: 0 additions & 159 deletions dash-spv/src/network/persist.rs

This file was deleted.

Loading
Loading