Skip to main content

Module peer_capabilities

Module peer_capabilities 

Source
Expand description

Peer Capability Advertisement and Negotiation

This module provides a high-level registry for advertising and negotiating capabilities between P2P peers. Unlike the lower-level capability_registry module (which is tick-based and protocol-oriented), this module is designed around wall-clock TTL semantics, structured requirement matching (require_all / require_any), and a richer set of first-class capability variants aligned with the IPFRS protocol suite.

§Key Types

  • PeerCapability — enumeration of well-known and custom capabilities.
  • PeerCapabilitySet — a single peer’s advertised capability snapshot.
  • CapabilityConfig — local configuration: what we advertise, what we require, how many peers we track, and TTL.
  • CapabilityRegistry — the central in-memory registry; register, query, expire, and remove peer capability sets.
  • CapabilityStats — counters and per-capability distribution histograms.

§Example

use ipfrs_network::peer_capabilities::{
    CapabilityConfig, CapabilityRegistry, PeerCapability, PeerCapabilitySet,
};
use std::collections::HashSet;

let config = CapabilityConfig {
    local_capabilities: vec![PeerCapability::BitswapV2, PeerCapability::DHTKademlia],
    require_all: vec![PeerCapability::BitswapV1],
    require_any: vec![PeerCapability::DHTKademlia, PeerCapability::DHTCorvus],
    max_peers: 256,
    ttl_ms: 60_000,
};

let mut registry = CapabilityRegistry::new(config);

let peer = PeerCapabilitySet {
    peer_id: "QmPeer1".to_string(),
    capabilities: [PeerCapability::BitswapV1, PeerCapability::DHTKademlia]
        .into_iter()
        .collect(),
    version: "0.2.0".to_string(),
    advertised_at: 1_000,
    last_verified: None,
};

assert!(registry.register(peer));
assert_eq!(registry.peer_count(), 1);

Structs§

CapabilityConfig
Configuration for the local node’s capability advertisement and peer filtering policy.
CapabilityRegistry
Central registry for peer capability advertisements.
CapabilityStats
Runtime statistics for a CapabilityRegistry.
PeerCapabilitySet
The full capability advertisement for a single remote peer.

Enums§

PeerCapability
A well-known or custom capability that a peer may advertise.