Network Architecture
Y Protocol uses libp2p 0.54 for P2P networking with DHT discovery, message broadcasting, and encrypted communications.
libp2p 0.54
Kademlia DHT
GossipSub
Noise Encryption
libp2p Network Stack
ValidatorBehaviour Implementation
P2P networking behaviour using libp2p
#[derive(NetworkBehaviour)]
pub struct ValidatorBehaviour {
kademlia: kad::Behaviour<MemoryStore>, // DHT discovery
mdns: mdns::tokio::Behaviour, // Local discovery
gossipsub: gossipsub::Behaviour, // Message broadcast
identify: identify::Behaviour, // Peer identification
ping: ping::Behaviour, // Health checks
request_response: request_response::json::Behaviour<ValidatorRequest, ValidatorResponse>,
}Source: /crates/consensus/src/validators/network.rs
Kademlia DHT
Distributed hash table for peer discovery and routing
Bootstrap Time:
<10 seconds
Routing Table:
Kademlia K-bucket
GossipSub
Publish-subscribe messaging for block and transaction propagation
Propagation:
<1 second
Mesh Degree:
6-12 peers
mDNS
Multicast DNS for local network peer discovery
Local Discovery:
Automatic
Range:
Local subnet
Transport Protocols
Transport Layers
TCP Transport
Primary
QUIC Transport
Alternative
Yamux Multiplexing
Stream MUX
Multiple transport options with stream multiplexing for connection usage.
Security & Encryption
Noise Protocol
End-to-End
Peer Authentication
Ed25519
Forward Secrecy
Yes
All communications encrypted with modern cryptographic protocols.
Consensus Message Protocol
Message Types
Structured messages for consensus coordination
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ConsensusMessage {
BlockProposal {
height: u64,
block: Block,
proposer_id: String,
timestamp: u64
},
ValidatorVote {
height: u64,
block_hash: [u8; 32],
vote: ValidatorVote
},
BlockFinalization {
height: u64,
block: Block,
votes: Vec<ValidatorVote>
},
ValidatorSetUpdate {
height: u64,
validators: Vec<ValidatorInfo>
},
}Block Proposals
New block proposals broadcast to all validators for voting
Validator Votes
Individual validator votes on proposed blocks with signatures
Block Finalization
Finalized blocks with complete vote set broadcast to network
Validator Updates
Changes to active validator set and stake weights
Network Performance
Propagation
<1s
Global message propagation
Discovery
<10s
Peer discovery time
Sync Speed
1K
Blocks per second
Overhead
~50KB
Per peer connection
Peer Management
Peer Connection Information
Detailed peer tracking and connection management
pub struct PeerConnectionInfo {
pub peer_id: String,
pub address: String,
pub connection_established: DateTime<Utc>,
pub bytes_sent: u64,
pub bytes_received: u64,
pub is_inbound: bool,
pub protocols: Vec<String>,
pub connection_state: String,
}Connection Limits
Max Inbound:
Configurable
Max Outbound:
Configurable
Rate Limiting:
Per-peer
Health Monitoring
Ping Protocol:
Built-in
Heartbeat:
30 seconds
Timeout:
60 seconds
Protocol Support
Identify:
Peer info
AutoNAT:
NAT detection
Relay:
Connectivity