[erlang-questions] [ANN] [Alpha Release] dht - a distributed hash-table

Jesper Louis Andersen jesper.louis.andersen@REDACTED
Wed Aug 12 13:47:39 CEST 2015


Hi list,

I'm hereby announcing an early alpha-release of the `dht` application. It
is an implementation of the Kademlia distributed hash table for Erlang,
loosely based on the code which is in eTorrent, which originates from
Magnus Klaar a few years back, but it has been completely rewritten in a
lot of places.

While here, I've switched the system to use 256 bit SHA-256 hashes over
SHA-1 160 bit hashes which should be deprecated anyway. The README.md
contains an overview of the API as it stands now.

The perhaps most interesting R&D feature is that the hash table is 2.2K
lines of code including comments, but its quickcheck model is 4.2K lines of
code, including comments. Apart from one top-level module, every module has
been checked as an isolated component and as clusters of components as well
through the use of Erlang QuickCheck's clustering features. This doesn't
prove the DHT is correct, but it does create a link between the model and
the system under test: they are likely to be synchronized.

I believe there is at least some research-grade work in the EQC model, if
not for anything else, it is one of the largest Open Source models I know
of. Another feature is a submodule which is used to mock time. By using
component callouts, timer triggering is handled by preconditions in the
model, and time is advanced in isolation from the main component. This
yields a very natural way to control timers from the model which in turn
lets you test timing code precisely, even in the case where timer
interaction between different components has relevance.

I've only run fairly simple tests, so any bug report is appreciated. Mind
you, I've only quickchecked this code, not run it in production :)

https://github.com/jlouis/dht

-- 
J.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150812/ebe268a2/attachment.htm>


More information about the erlang-questions mailing list