Skip to content

Decentralized Timeline built in go using LibP2P, developed for the 1st Semester's Large Scale Distributed Systems class (M.EIC004) of the Master in Informatics and Computing Engineering (December 2022)

License

Notifications You must be signed in to change notification settings

Sirze01/feup-sdle-distributed_timeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Decentralized Timeline

Developed for the 1st Semester's Large Scale Distributed Systems class (M.EIC004) of the Master in Informatics and Computing Engineering (December 2022)

This project explores the creation of a decentralized timeline service that harvests peer-to-peer and edge devices.

  • Users have an identity and publish small text messages in their local machine, forming a local timeline.
  • They can subscribe to other user’s timelines and will help to store and forward their content.
  • Remote content is available when a source or source subscriber is online and can forward the information.
  • Information from subscribed sources can be ephemeral and only stored and forwarded for a given time period.

Implementation

The inital objective was to develop both a command line application and a frontend to interface with it in a more user-friendly way.

Only the command line interface is fully functional.

Technologies

  • Go
  • LibP2P
  • React.js

Architectural aspects

  • The network is ready to accept peer nodes when at least a bootstrap node is active; bootstrap nodes can be initialized using the application command line client
  • Peer nodes can then be launched and interact with other peer nodes, posting small messages and subscribing to other users timelines
  • Each peer is uniquely identified on the network, associating an username to each peer node, through the use of a Distributed Hash Table (DHT)
  • Each username has a list of posted message identifiers saved on the DHT.
  • Each message, uniquely identified, has a list of peer nodes that can have it in persistent storage, from which another node can retrieve it (named provider in this context).
  • When a peer subcribes messages from a new username it fetches the posted messages list from the DHT and then queries it for providers for each message. It proceeds to retrieve them from available providers, and announces itself as a provider for the successfully retrieved messages.
  • A faster delivery system was also put in place using a publish-subriber messge mechanism. Each username generates a topic where it also posts the new messages. Subscribed peers parse receive the new message in the topic and announce themselves as providers for that message.

The announce and publish-substriber mechanisms are provided by the DHT implementation used (LibP2P, formerly part of IPFS).

Contributors

About

Decentralized Timeline built in go using LibP2P, developed for the 1st Semester's Large Scale Distributed Systems class (M.EIC004) of the Master in Informatics and Computing Engineering (December 2022)

Topics

Resources

License

Stars

Watchers

Forks