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§
- Capability
Config - Configuration for the local node’s capability advertisement and peer filtering policy.
- Capability
Registry - Central registry for peer capability advertisements.
- Capability
Stats - Runtime statistics for a
CapabilityRegistry. - Peer
Capability Set - The full capability advertisement for a single remote peer.
Enums§
- Peer
Capability - A well-known or custom capability that a peer may advertise.