[package] name = "chronogrid_net" description = "P2P mesh networking for ChronoGrid – libp2p over QUIC with Noise XK encryption" version.workspace = true edition.workspace = true rust-version.workspace = true publish = false [dependencies] # Ed25519 keypair generation and signing ed25519-dalek = { version = "2", features = ["rand_core"] } # Cryptographically-secure random number generation rand = "0.8" # SHA-256 for NodeId and SwarmKey fingerprint derivation sha2 = "0.10" # Hex encoding for NodeId and fingerprints hex = "0.4" # Serialization for keypair persistence serde = { version = "1", features = ["derive"] } serde_json = "1" # Error handling thiserror = "2" # Zeroize sensitive key material on drop zeroize = { version = "1", features = ["derive"] } # ── libp2p networking stack ────────────────────────────────────────────────── # Core libp2p with all required transport and behaviour features. libp2p = { version = "0.54", features = [ "noise", "quic", "tcp", "yamux", "mdns", "gossipsub", "kad", "identify", "relay", "request-response", "tokio", "macros", ] } # Async runtime — required by libp2p tokio transport tokio = { version = "1", features = ["full"] } # Futures utilities for async stream handling futures = "0.3" # Logging / tracing tracing = "0.1" # Serialization for DeltaPacket (bincode binary format) bincode = "1" # LZ4 compression for delta payloads lz4_flex = "0.11" # ChaCha20-Poly1305 AEAD encryption for delta payloads chacha20poly1305 = "0.10" # Generic array for AEAD key/nonce types generic-array = "0.14" # async-trait for implementing libp2p request_response Codec async-trait = "0.1" [dev-dependencies] tempfile = "3" tokio = { version = "1", features = ["full", "test-util"] } tracing-subscriber = { version = "0.3", features = ["env-filter"] }