network.rs - P2P Protocol
TCP Server Implementation
// src/network.rs (lines 7-25)
pub async fn start_tcp_server(port: u16, blockchain: Arc<Mutex<Vec<Block>>>) -> anyhow::Result<()> {
let listener = TcpListener::bind(format!("0.0.0.0:{}", port)).await?;
println!("TCP P2P server listening on port {}", port);
loop {
let (socket, addr) = listener.accept().await?;
println!("New TCP connection from {}", addr);
let blockchain_clone = Arc::clone(&blockchain);
tokio::spawn(async move {
if let Err(e) = handle_connection(socket, blockchain_clone).await {
eprintln!("Connection error with {}: {}", addr, e);
}
});
}
}Connection Protocol
Message Format
Bidirectional Communication
Peer Connection Management
Outbound Connection Establishment
Connection Lifecycle
Phase
Operation
Purpose
Message Types and Protocols
Blockchain Synchronization
Transaction Broadcasting
Integration with HTTP Interface
Protocol Comparison
Feature
TCP P2P
HTTP Interface