https://github.com/codex-storage/nim-codex-dht
A DHT based on Discv5 with libp2p provider records support
https://github.com/codex-storage/nim-codex-dht
Last synced: 3 months ago
JSON representation
A DHT based on Discv5 with libp2p provider records support
- Host: GitHub
- URL: https://github.com/codex-storage/nim-codex-dht
- Owner: codex-storage
- License: apache-2.0
- Created: 2022-02-22T04:35:52.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-02-10T10:25:44.000Z (4 months ago)
- Last Synced: 2025-02-10T11:25:25.215Z (4 months ago)
- Language: Nim
- Homepage:
- Size: 703 KB
- Stars: 3
- Watchers: 11
- Forks: 5
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHEv2
Awesome Lists containing this project
- awesome-nim - libp2p-dht - DHT based on the libp2p kademlia spec. (Web / Protocols)
README
# A DHT implementation for Codex
[](https://opensource.org/licenses/Apache-2.0)
[](https://opensource.org/licenses/MIT)
[](#stability)
[](https://github.com/codex-storage/nim-codex-dht/actions/workflows/ci.yml?query=workflow%3ACI+branch%3Amaster)
[](https://codecov.io/gh/codex-storage/nim-codex-dht)This DHT implementation is aiming to provide a DHT for Codex 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 specsCurrent implementation is based on nim-eth's Discovery v5 implementation.
Base files were copied from [`status-im/nim-eth@779d767b024175a51cf74c79ec7513301ebe2f46`](https://github.com/status-im/nim-eth/commit/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:
```sh
nimble install [email protected]
```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.
```sh
nimble setup # creates a nimble.paths used for rest of Nimble commands
nimble testAll
```You can also run tasks directly:
```sh
nim testAll
```