6 releases
| new 0.1.9 | Nov 23, 2025 |
|---|---|
| 0.1.8 | Oct 19, 2025 |
#1847 in Network programming
1,438 downloads per month
Used in 4 crates
(3 directly)
73KB
742 lines
Rendezvous Shards for global findability without DNS/DHT
Implements SPEC2 §9 Rendezvous Shards for publisher discovery.
Overview
Rendezvous shards provide global findability without requiring:
- DNS infrastructure
- DHT (Distributed Hash Table)
- Centralized directory services
How it works
- Shard Space: k=16 → 65,536 shards
- Shard Calculation:
shard = BLAKE3("saorsa-rendezvous" || target_id) & 0xFFFF - Publishers: Gossip Provider Summaries to target's shard
- Seekers: Subscribe to relevant shards, fetch from top providers
Example
use saorsa_gossip_rendezvous::{calculate_shard, ProviderSummary, Capability};
use saorsa_gossip_types::PeerId;
// Calculate shard for a target
let target_id = [1u8; 32];
let shard = calculate_shard(&target_id);
assert!(shard <= u16::MAX);
// Create a provider summary
let provider = PeerId::new([2u8; 32]);
let summary = ProviderSummary::new(
target_id,
provider,
vec![Capability::Site],
3600_000, // 1 hour validity
);
assert!(summary.is_valid());
Dependencies
~26–41MB
~441K SLoC