[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 |
Hello,
Follow-up on:
- https://lists.gnu.org/archive/html/gnunet-developers/2019-03/msg00101.html
- https://lists.gnu.org/archive/html/help-gnunet/2014-01/msg00000.html
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.
[0] https://framagit.org/amz3/qadom/
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.
[1] https://git.gnunet.org/gnunet-guile2.git/tree/prototypes/c3b2
[2] https://git.gnunet.org/gnunet.git/tree/README.1st#n131
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
implementation.
(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.
WDYT?
--
Amirouche ~ amz3 ~ https://hyper.dev
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-developers] A "Hub" Data-Structure On Top the DHT? (Was: A Graph Database on top GNUnet (take two)),
Amirouche Boubekki <=