Expand description
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());Structs§
- Provider
Summary - Provider Summary per SPEC2 §9
- Summary
Data - Summary data for content reconciliation per SPEC2 §9
Enums§
- Capability
- Capability that a provider can serve per SPEC2 §9
Constants§
- SHARD_
BITS - Shard space size: k=16 → 2^16 = 65,536 shards per SPEC2 §9
- SHARD_
COUNT - Total number of shards: 2^16 = 65,536
- SHARD_
MASK - Bitmask for shard calculation: 0xFFFF
Functions§
- calculate_
shard - Calculate the rendezvous shard for a target ID per SPEC2 §9
Type Aliases§
- ShardId
- Shard ID (0..65,535)