1pub mod capacity_signaling;
10pub mod core_engine;
11pub mod telemetry;
12pub mod trust_weighted_dht;
13pub mod trust_weighted_kademlia;
14
15pub use trust_weighted_dht::{
17 Contact, Dht, Key, Outcome, PutPolicy, PutReceipt, eigen_trust_epoch, record_interaction,
18};
19
20pub use trust_weighted_dht::PeerId;
22
23pub use trust_weighted_kademlia::TrustWeightedKademlia;
25
26pub use capacity_signaling::{CapacityGossip, CapacityHistogram, CapacityManager, CapacityStats};
28
29pub use telemetry::{DhtTelemetry, OperationStats, OperationType, TelemetryStats};
31
32pub use replication_grace_period::{
34 EndpointRegistration, FailedNodeInfo, NodeFailureReason, ReplicationError,
35 ReplicationGracePeriodConfig,
36};
37
38pub use node_failure_tracker::{DefaultNodeFailureTracker, DhtClient, NodeFailureTracker};
40
41pub use core_engine::{
43 DhtCoreEngine, DhtKey, DhtRequestWrapper, DhtResponseWrapper, NodeCapacity,
44 NodeId as DhtNodeId, NodeInfo,
45};
46
47pub type DHT = DhtCoreEngine;
49pub type DHTNode = NodeInfo;
50pub type SerializableDHTNode = NodeInfo;
51
52pub use trust_weighted_dht::Key as DHT_Key;
54
55use serde::{Deserialize, Serialize};
57use std::time::Duration;
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct DHTConfig {
62 pub replication_factor: usize,
64 pub bucket_size: usize,
66 pub alpha: usize,
68 pub record_ttl: Duration,
70 pub bucket_refresh_interval: Duration,
72 pub republish_interval: Duration,
74 pub max_distance: u8,
76}
77
78impl Default for DHTConfig {
79 fn default() -> Self {
80 Self {
81 replication_factor: 8,
82 bucket_size: 20,
83 alpha: 3,
84 record_ttl: Duration::from_secs(3600),
85 bucket_refresh_interval: Duration::from_secs(3600),
86 republish_interval: Duration::from_secs(3600),
87 max_distance: 160,
88 }
89 }
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
94pub struct Record {
95 pub key: Key,
97 pub value: Vec<u8>,
99 pub publisher: PeerId,
101 pub created_at: std::time::SystemTime,
103 pub expires_at: std::time::SystemTime,
105 pub signature: Option<Vec<u8>>,
107}
108
109impl Record {
110 pub fn new(key: Key, value: Vec<u8>, publisher: PeerId) -> Self {
112 let now = std::time::SystemTime::now();
113 Self {
114 key,
115 value,
116 publisher,
117 created_at: now,
118 expires_at: now + std::time::Duration::from_secs(3600), signature: None,
120 }
121 }
122
123 pub fn is_expired(&self) -> bool {
125 std::time::SystemTime::now() > self.expires_at
126 }
127}
128
129pub mod content_addressing;
131pub mod enhanced_storage;
132pub mod geographic_network_integration;
133pub mod geographic_routing;
134pub mod geographic_routing_table;
135pub mod latency_aware_selection;
136pub mod network_integration;
137pub mod node_failure_tracker;
138pub mod optimized_storage;
139pub mod replication_grace_period;
140pub mod skademlia;
141pub mod ipv6_identity;
145
146pub mod ipv4_identity;
148
149pub mod cross_network_replication;
151
152pub mod node_age_verifier;
154
155pub mod collusion_detector;
157
158pub mod sybil_detector;
160
161pub mod authenticated_sibling_broadcast;
163
164pub mod routing_maintenance;
166
167pub mod metrics;
169
170#[cfg(feature = "adaptive-ml")]
172pub mod trust_peer_selector;
173
174#[cfg(feature = "adaptive-ml")]
176pub use trust_peer_selector::{
177 TrustAwarePeerSelector, TrustSelectionConfig, adaptive_id_to_dht_node, dht_node_to_adaptive_id,
178};
179
180pub use routing_maintenance::{
182 BucketRefreshManager, EvictionManager, EvictionReason, MaintenanceConfig, MaintenanceScheduler,
183 MaintenanceTask, NodeLivenessState, NodeValidationResult, RefreshTier, ValidationFailure,
184};
185
186pub use routing_maintenance::{
188 CloseGroupEviction, CloseGroupEvictionTracker, EvictionRecord, SecurityCoordinator,
189 SecurityCoordinatorConfig,
190};
191
192pub use routing_maintenance::close_group_validator::{
194 AttackIndicators, CloseGroupFailure, CloseGroupHistory, CloseGroupResponse,
195 CloseGroupValidationResult, CloseGroupValidator, CloseGroupValidatorConfig,
196};
197
198pub use collusion_detector::{
200 CollusionDetector, CollusionDetectorConfig, CollusionEvidence, CollusionGroup, VotingPattern,
201 VotingRecord,
202};
203
204pub use sybil_detector::{
206 BehaviorProfile, JoinRecord, SybilDetector, SybilDetectorConfig, SybilEvidence, SybilGroup,
207};
208
209pub use authenticated_sibling_broadcast::{
211 AuthenticatedSiblingBroadcast, BroadcastValidationFailure, BroadcastValidationResult,
212 MembershipProof, MembershipProofType, SiblingBroadcastBuilder, SiblingBroadcastConfig,
213 SiblingBroadcastValidator, SignedSiblingEntry,
214};
215
216pub use metrics::{
218 DhtHealthMetrics, DhtMetricsAggregator, DhtMetricsCollector, MetricsSummary, PlacementMetrics,
219 PlacementMetricsCollector, SecurityMetrics, SecurityMetricsCollector, TrustMetrics,
220 TrustMetricsCollector,
221};
222
223#[cfg(test)]
224mod security_tests;