libp2pdht

DHT based on Eth discv5 implementation

Pure Nim score 15/100 · tests present · no docs generated

Summary

Latest Version 0.6.4
License MIT
CI Status Failing
Downloads 0
Last Indexed 2026-08-31 07:15

Authors

  • Status Research & Development GmbH

Installation

nimble install libp2pdht
choosenim install libp2pdht
git clone https://github.com/codex-storage/nim-codex-dht

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
libp2pdht - - - - - - -

Dependencies

Package Version Optional
nim >= 2.2.4 & < 3.0.0 No
secp256k1 >= 0.6.0 & < 0.7.0 No
nimcrypto >= 0.6.2 & < 0.8.0 No
bearssl >= 0.2.5 & < 0.3.0 No
chronicles >= 0.11.2 & < 0.13.0 No
chronos >= 4.2.2 & < 4.4.0 No
libp2p >= 2.2.0 & < 3.0.0 No
protobuf_serialization >= 0.5.3 & < 0.6.0 No
metrics >= 0.2.2 & < 0.3.0 No
stew >= 0.4.2 No
stint >= 0.8.1 & < 0.9.0 No
https://github.com/logos-storage/nim-datastore >= 0.2.1 & < 0.3.0 No
questionable >= 0.10.15 & < 0.11.0 No
leveldbstatic >= 0.2.1 & < 0.3.0 No

Source

Repository https://github.com/codex-storage/nim-codex-dht
Homepage https://github.com/codex-storage/nim-codex-dht
Registry Source nimble_official

README

A DHT implementation for Logos Storage

License: Apache License: MIT Stability: experimental CI (GitHub Actions) codecov

This DHT implementation is aiming to provide a DHT for Logos Storage with the following properties * flexible secure transport usage with * fast UDP based operation * eventual fallback to TCP-based operation (maybe though libp2p) * eventually support operation on top of libp2p * flexible message encoding that plays well with the above transports * provide node lookup, content storage/lookup, and provider storage/lookup operations * roughly follow the libp2p-dht specifications from https://github.com/libp2p/specs/tree/master/kad-dht * eventually provide compatibility mode with the above specs

Current implementation is based on nim-eth's Discovery v5 implementation.

Base files were copied from status-im/nim-eth@779d767b024175a51cf74c79ec7513301ebe2f46

Building

This repo is setup to use Nimble lockfiles. This requires Nimble 0.14+ which isn't installed by default when this was written. If nimble -v reports 0.13.x then you will need to install Nimble 0.14. Note that using Nimble 0.14 changes how Nimble behaves!

Nimble 0.14 can be install by:

nimble install nimble@0.14.2

After this you can setup your Nimble environment. Note that this will build the pinned version of Nim! The first run can take ~15 minutes.

nimble setup # creates a nimble.paths used for rest of Nimble commands
nimble testAll

You can also run tasks directly:

nim testAll