1. Homepage
  2. > Careers >
  3. React/Reason programming on a wallet application in a blockchain setting

React/Reason programming on a wallet application in a blockchain setting

Paris

Internship

R&D

Position

Nomadic Labs is looking for React/Reason programming on a wallet application in a blockchain setting intern.

Tutors: Rémy El Sibaïe, Pierrick Couderc


The Tezos Blockchain is a decentralized system, relying on a peer-to-peer network, and whose consensus algorithm is based on a proof of stake protocol Tezos introduces the tez token on the economic layer and features smart-contracts written in the Michelson language. Storing and exchanging tez, as usually done in the crypto-currency world, use exchanges and client wallet applications with software or hardware secured storage. Umami is a wallet developed at Nomadic Labs, the main contributor of the reference implementation of Tezos named Octez. Umami is designed to handle the main operations of a Tezos client (including transfer and delegation), to manage local accounts securely, and to permit interaction with community APIs and with smart contracts.


Goals

The goal of this internship is to introduce the intern into a development team for for client-servers based application interacting with a blockchain network, and in particular for Umami. The intern will have to use several concepts and technologies:

  • ReasonML: a functional programming language with a strong, static type system
  • React: a popular framework for Web-client programming with reactive systems
  • Client-server+blockchain architecture: some constraints are unique to decentralized networks and have a huge impact on this kind of application
  • Software engineering good practices: advanced git usage, writing clean merge requests, code peer-reviewingThe specific feature will be decided at the beginning of the internship, based on in-tern’s interests and with input from the community. Examples of features include: a new kind of blockchain operation; additions to Tezos’ smart contract language Michelson; changes in the consensus algorithm; and new economic incentives or adjustments to existing incentives.

Proficiency in these technologies is not required. If necessary, the intern will start learning technologies by developing simple tasks, and then be introduced to a wider subject on which they will have more autonomy.


Requirements

The intern should know about functional programming and have experience, through studies or internship, with at least one language of this category (OCaml, Reason, Haskell, Scala, Closure, etc.). The intern should have experience, through studies or internship, with at least one of web client programming or mobile applications programming, e.g., Javascript frameworks (react, angular, etc), Android/iOS, others. The intern should be able to take initiatives and be as independent as possible to solve the different problems faced. They should value code quality, listening carefully to given instructions and a good ability to learn.


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.

Apply now

Send us your application

    Resume*

    Application letter

    By submitting this form, I accept that the information entered will be used as part of my request.