Skip to main content

Crate saorsa_gossip_rendezvous

Crate saorsa_gossip_rendezvous 

Source
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

  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());

Structs§

ProviderSummary
Provider Summary per SPEC2 §9
SummaryData
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)