Replies: 3 comments
-
@sumanjeet0012 : That’s an excellent milestone — congratulations on getting Now, regarding your observation:
Wish to share some suggestions: What is workingThis is significant progress. You’ve overcome one of the major hurdles by achieving connection-level compatibility. The fact that connections are being established with nodes means:
So now we are hitting the protocol interoperability layer, which is a very common next pain point when connecting different language implementations of libp2p. 🧠 Likely CauseThe issue you're encountering — where DHT queries get no response from mino bootstrapper nodes — is very likely due to incompatibility at the protocol level, not a transport or muxer issue. Here are a few possible root causes: 1. DHT protocol version mismatch
Check: # Verify this in your Python node
'/ipfs/kad/1.0.0' in protocols_supported 💡 Suggestion: Use 2. Your node doesn’t respond correctly to DHT protocol messages
💡 Suggestion: Log raw DHT messages and compare byte-level or protobuf-level encoding with Go-libp2p. 3. Stream not being properly opened
💡 Suggestion: Add detailed logging for stream open, write, read, close events for the 4. Missing or partial DHT support in Python libp2p
💡 Suggestion: Double-check what parts of Kademlia your Python node supports. If only 🔧 Suggestions and Next Steps✅ 1. Use
|
Beta Was this translation helpful? Give feedback.
-
I’m happy to share that the Python node can now communicate successfully with Amino bootstrapper nodes and execute DHT queries. Huge thanks to @acul71 and @paschal533 for implementing Yamux in As I continue working toward the initial release of the Kademlia DHT, I’d like to confirm whether I’m on the right track with a few design and implementation aspects: 1. Node ModesCurrently, there’s no distinction between different types of nodes in the implementation. I was wondering if it would make sense to introduce separate server and client modes. From my understanding:
Would this separation be appropriate for the initial release? And if yes, should the client mode include any additional constraints or behaviors? 2. Query Optimization
3. Error Recovery and ReportingI'm not yet sure whether structured error handling and reporting are required for the initial release. Would you recommend including them at this stage? If yes, any high-level guidance or examples would be greatly appreciated. 4. Testing PlanHere is the tentative list of test cases I’ve planned. Could you please confirm whether these are sufficient, or suggest any additions? Unit Testing
Integration Testing (using two Python nodes)
Would you recommend adding any additional test scenarios or edge cases? Looking forward to your feedback to ensure I’m heading in the right direction. |
Beta Was this translation helpful? Give feedback.
-
@seetadev I have uploaded demo video and a developer documentation. Developer documentation: https://docs.google.com/document/d/1VCAdMtZjtb-Po0_74Uhm6VZuWF52OLK3/edit?usp=sharing&ouid=108233186261105252601&rtpof=true&sd=true Kademlia-demo video: https://drive.google.com/file/d/1FbeLUtnCXNBiM_zp_LPK7lxwwaijflrP/view?usp=drive_link |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
@sumanjeet0012 : Thank you for the update — this is excellent progress!
Having
FIND_NODE
,PUT_VALUE
, andGET_VALUE
operational is a strong indicator that the core routing and value storage mechanisms of the DHT are working as intended. Local testing with multiple nodes is a great first step to validate functionality and ensure that node-to-node communication, record persistence, and routing table updates behave correctly in a controlled environment.Suggested Features for Initial Release
For the initial release of Kademlia DHT, wish to share some additional capabilities and refinements:
Core Feature Completeness
Provider Records (Content Routing)
ADD_PROVIDER
/GET_PROVIDERS
functionality.Record Expiration & Replication
Routing Table Maintenance
k-bucket
refreshing).PING
or passive timeout).Parallel Querying / α-Parameter Implementation
Handling NATed and Unreachable Peers
Advanced / Stretch Goals (optional for initial release, but helpful)
DHT Query Logging and Diagnostics
Simulated Large-Scale Testing
libp2p-sim
,mininet
, or custom Docker setups).DHT Bootstrapping Enhancements
Testing Ideas for Large Networks
You're absolutely right that it’s hard to locally test scenarios involving hundreds of peers. Here are a few ways to approach this:
Simulated Network via Docker or Containers
Emulators / DHT Sim Tools
libp2p-sim
,shadow
, or building a mock transport layer can let you emulate DHT behavior at scale without needing real TCP/UDP connections.Testnets or Remote Deployments
Metrics Collection
Again, kudos on reaching this point — it’s a big milestone. With a few more utilities for data persistence, peer routing hygiene, and testing at scale, your DHT will be in great shape for an initial release!
Beta Was this translation helpful? Give feedback.
All reactions