A DHT-based relay and post store for ActivityPub hashtags
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Trolli Schmittlauch 6349e05033 enable HIE only in the shell environment, but not by default 2 weeks ago
app periodically purge lookup cache of expired entries 3 weeks ago
src adjust code to refactored and parameterisable RingMap 2 weeks ago
test data structure for RealNode holds common config and management data 1 month ago
.gitignore remove unnecessary directory level 2 months ago
.hlint.yaml adjust hlint hints to ignore lambda-case 2 months ago
CHANGELOG.md remove unnecessary directory level 2 months ago
FediChord.asn1 Refactor predecessors and successors to hold RemoteNodeStates 2 months ago
Hash2Pub.cabal refactor RingMap into own module 2 weeks ago
LICENSE remove unnecessary directory level 2 months ago
Readme.md add readme 2 months ago
Setup.hs remove unnecessary directory level 2 months ago
cabal.project.renameinfuture disable online package fetching, only starts to work with cabal 3.4 and needs to be renamed then 3 weeks ago
default.nix enable HIE only in the shell environment, but not by default 2 weeks ago
democlient.hs remove unnecessary directory level 2 months ago
demoserver.hs remove unnecessary directory level 2 months ago
hashtest.hs remove unnecessary directory level 2 months ago
shell.nix enable HIE only in the shell environment, but not by default 2 weeks ago
stylish.sh Linting integration 2 months ago

Readme.md

Hash2Pub

This is heavily WIP and does not provide any useful functionality yet.
I aim for always having the master branch at a state where it builds and tests pass.

A fully-decentralised relay for global hashtag federation in ActivityPub based on a distributed hash table. It allows querying and subscribing to all posts of a certain hashtag and is implemented in Haskell.

This is the practical implementation of the concept presented in the paper Decentralised Hashtag Search and Subscription for Federated Social Networks. A 30 minutes introduction talk is available as well.

The ASN.1 module schema used for DHT messages can be found in FediChord.asn1.

Building

The project and its developent environment are built with Nix.

The development environment can be entered with nix-shell. Then the project can be built with cabal build from within the environment, or using nix-shell --command "cabal build" to do both steps at once.