DHT based on the [lip2p kademlia spec](https://github.com/libp2p/specs/tree/master/kad-dht)
Go to file
Csaba Kiraly 66116b9bf6
Fix: queue messages when there is no encryption key (#83)
* encodeMessagePacket: expose haskey

encodeMessagePacket checks for session and behaves differently
based on that. Exposing this difference in behavior.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>

* improve tracing of message exchange

run e.g. as
```
nim c -r -d:debug -d:chronicles_enabled=on -d:chronicles_log_level=TRACE -d:chronicles_sinks=textlines[nocolors,stdout] tests/dht/test_providers.nim >err
```

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>

* add debug on Handshake timeour

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>

* queue messages during handshake and send later

If a handshake was already in progress, messages were dropped.
Instead of this, it is better to queue these and send as soon
as the handshake is finished and thus the encryption key is known.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>

* rename handshakeInProgress to keyexchangeInProgress

Handshake is also a name of a message, which makes previous
name less clear.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>

* keyexchangeInProgress: do not remove on handshake received

This is the wrong direction, not needed

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>

---------

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-11-17 11:18:48 -08:00
.github Update CI workflow trigger branch (#82) 2023-08-26 09:31:31 +03:00
codexdht Fix: queue messages when there is no encryption key (#83) 2023-11-17 11:18:48 -08:00
tests Fix: queue messages when there is no encryption key (#83) 2023-11-17 11:18:48 -08:00
vendor Bump deps (#77) 2023-07-21 15:29:38 -07:00
.gitignore Fix changes from stint (#81) 2023-11-17 11:08:45 -08:00
LICENSE-APACHEv2 initial commit based on nim-eth@779d767b024175a51cf74c79ec7513301ebe2f46 2022-02-14 01:51:28 +01:00
LICENSE-MIT initial commit based on nim-eth@779d767b024175a51cf74c79ec7513301ebe2f46 2022-02-14 01:51:28 +01:00
README.md Update CI workflow trigger branch (#82) 2023-08-26 09:31:31 +03:00
atlas.lock Bump deps (#77) 2023-07-21 15:29:38 -07:00
build.nims Fix nimble install (#78) 2023-07-21 15:51:42 -06:00
codecov.yml update codecov path to be informational 2022-03-22 11:00:26 +11:00
codexdht.nim renaming imports 2023-07-12 14:58:29 -07:00
codexdht.nimble bump release (#79) 2023-07-25 19:56:25 -07:00
config.nims Fix nimble install (#78) 2023-07-21 15:51:42 -06:00
nimble.lock Bump deps (#77) 2023-07-21 15:29:38 -07:00

README.md

A DHT implementation for Codex

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

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

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