Trolli Schmittlauch
f15d83baff
- neighbour nodes need to be contacted reliably - Only holding NodeIDs requires a cache lookup for getting hostname and port. This is brittle as the entry could've been purged from cache. - refactored ASN.1 scheme, types and add/ sort/ remove implementations closes #46 |
||
---|---|---|
app | ||
src | ||
test | ||
.gitignore | ||
.hlint.yaml | ||
CHANGELOG.md | ||
default.nix | ||
democlient.hs | ||
demoserver.hs | ||
FediChord.asn1 | ||
Hash2Pub.cabal | ||
hashtest.hs | ||
LICENSE | ||
Readme.md | ||
Setup.hs | ||
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.