13
Stages à Nomadic Labs Entreprise de recherche et développement avec de fortes compétences en théorie des langages de programmation, en systèmes distribués et en vérification formelle, nous nous eorçons de transférer rapidement le meilleur de la recherche académique vers des applications déployées à grande échelle. Notre activité principale actuelle est de contribuer au développement du coeur logiciel de la blockchain Tezos, incluant son langage de smart-contract, Michel- son, ainsi que de développer des outils de vérification formelle pour les smart- contracts et d’appliquer les méthodes formelles à la vérification des divers com- posants du logiciel que nous développons. De plus, notre équipe de développe- ment mobile produit le wallet Cortez. Propositions de sujets • Cartographie, observation et analyse du réseau p2p • Interfaçage du code de Tezos pour de multiples langages • Profilage énergétique de Tezos • Types linéaires pour données sécurisées • Outillage web pour la preuve de smart-contracts en Coq • Michelson par l’example: plateforme pédagogique web pour la program- mation de smart-contracts • Spécification OpenAPI pour Tezos • Environnement de test de protocoles • Implantation de schéma de preuve à divulgation nulle • Preuves à divulgation nulle pour le calcul hors chaîne Contexte du stage Le ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, à Paris ou à Grenoble. Participant à un projet open-source auquel contribuent plusieurs équipes ré- partie dans de multiples pays, il faudra prendre en main les outils de collab- oration autour du code (git, merge request, issue gitlab, intégration continue, documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail. Notamment, le travail pourra faire l’objet d’une présentation à une conférence ou un atelier avec une audience internationale. Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs, devra faire preuve d’autonomie et proposer de manière réfléchie des solutions aux diérents problèmes qu’il ou elle rencontrera. Propriété Intellectuelle Toutes les productions (rapport, documentation, code, etc) seront distribuées sous une licence libre (ex: MIT ou CC). B Paris-Grenoble, France m https://www.nomadic-labs.com @ [email protected] Situés en France à Paris et Grenoble, nous sommes experts en recherche et développement de produit et services dans les domaines des systèmes distribués, décentralisés et de leur vérification formelle.

Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Stages à Nomadic LabsEntreprise de recherche et développement avec de fortes compétences en théoriedes langages de programmation, en systèmes distribués et en vérification formelle,nous nous e�orçons de transférer rapidement le meilleur de la recherche académiquevers des applications déployées à grande échelle.Notre activité principale actuelle est de contribuer au développement du coeurlogiciel de la blockchain Tezos, incluant son langage de smart-contract, Michel-son, ainsi que de développer des outils de vérification formelle pour les smart-contracts et d’appliquer les méthodes formelles à la vérification des divers com-posants du logiciel que nous développons. De plus, notre équipe de développe-ment mobile produit le wallet Cortez.Propositions de sujets

• Cartographie, observation et analyse du réseau p2p• Interfaçage du code de Tezos pour de multiples langages• Profilage énergétique de Tezos• Types linéaires pour données sécurisées• Outillage web pour la preuve de smart-contracts en Coq• Michelson par l’example: plateforme pédagogique web pour la program-mation de smart-contracts• Spécification OpenAPI pour Tezos• Environnement de test de protocoles• Implantation de schéma de preuve à divulgation nulle• Preuves à divulgation nulle pour le calcul hors chaîne

Contexte du stageLe ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.Propriété IntellectuelleToutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

B Paris-Grenoble, Francem https://www.nomadic-labs.com@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 2: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Cartographie, observation et analyse du réseau p2pEncadrants : Julien Tesson, Ilias Garnier, Mathias Bourgoin

Les blockchains sont des systèmes décentralisés implémentant un algorithmede consensus sur un réseau pair à pair reliant de multiples nœuds constituantun réseau global.

L’algorithme de consensus implémenté dans Tezos apporte une certaine résilienceà ce système et en garantit le bon fonctionnement général, même en cas dedysfonctionnement du réseau pair-à-pair sous-jacent. Néanmoins, un réseauen bonne santé permet une di�usion plus rapide des messages et réduit lesdivergences temporaires dues à cette vision partielle du réseau.

Il est donc important de pouvoir comprendre la forme du réseau, son évolution,et de mesurer son état de santé et sa résilience. Si la nature décentralisée duréseau et la forte dynamicité des connexions rendent impossible une cartogra-phie exhaustive de celui-ci, les informations partielles fournies par les nœudssur leur voisinage, et les décalages temporels dans la réception des messagespeuvent être exploités afin d’inférer certaines informations.

Objectif du stage

L’objectif de ce stage est de développer des outils d’analyses du réseau pair-à-pair de la blockchain Tezos. En se basant sur un travail pré-existant, le oula stagiaire produira un nœud cartographe, capable de calculer des métriquessimples sur le réseau, comme les temps de vie des nœuds du réseau, une esti-mation de la taille du réseau ainsi que de son diamètre.

Pour a�ner les résultats obtenus par ce cartographe, on envisagera le dé-ploiement d’un essaim de cartographes et le développement de techniques pourcroiser les résultats de ces cartographes. Le nœud cartographe pourra êtremodifié pour monitorer l’état de santé du réseau.

Dans un deuxième temps, des analyses statistiques des données recueillies parles nœuds d’observation du réseau seront conçues afin d’inférer des informa-tions sur la topologie du réseau.

Profil

Le ou la candidate devra avoir une bonne connaissance du langage de program-mation OCaml et idéalement des compétences en analyse statistique, à defaut ilou elle sera prêt à explorer la litterature sur l’estimation statistique de propriétésstructurelles de graphes.

Contexte du stage

Le ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.

Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.

Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.

Propriété Intellectuelle

Toutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

B Paris-Grenoble, France

m https://www.nomadic-labs.com

@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 3: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Interfaçage du code de Tezos pour de multiples langagesEncadrant: Pietro Abate

Les blockchains sont des systèmes décentralisés implémentant un algorithmede consensus sur un réseau pair à pair reliant de multiples nœuds constituantun réseau global. La base de code de Tezos à laquelle nous nous attachons estentièrement écrite en OCaml qui est un langage fonctionnel fortement typé.Actuellement, pour construire une application au dessus de la plateforme Tezos,les développeurs sont souvent dans l’obligation de réécrire des briques de basespour interfacer leurs applications avec le réseau Tezos. Ces applications sontsouvent écrites en utilisant d’autres langages de programmation qu’OCaml, sou-vent dédiées à des platformes spécifiques comme Swift ou Kotlin.But du stageL’objectif principal de ce stage et de rendre la base de code Tezos, en particulierles bibliothèques client, directement accessibles à ces plateformes. Ainsi il de-viendrait inutile de réimplanter des fonctionnalités basiques, ce qui permettraitaux développeurs de concentrer leurs e�orts sur le coeur de leurs applications.OCaml o�re un puissant outil pour construire des interfaces (bindings) avecC/C++ de façon semi-automatique: la bibliothèque Ctypes. En s’appuyant surcelle-ci, les di�érentes phase de ce projet pourront se découper comme suit :

• Compléter, tester et distribuer une interface existante d’OCaml vers C/C++pour Tezos• Créer un prototype de démonstration en écrivant un binding Python basiqueexploitant l’interface C/C++ pour Tezos développée auparavant.• En fonction du temps, concevoir un interfaçage complet pour Python, Rust,Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer.De possibles challenges, au delà des potentielles di�cultés techniques sont :

• la conception d’une bibliothèque utilisable et moderne, adaptée à chaquecible et langage• la distribution et le test de la bibliothèque Tezos en s’appuyant sur desoutils à la pointe dans ces domaines• compiler et tester la bibliothèque Tezos sur di�érentes architectures etenvironnements• apprendre comment utiliser les outils d’intégration continue pour intégrerce travail dans la base de code existante.ProfilLe ou la candidate devra avoir une bonne connaissance des langages de pro-grammation OCaml et C/C++. Des connaissances en Python, Kotlin/Android ouSwift/OSX/iOS seront un plus même si non essentielles.Contexte du stageLe ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.Propriété IntellectuelleToutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

B Paris-Grenoble, Francem https://www.nomadic-labs.com@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 4: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Profilage énergétique de TezosLes blockchains sont des systèmes décentralisés gérés à l’aide d’un réseau pairà pair réparti. Di�érentes entités peuvent interagir avec/au sein de ce réseau :des nœuds qui répliquent l’état de la chaîne, des validateurs qui gèrent la validitédes nouvelles opérations et les regroupent en blocs, etc. Ces entités peuventêtre très di�érentes et spécifiques à chaque blockchain. La plupart de celles-cisont portables sur plusieurs architectures. Ainsi, le réseau peut également êtretrès hétérogène en termes de matériel.

L’empreinte énergétique de chaque entité peut également être très di�érente.Par exemple, la consommation d’énergie élevée des validateurs des systèmesbasés sur la preuve de travail (proof of work, p. ex. les mineurs de Bitcoin) estbien connue et étudiée1. Les blockchains basées sur la preuve d’enjeu (proofof stake) sont beaucoup plus légères et consomment moins d’énergie que leurshomologues basées sur la preuve du travail.

Objectif du stage

L’objectif de ce stage est d’estimer la consommation d’énergie de la blockchainTezos basée sur la preuve d’enjeu. En utilisant des noeuds et des validateursmodifiés, le ou la stagiaire devra d’abord profiler la consommation d’énergie dechaque entité dans un environnement contrôlé en utilisant di�érents scénarios.Ensuite, il ou elle appliquera ses mesures au réseau réel pour estimer la consom-mation réelle de l’ensemble de la chaîne de blocs, en comparant ses résultatsaux mesures existantes (ou en réalisant de nouvelles mesures si nécessaires)sur d’autres blockchains.

Profil

Le ou la candidate devra avoir une bonne connaissance du langage de program-mation OCaml. Une connaissance de di�érentes architectures matérielles seraitun plus.

Contexte du stage

Le ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.

Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.

Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.

Propriété Intellectuelle

Toutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

1https://ieeexplore.ieee.org/document/6912770

B Paris-Grenoble, France

m https://www.nomadic-labs.com

@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 5: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Types linéaires pour données sécuriséesEncadrants : Pietro Abate, Julien Tesson

Les blockchains sont des systèmes décentralisés implémentant un algorithmede consensus sur un réseau pair à pair reliant de multiples nœuds constituantun réseau global. Tezos est un blockchain et une plateforme de smart-contractsdéveloppée en s’attachant à la gouvernance et la sécurité. La base de code deTezos est écrite en OCaml qui est un langage fonctionnel statiquement typé.La partie client qui interagit avec la blockchain Tezos, aussi appelé wallet, estun composant logiciel (parfois couplé à un système matériel sécurisé) chargéde sécuriser les clés secrètes et les identités des utilisateurs.Les types linéaires garantissent qu’une valeur ne peut être utilisée qu’une seulefois; ils peuvent être utilisés pour analyser statiquement des comportementsdes programmes tels que l’utilisation de ressources ou des protocoles de com-munication.Objectifs du stagePour améliorer la sécurité du composant critique qu’est le client Tezos, nousproposons d’encoder le type des données sensibles à l’aide de types linéaires.En particulier, ce stage demandera d’étudier la publication récente “Lightweightlinearly-typed programming with lenses and monads”1 pour:

• détecter à la compilation les éventuelles fuites de données secrètes,• encoder un système de verrouillage et e�acement (lock and wipe) garan-tissant que les secrets ne sont jamais écrits sur disque• intégrer ces solutions dans l’implantation courante du client TezosPossibles défis:

• apprendre à encoder des types linéaires en OCaml en utilisant des lentilles(lenses) et des monades• apprendre de possibles scénarios de fuite de secrets• comprendre et modifier la base de code Tezos• concevoir une spécification formelle de l’encodage des secrets à l’aie detypes linéairesProfilLe ou la candidate devra avoir une bonne connaissance du langage de program-mation OCaml et aura idéalement suivi un cours sur la théorie des types ou sauradémontrer un intérêt particulier pour ce domaine.Contexte du stageLe ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.Propriété IntellectuelleToutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

1https://www.math.nagoya-u.ac.jp/~garrigue/papers/linocaml-201902.pdf

B Paris-Grenoble, Francem https://www.nomadic-labs.com@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 6: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Outillage web pour la preuve de smart-contracts en CoqEncadrants : Raphaël Cauderlier, Julien Tesson

Les blockchains sont des registres décentralisés gérés à l’aide d’un réseau pairà pair réparti. Tezos est une blockchain et une plateforme de smart contractdéveloppée avec une volonté de produire un outil sécurisé et o�rant des solu-tions de gouvernance décentralisée.Michelson est le langage de smart contract de Tezos. c’est un langage basniveau à pile, à la Forth, mais intégrant des primitives de haut niveau (itéra-teurs, primitives cryptographiques, . . . ). Il a été conçu pour faciliter la vérifica-tion formelle des smart-contracts.Le projet MiChoCoq1, développé à Nomadic Labs, fournit une formalisation dela sémantique des programmes Michelson ainsi qu’un calcul de plus faible pré-condition implémentés en Coq .Objectifs du stageLe but du stage sera de rendre le projet MiChoCoq utilisable sur le web à l’aide del’outil JsCoq2, et de fournir un outils web intégré pour développer et présenteren ligne les spécifications d’un smart contract et leurs preuves.Selon l’avancement du stage, ce travail pourra être lié au projet try-michelson3,pour avoir une solution web intégrant à la fois la conception, la simulation etla preuve de correction de programmes Michelson dans un service facilementaccessible en ligne.ChallengesEn sus des di�cultés techniques liées au déploiement d’un service en ligne, lesdéfis à relever dans de ce projet sont :

• Apprendre à utiliser et installer JsCoq• Intégrer MiChoCoq dans JsCoq pour le fournir comme théorie prédéfinie.• Ajouter des lemmes et des tactiques pour faciliter la preuve de smart con-tract Michelson.• Fournir une bibliothèque facilement explorable de smart contract et deleur preuve qui puissent être utilisée comme démonstrateur de MiChoCoq.• Lier les services MichoJSCoq et try-michelson.ProfilLe ou la candidate devra être familiarisée avec Coq et OCaml, et avoir une ap-pétence pour la conception de site web. Il ou elle travaillera en collaborationétroite avec l’équipe de développement de MiChoCoq et de Tezos à Nomadic-Labs.Contexte du stageLe ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.Propriété IntellectuelleToutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

1https://gitlab.com/nomadic-labs/mi-cho-coq/2https://x80.org/rhino-coq/3https://try-michelson.tzalpha.net

B Paris-Grenoble, Francem https://www.nomadic-labs.com@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 7: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Michelson par l’example: plateforme pédagogique web pour la programmation de smart-contractsEncadrants: Pietro Abate, Alexandre Doussot

Les blockchains sont des registres décentralisés gérés à l’aide d’un réseau pair àpair réparti. Tezos est une blockchain développée avec une volonté de produireun outil sécurisé en appliquant l’état de l’art de la vérification formelle et o�rantdes solutions de gouvernance décentralisée.Tezos est également une plateforme de smart contracts: de petits programmes,déployés dans la chaîne, qui implémentent des logiciels financiers.Les smart contracts pour Tezos sont écrits en Michelson 1, un language à pileinspiré par Forth, Scheme, ML et Cat. Il n’existe pas, actuellement, de tutoriel enligne adapté pour des débutants qui souhaiteraient expérimenter et apprendrela programmation en Michelson.Objectifs du stageCe stage est la continuation du développement d’un interprète Michelson inté-gré dans une page web qui diminue déjà considérablement la barrière d’entréedans Michelson.Il se deroulera en deux parties. D’abord il faudra rendre l’interprète embarquabefacilement dans d’autres page web, afin de permettre aux auteurs de smart-contracts d’intégerer des demonstrations de leur programmes dans divers for-mat de pages web (blog, wiki, cms, . . . ).Ensuite, une tutoriel de programmation Michelson ecrit autour d’exmaples seradéveloppé dans l’esprit de la page web “Rust by Example” 2. Ce tutoriel utiliseral’interprète embarqué pour executer les exemples et fournira des exercices deprogrammation qui pourront être corrigés automatiquement dans le navigateur.Si l’avancement le permet, le tutorial pourra également introduire la spécifi-cation formelle et la vérification de smart contracts en s’inspirant du tutoriel“ACSL by Example” 3. Cette partie se fera en collaboration avec un autre stageà Nomadic Labs portant sur le développement d’un outil en ligne de verificationde programme Michelson basé sur Coq.ChallengesEn sus des di�cultés techniques liées au déploiement d’un service en ligne, lesdéfis à relever dans de ce projet sont :

• Apprendre à écrire des programmes Michelson• Développer un tutoriel pour Michelson en portant une attention partic-ulière à la progressivité de l’apprentissage.• Lier le service “Michelson by Example” à try-michelson et potentiellementà JSCoq pour la partie vérification formelle.• Apprendre et enseigner la vérification formelle de programmes MichelsonProfilLe ou la candidate devra être familiarisée avec OCaml, et avoir une appétencepour la conception de site web et la pédagogie. Une connaissance de ReasonMlest un plus - try-michelson est écrit en ReasonMl - mais n’est pas essentiel. Ilou elle travaillera en collaboration étroite avec l’équipe de développement deMiChoCoq et de Tezos à Nomadic-Labs.Contexte du stageLe ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.

1http://tezos.gitlab.io/whitedoc/michelson.html2https://doc.rust-lang.org/rust-by-example/3https://github.com/fraunhoferfokus/acsl-by-example

B Paris-Grenoble, Francem https://www.nomadic-labs.com@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 8: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.Propriété IntellectuelleToutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

Page 9: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Spécification OpenAPI pour TezosOpenAPI est un format standard de description d’API REST, utilisé par de nom-breux projets. Il existe de nombreux outils pour utiliser une telle spécificationpour générer de la documentation ou créer automatiquement des bindings dansde nombreux langages de programmation.Nous disposons à l’heure actuelle d’une bibliothèque prototype pour générer laspécification OpenAPI de tous les services Tezos.Objectifs du stageLe but de ce stage est :

• de compléter, tester et intégrer cette bibliothèque dans la base de codede Tezos ;• d’utiliser les spécifications générées pour compléter la documentation del’interface RPC du noeud Tezos ;• d’utiliser les spécifications générées pour créer automatiquement des bind-ings pour de multiples langages (Python, Rust, Kotlin et Swift) ;• de contribuer au générateur actuel utilisant OpenAPI 2.0, afin de fonction-ner avec OpenAPI 3.0.

ChallengesCe stage présente de nombreux challenges techniques :Premièrement il faudra prendre en main l’interface RPC de Tezos et l’étendrepour générer automatique des entrées OpenAPI. Ceci requiert une maîtrise su�-isante du langage OCaml et de comprendre l’architecture de Tezos.Ensuite, il faudra apprendre à utiliser des outils de génération automatique dedocumentation, et éventuellement les modifier pour les adapter à nos besoinou en corriger les défauts. La documentation générée devra aussi contenir desexemples, certains peuvent être générés automatiquement, d’autres requièrentune intervention humaine.Enfin, afin de générer les bindings pour di�érents langages, il faudra se famil-iariser rapidement avec de multiples paradigmes de programmation et appren-dre à concevoir des bibliothèques utilisant les constructions idiomatiques deslangages considérés.ProfilUne connaissance d’OCaml/ReasonML est nécessaire.Connaître Python, Rust, Kotlin/Android SDK, Swift/OSX est un plus mais n’estpas indispensable.L’étudiant(e) travaillera avec les équipes de développement du noeud Tezos etde l’application mobile à Nomadic labs.Contexte du stageLe ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.Propriété IntellectuelleToutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

B Paris-Grenoble, Francem https://www.nomadic-labs.com@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 10: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Environnement de test de protocolesEncadrants : Mathias Bourgoin, Julien Tesson

Les blockchains peuvent être vues comme des livres de comptes décentraliséss’appuyant sur un réseau pair-à-pair distribué.

Di�érents acteurs interagissent avec/depuis ce réseau: des noeuds qui répliquentl’état du livre de comptes, des validateurs qui gèrent la validation des opérationset les agrège dans des blocs, etc. Lorsque des noeuds divergent (produisant unfork) à cause de la latence du réseau ou d’autres di�cultés techniques, le proto-cole de consensus de la chaîne s’assure qu’après un nombre minimal de blocsils se seront mis d’accord sur la branche canonique de la chaîne et donc surl’état de celle-ci. Ce protocole est ainsi responsable de la validation des blocs,mais aussi des opérations qui transitent sur la chaîne.

Tezos est une blockchain auto-amendable: elle peut mettre à jour son proto-cole de consensus de façon transparente, à travers un processus de vote sur lachaîne. Ceci en fait une blockchain qui peut mettre à jour ce composant essentielrapidement et ainsi profiter de toutes les avancées dans ce domaine au plus vite.Cependant, pour tester les idées novatrices, les développeurs de protocoles ontbesoin d’outils, en particulier, ils ont besoin d’être capables de déployer facile-ment une chaîne de test incluant leur nouveau protocole et d’évaluer son com-portement.

Objectif du stage

L’objectif de ce stage est de développer un outil clé en main de test de protocolepour la blockchain Tezos. D’abord, il devra permettre de définir simplement unbloc genèse (qui initialise les comptes initiaux et leurs droits) et les propriétésde l’algorithme de consensus choisi. Il devra permettre le déploiement de dif-férents noeuds et validateurs sur un réseau hétérogène. Enfin il devra permettrel’évaluation de la chaîne déployée.

Profil

Le ou la candidate devra avoir une bonne connaissance du langage de program-mation OCaml.

Contexte du stage

Le ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.

Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.

Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.

Propriété Intellectuelle

Toutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

B Paris-Grenoble, France

m https://www.nomadic-labs.com

@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 11: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Implantation de schéma de preuve à divulgation nulleEncadrants : Marco Stronati, Marc Beunardeau

Les blockchains sont des systèmes décentralisés implémentant un algorithmede consensus permettant de mettre d’accord les noeud d’un réseau pair à pairsur les transactions intégrée dans un registre décentralisé.Tezos est une blockchain dotée de smart-contracts et dont la particularité estd’une part d’o�rir des mécanismes de gouvernance intégrés aux règles de fonc-tionnement de la chaîne et d’autre part d’être conçue pour faciliter la vérificationformelle de ces composants.

Objectif du stage

Ce stage a pour objectif l’implantation d’un prouveur zero-knowledge en OCamlet d’un vérificateur de preuve en Michelson, le langage de smart-contract deTezos.

Un prouveur zero-knowledge et d’un vérificateur de preuve ont déjà été implantépour Tezos permettant l’anonymisation de transactions. Le schéma de ce prou-veur/vérificateur, bien qu’e�cace, requiert un trusted setup, une initialisationpar des paramètres qui doivent être ensuite détruits pour assurer l’anonymité.

Nous souhaiterions avoir la possibilité d’ajouter des propriétés prouvables auxtransactions anonymes, par ex. les jetons transférés viennent d’une liste blanchede comptes. Pour cela nous avons besoins d’un autre programme, nécessitantun autre trusted setup par application spécifique. Cette étape peut être con-tournée en utilisant des schémas ne nécessitant pas d’avoir confiance dans leprocessus de génération des paramètres initiaux. C’est ce type de schéma quidevra être implanté durant le stage.

Déroulement du stage

Le stage se déroulera en deux parties:

Tout d’abord, après avoir analysé l’état de l’art des schémas de preuve à di-vulgation nulle et les di�érents compromis au regard des besoins spécifiques àTezos, le ou la stagiaire sélectionnera celui qui convient le mieux.

Dans un second temps, le schéma choisi sera implanté: le prouveur et l’initialisationseront implantés en OCaml et intégrés à la base de code de Tezos. Puis, le vérifi-cateur sera implanté en Michelson, ce qui nécessitera l’implantation préalabled’une librairie de courbe elliptique pour Michelson.

Profil

Le ou la stagiaire aura une bonne connaissance d’OCaml ainsi que des basesd’algèbre et de cryptographie.

Il ou elle devra être en mesure de comprendre des articles de recherche et demettre en application les méthodes présentées.

La personne recrutée sera aidée pour la prise en main de la base de code deTezos, du langage Michelson, des problèmes spécifiques aux blockchains et auxpreuves à divulgation nulle en général.

Contexte du stage

Le ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.

Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.

Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.

Propriété Intellectuelle

Toutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

B Paris-Grenoble, France

m https://www.nomadic-labs.com

@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.

Page 12: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles
Page 13: Propositions de sujets - Nomadic Labs · 2020-06-22 · Kotlin et/ou Swift en utilisant les constructions idiomatiques de ces lan-gages, les tester, et les distribuer. De possibles

Preuves à divulgation nulle pour le calcul hors chaîneEncadrants : Marco Stronati, Marc Beunardeau

Les blockchains sont des systèmes décentralisés implémentant un algorithmede consensus permettant de mettre d’accord les noeud d’un réseau pair à pairsur les transactions intégrée dans un registre décentralisé.Tezos est une blockchain dotée de smart-contracts et dont la particularité estd’une part d’o�rir des mécanismes de gouvernance intégrés aux règles de fonc-tionnement de la chaîne et d’autre part d’être conçue pour faciliter la vérificationformelle de ces composants.

Les smart-contracts sont des programmes ré-exécutés par tous les noeuds duréseau pour vérifier l’intégrité des calculs. Ceci impose des limites strictes surles ressources de stockage et de calcul qu’ils peuvent utiliser. En principe, iln’est nécessaire de vérifier qu’une preuve de correction de l’exécution, et pourcertains programmes complexe cette vérification peut être plus économe enressources que la ré-exécution. Plusieurs schémas de preuves à divulgationnulle proposent des preuves “succinctes”, de petite taille par rapport à la tailledu programme et vérifiable en un temps court. De plus, l’aspect divulgation nullede ces preuves permet de protéger la confidentialité du calcul ou des donnéesutilisées.

Objectif du stage

Le but du stage est d’utiliser des preuves à divulgation nulle pour prouver, dansla chaîne, l’intégrité des calculs e�ectués hors-chaîne. Le calcul pouvant êtredéfini de façon arbitraire par l’utilisateur ou être choisi dans une collection demodèles.

Déroulement du stage

La première partie du stage sera dédiée à la familiarisation avec la blockchainTezos et avec l’état de l’art de schémas de preuve à divulgation nulle pour lecalcul hors chaîne. Zexe et ZoKrates sont des pistes prometteuses. De plus,quelques applications de référence seront conçues.

Dans un second temps, le schéma choisi sera implanté sous forme de biblio-thèque OCaml, utilisable par des langages de smart-contract de haut niveaupour Tezos (LIGO, SmartPy). Une ou plusieurs applications de référence serontimplantées avec cette bibliothèque.

Profil

Une connaissance opérationnelle d’OCaml est nécessaire et une connaissancede Rust est un plus.

La compréhension basique de la cryptographie à courbe elliptique et des sché-mas de preuve à divulgation nulle est un plus également.

Enfin, le ou la stagiaire devra être en mesure de comprendre des articles derecherche et de mettre en application les méthodes présentées.

Contexte du stage

Le ou la stagiaire travaillera dans les locaux de l’entreprise Nomadic Labs, àParis ou à Grenoble.

Participant à un projet open-source auquel contribuent plusieurs équipes ré-partie dans de multiples pays, il faudra prendre en main les outils de collab-oration autour du code (git, merge request, issue gitlab, intégration continue,documentation) et communiquer en anglais à l’écrit et à l’oral sur son travail.Notamment, le travail pourra faire l’objet d’une présentation à une conférenceou un atelier avec une audience internationale.

Le ou la stagiaire, qui aura un encadrant référent au sein de Nomadic Labs,devra faire preuve d’autonomie et proposer de manière réfléchie des solutionsaux di�érents problèmes qu’il ou elle rencontrera.

Propriété Intellectuelle

Toutes les productions (rapport, documentation, code, etc) seront distribuéessous une licence libre (ex: MIT ou CC).

B Paris-Grenoble, France

m https://www.nomadic-labs.com

@ [email protected]

Situés en France à Paris et Grenoble,nous sommes experts en recherche etdéveloppement de produit et servicesdans les domaines des systèmesdistribués, décentralisés et de leurvérification formelle.