Build a peer-to-peer application on Tezos' p2p library

Tutors : Vivien Pelletier, Julien Tesson, Mathias Bourgoin

Blockchains are decentralized systems implementing a consensus algorithm over a peer-to-peer network that interconnects the participants.

The OCaml implementation of the Tezos blockchain's node, which Nomadic Labs is actively developing, uses a dedicated peer-to-peer library developed for this project.

Developing other open source applications that use this library would help to grow the community of users. It would be a good test bench for the library, allowing testing it in different conditions, and would thus make it more robust.

Goals

To make this project possible, a first step is to make the library well separated from the Tezos node.

You could then develop a distributed hash table, which, in turn could be used to build a distributed file system à la IPFS1. However, the choice of the developed application is open to discussion.

Another axis of the internship could be to assess the degree of modularity that would be needed to make the library compatible with other existing peer-to-peer networks (bittorrent, kadmelia, libp2p).

Requirements

You should already be familiar with OCaml. Knowledge of distributed systems would be a plus.

Internship Context

You will work at the Nomadic Labs' offices in Paris or Grenoble.

Participating in a large scale open-source project you will have to rapidly learn to use collaborative tools (Git, merge request, issues, gitlab, continuous integration, documentation) and to communicate about your work. The final results might be presented at an international conference or workshop.

You will have a designated advisor at Nomadic Labs and will have to work independently and to propose thoroughly-considered solutions to the different problems you will have to solve. You will be encouraged to seek advice from members of the team.

Intellectual Property

All material produced (essays, documentation, code, etc.) will be released under an open source license (e.g. MIT or CC).