Mainline DHT implementation in Elixir

184 views
Skip to first unread message

Florian Adamsky

unread,
Nov 23, 2015, 9:59:55 AM11/23/15
to elixir-l...@googlegroups.com
Hello,

I have done a couple of small projects to learn Elixir. So, I am not
completely new to Elixir and its ecosystem. This is, however, my first
non-trivial project. Since, I am doing research in the area of
peer-to-peer (P2P) applications, I thought it would be a good idea to
write a mainline distributed hash table (DHT) in Elixir. You can get the
source code on GitHub [1].

The main functionality is working, but it is not finished yet. I would
like to implement a couple of new features in version 0.2, for instance:

* get faster rid of bad nodes
* rate limiting
* IPv6 routing table
* pure search without announce_peer messages
* more tests

Nevertheless, I would appreciate feedback on the architecture and the
code. You can find a diagram of the architecture also on GitHub.

Regards

[1] https://github.com/cit/MLDHT
--
Florian Adamsky
http://florian.adamsky.it/

Josh Adams

unread,
Nov 23, 2015, 11:42:45 AM11/23/15
to elixir-l...@googlegroups.com
have you seen jlouis666's DHT in erlang?  It has the nice benefit that it's been thoroughly quickchecked.


--
You received this message because you are subscribed to the Google Groups "elixir-lang-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-talk/87egfgn4i2.fsf%40haktar.org.
For more options, visit https://groups.google.com/d/optout.



--
Josh Adams

Johan Wärlander

unread,
Nov 23, 2015, 11:56:18 AM11/23/15
to elixir-lang-talk
I was just thinking the same.. Unfortunately, can't say much about DHT implementations beyond suggesting to go have a look at that, even if just to "compare notes".

It's here: https://github.com/jlouis/dht

Florian Adamsky

unread,
Nov 23, 2015, 2:50:00 PM11/23/15
to elixir-l...@googlegroups.com

On Monday, Nov 23 2015, Josh Adams wrote:

> have you seen jlouis666's DHT in erlang? It has the nice benefit that it's
> been thoroughly quickchecked.

yes, I have seen this implementation. My erlang is way to bad to say
anything about the code or the implementation. According to its
documentation, however, he implements a more general DHT network which
is not compatible with the mainline DHT network according to BEP
05.

The mainline DHT overlay network is by far the biggest overlay network
with around 15-21 million users per day. This is because BitTorrent
makes use of it. For instance, if you would like to implement a
BitTorrent client or crawler in Elixir you will need a compatible DHT
implementation.

But you are right, it is pretty nice that is been tested with
QuickCheck.

Regards
Reply all
Reply to author
Forward
0 new messages