[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-developers] A "Hub" Data-Structure On Top the DHT? (Was: A Graph

From: Amirouche Boubekki
Subject: [GNUnet-developers] A "Hub" Data-Structure On Top the DHT? (Was: A Graph Database on top GNUnet (take two))
Date: Thu, 17 Oct 2019 17:43:31 +0200


Follow-up on:


Since then I built, using Python, another _very naive_ peer-to-peer
application, dubbed QAdom [0], based on kademlia paper. This let me
better understand the requirements for slow-web kind of applications
e.g. link aggregators, newsgroups, question-answering network, and to
some extent the fediverse. I want to stress that I am mostly focused
on slowish interactions but that gnunet allows real-time communication
as demonstrated by group-chat application that rely on CADET.


In the iteration before that, I built a bulletin board using gnunet's
guile bindings [1] called c3b2. I had a difficult time making
guile-fibers work with gnunet event loop. I read there is a focus on
make the event loop easier to integrate with other event loops at [2].
The idea behind the implementation of c3b2 is to rely on
gnunet-publish, gnunet-download and gnunet-search to implement some
kind of social network. Files are published using specific keywords
that are then looked up with gnunet-search. keywords play the role of
edges in a property graph. Files have can also reference other gnunet
uri. All that builds a graph.


All that work and some reading lead me to think about a more complex
data-structure that could be exposed on top of the DHT. I call that
data-structure a hub. A hub a free-for-all mutable data-structure that
is any peer can write to it.

That data-structure is subject to various attacks, similarly to the
gnunet-search feature. But I think it will help discovery. Unlike the
gnunet-search is does not stream the results.

Here the procedures associated with a hub:

  (peer-hub-put peer key uri)

This adds URI inside the hub identified with KEY. This is the only
'write' procedure. It must update the data-structure in a way that
allows to implement the following procedures. The (KEY, URI)
association has a Time-To-Live that must be defined by the

  (peer-hub-statistics peer key)

Return the statistics about the hub identified with KEY.

  (peer-hub-popular peer key limit)

This return a set of at most LIMIT uri that are the most popular in
the hub identified with KEY.

  (peer-hub-recent peer key limit)

This return a set of at most LIMIT uri that were published recently
using `peer-hub-put` in the hub identified with KEY.

  (peer-hub-sample peer key limit)

Return a set of at most LIMIT uri chosen randomly in the hub
identified with KEY.


Amirouche ~ amz3 ~

reply via email to

[Prev in Thread] Current Thread [Next in Thread]