#rendezvous #gossip #sharding #discovery

saorsa-gossip-rendezvous

Rendezvous shards for global findability in Saorsa Gossip

6 releases

new 0.1.9 Nov 23, 2025
0.1.8 Oct 19, 2025

#1847 in Network programming

Download history 306/week @ 2025-10-03 182/week @ 2025-10-10 371/week @ 2025-10-17 341/week @ 2025-10-24 940/week @ 2025-10-31 103/week @ 2025-11-07 21/week @ 2025-11-14

1,438 downloads per month
Used in 4 crates (3 directly)

MIT/Apache

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

  1. Shard Space: k=16 → 65,536 shards
  2. Shard Calculation: shard = BLAKE3("saorsa-rendezvous" || target_id) & 0xFFFF
  3. Publishers: Gossip Provider Summaries to target's shard
  4. 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