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.
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.
- Go
- LibP2P
- React.js
- The network is ready to accept
peernodes when at least abootstrapnode is active;bootstrapnodes can be initialized using the application command line client Peernodes can then be launched and interact with otherpeernodes, posting small messages and subscribing to other users timelines- Each
peeris uniquely identified on the network, associating an username to eachpeernode, 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
peernodes that can have it in persistent storage, from which another node can retrieve it (namedproviderin this context). - When a
peersubcribes messages from a new username it fetches the posted messages list from theDHTand then queries it forprovidersfor 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-subribermessge mechanism. Each username generates atopicwhere it also posts the new messages. Subscribedpeersparse receive the new message in thetopicand announce themselves asprovidersfor that message.
The announce and publish-substriber mechanisms are provided by the DHT implementation used (LibP2P, formerly part of IPFS).
- Carlos Gomes (@carlosmgomes)
- José Costa (@Sirze01)
- Pedro Silva (@PedroJSilva2001)
- Sérgio Estêvão (@SergioEstevao11)