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.