Ad-hoc Static Analysis of Octez

Nomadic Labs is looking for a Ad-hoc Static Analysis of Octez intern. Tutors: Thomas Letan and Mehdi Bouaziz One of the distinguishing feature of Tezos is its self-amendment property. Every now

Nomadic Labs is looking for a Ad-hoc Static Analysis of Octez intern.

Tutors: Thomas Letan and Mehdi Bouaziz

One of the distinguishing feature of Tezos is its self-amendment property. Every now and then, the Tezos ecosystem is asked through a vote procedure to decide how the chain will evolve. What that means in practice is that software updates (called protocols in Tezos) are regularly proposed, elected, and finally automatically deployed. In practice, a new protocol is deployed every three or four months.
The downside of this approach is that deploying a protocol takes time, and is not suited to deal with the discovery of critical bugs after said protocol has been de-ployed. Furthermore, the Tezos blockchain is used to manage sensitive, valuable assets that a bug could jeopardize.
As a consequence, it is essential to ensure the quality of a protocol prior to proposing it to the ecosystem. One possible approach to is to rely on automated tools, such as static analyzers, to improve the quality of the codebase. During the Summer of 2021, we sent a survey to the programmers involved in the development of Octez to tell us which properties they would like to see checked automatically. Unfortunately, it appears that there is not yet a silver bullet tool capable of addressing our needs.

Goals

The goal of this internship is to bootstrap the effort to provide ad-hoc, relevant static analyses for the Octez codebase. Based on the result of our 2021 survey mentioned above, the intern will conduct the necessary software development to implement the most-wanted analyses (e.g., metrics such as functions size or documentation coverage to measure code quality, call graph analyses to detect unwanted side effects, etc.).
This could mean extending an existing analyzer, but it could also mean initiating the development of a new tool.
In either case, the goal of the internship is to be able to provide a pragmatic tool that can be integrated into a development workflow. Even if the primary objective of the internship is to target Tezos workflow, the tool should be generic enough so that it can contribute to the OCaml ecosystem in the long run. To this end, the resulting tool should be published under the terms of the MIT license.

Requirements

The successful applicant should have a good knowledge of the OCaml programming language. A knowledge in the tools used by developers to collaborate to develop Octez would be a nice bonus. This includes git, Gitlab CI, dune, and opam among others.

Internship Context

You will work at the Nomadic Labs’ offices in Paris.
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).

➡️ If you don’t meet all the criteria above, but think you can still be an asset to us, please consider applying.