Trolli Schmittlauch
b23201a49c
Returning the own node as a default does not make sense in all contexts: Especially for bootstrap joining this can be harmful, so signalling instead that the lookup failed makes distinguishing on a case by case basis possible. Also contributes to #57 |
||
---|---|---|
app | ||
src | ||
test | ||
.gitignore | ||
.hlint.yaml | ||
cabal.project.renameinfuture | ||
CHANGELOG.md | ||
default.nix | ||
democlient.hs | ||
demoserver.hs | ||
FediChord.asn1 | ||
Hash2Pub.cabal | ||
hashtest.hs | ||
LICENSE | ||
Readme.md | ||
Setup.hs | ||
shell-minimal.nix | ||
shell.nix | ||
stylish.sh |
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.