RFC: Logos Capability Discovery
Hey VAC community ![]()
We’re excited to share a draft RFC and proof-of-concept for Logos Capability Discovery — a service-oriented discovery layer built on top of Kad-DHT. This work targets a core problem in decentralized networks: efficient, fair, and resilient peer discovery across many services.
The RFC is marked raw and evolving quickly. Early feedback is highly encouraged.
What is Logos Capability Discovery?
Logos Discovery is a service (capability) discovery protocol inspired by DISC-NG, designed as an extension of Kad-DHT.
It enables nodes to:
- Advertise participation in specific services (libp2p protocol IDs)
- Discover peers offering a given service efficiently
- Maintain resilience against Sybil, DoS, and cache-domination attacks
- Scale logarithmically across many services
In the RFC:
- Service ≡ Capability
- Node ≡ Peer
Logos preserves Kad-DHT behavior wherever not explicitly overridden.
Motivation
Service discovery in multi-service P2P networks faces persistent challenges:
-
Unpopular services are hard to discover
Random walks or gossip-style propagation converge slowly.
-
Popular services overload the network
Advertising at peers closest to the service ID creates hotspots.
-
Weak admission control
Simple provider records are easy to spam and eclipse.
-
Poor fairness guarantees
Popular services dominate storage and lookup bandwidth.
Logos addresses these problems by moving discovery from content-based routing to service-centric routing, while keeping Kad-DHT semantics intact.
Protocol Overview
Logos defines three roles (a node may play multiple):
1. Advertisers
Nodes that provide a service and want to be discovered.
- Maintain a service-specific advertise table
- Register advertisements across multiple registrars
- Retry registration using ticket-based waiting
2. Discoverers
Nodes looking for peers that provide a service.
- Maintain a service-specific search table
- Query registrars progressively from far to close buckets
- Verify advertisement signatures locally
3. Registrars
Nodes that store and serve advertisements.
- Maintain a bounded ️advertisement cache
- Enforce waiting-time–based admission control
- Return both advertisements and topology hints
Key Design Ideas
Service-Centric Routing Tables
Instead of routing around a node’s peerID, Logos introduces routing tables centered on the service ID (SHA-256(protocolID)):
AdvT(service_id_hash)for advertisersDiscT(service_id_hash)for discoverersRegT(service_id_hash)for registrars
This allows logarithmic navigation toward service-specific peers, not just nodes.
Distributed Advertisement Placement
Advertisements are placed:
- Across multiple buckets
- At multiple registrars
- With bounded fan-out per bucket (
K_register)
This avoids hotspots and single points of failure.
Waiting-Time–Based Admission Control (Core Innovation)
Registrars do not immediately accept advertisements.
Instead, they compute a waiting time based on:
- Cache occupancy
- Service popularity within the cache
- IP similarity (Sybil resistance)
Advertisers receive signed tickets that:
- Accumulate waiting time across retries
- Require no per-request state on registrars
- Are robust to clock skew
This achieves:
- Natural prioritization of rare services
- Penalization of Sybil identities
- Strong DoS resistance
Progressive Bucket-Based Lookup
Discoverers query registrars:
- Starting from far buckets
- Progressively moving toward the service ID
- Stopping early once enough peers are found
This ensures:
- Fast discovery for popular services
- Guaranteed logarithmic discovery for unpopular ones
- Reduced eclipse risk near the target
Why This Matters
Logos Discovery achieves a rare balance:
- Efficiency: O(log N) discovery across services
- Fairness: Rare services are not starved
- Security: Strong resistance to Sybil, cache flooding, and eclipse attacks
- Compatibility: Built entirely on Kad-DHT primitives
The admission protocol is especially important: no PoW, no global coordination, no per-request memory, yet strong economic-style throttling emerges naturally.
Logos vs Kad-DHT vs Discv5 (Corrected)
| Feature | Kad-DHT | Discv5 | Logos Discovery |
|---|---|---|---|
| Discovery unit | Content / providers | Topics | Services / capabilities |
| Routing center | peerID | nodeID | service ID |
| Admission control | None | Rate limits + queues | Waiting-time tickets |
| Sybil resistance | Weak | IP-based limits | IP similarity + waiting |
| Load balancing | Hotspots | Topic queues | Distributed across buckets |
| Unpopular services | Inefficient | Slow convergence | Logarithmic lookup |
Proof of Concept
The PoC demonstrates:
- Service-specific routing tables
- REGISTER / GET_ADS flows
- Waiting-time ticket issuance and verification
- Progressive discovery
- IP similarity scoring
Please try it locally by following PLAYGROUND.md.
We’d love feedback on behavior under churn, scale, or adversarial setups.
Open Questions (We Want Your Input)
-
Multiple services per node
How should nodes efficiently manage participation in multiple services without incurring excessive overhead?
-
Service table management
Should service-specific routing tables be fully independent, lazily instantiated, or partially shared across related services?
-
Multi-role nodes
How should behavior be defined and constrained when a single node simultaneously acts as advertiser, discoverer, and registrar for one or more services?
-
Registrar incentives
What mechanisms can encourage nodes to operate as registrars rather than free-riding as clients only?
Call for Feedback
We’re especially interested in:
- Security reviews and missed attack vectors
- Suitability for your protocols
- Deployment concernsy
This is early-stage work, and community input will shape the direction significantly.
Looking forward to your thoughts ![]()