Protocol testing environment

Tutors: Mathias Bourgoin, Julien Tesson

Blockchains are decentralized ledgers managed using a distributed peer-to-peer network.

Different entities can interact with/within this network: nodes that replicate the state of the ledger, validators that handle the validity of operations and aggregate them into blocks, etc. When nodes diverge on the chain (producing forks) because of network latency or other technical difficulties, the consensus protocol of the blockchain makes sure that they will reach a consensus on which fork is to be the canonical chain after a small number of blocks have been aggregated. The protocol is thus responsible for the validation of blocks, but also of every transaction sent to chain.

Tezos is a self-amending ledger: it can update its consensus protocol seamlessly through an on-chain voting process. This makes it a blockchain that can upgrade this key component quickly and benefit from all the advances in the field as soon as possible. However, to test their novel ideas, protocol developers need tools; in particular they need to be able to easily deploy a test chain with their new protocol and evaluate its behavior.

Goals

The goal of this internship is to develop a turnkey tool to design and deploy a protocol development environment for Tezos. First, it should allow the easy definition of a genesis block (which initializes the initial accounts on the blockchain and their rights) and the properties of the chosen consensus algorithm. It should allow the deployment of different nodes and validators, compatible with the new protocol, on a heterogeneous network. Finally, it should be usable for evaluating the behavior of the resulting chain.

Requirements

You should have a working knowledge of OCaml programing.

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).