Le développement d’applications sur Mina Protocol
Après avoir présenté les applications décentralisées sur la blockchain de Mina Protocol, les Snapps, voyons comment un développeur peut interagir avec le réseau.
Mina est une blockchain légère, scalable et confidentielle, grâce aux preuves à divulgation nulle de connaissance, plus précisément les zk-SNARKs. Les Snapps (abréviation de Snarkified Applications) ont de nombreux cas d’usage, dans des domaines tels que l’authentification, ou le traitement de données privées ou sensibles. Comment les développeurs peuvent-ils implémenter facilement ces preuves SNARK dans leurs applications ?
Cet article vous est proposé dans le cadre d’une campagne de communication éducative, et soutenue par Mina Protocol.
La programmation sur Mina Protocol
Le protocole Mina est développé en OCaml, à l’instar de Tezos. Ce langage de programmation open source est une création française. Il s’agit d’une variante avancée du Caml (Categorical Abstract Machine Language). OCaml permet la programmation impérative, orientée objet et modulaire. Il est fortement typé, ce qui le rend très fiable.
Le langage OCaml est très répandu, et de nombreuses ressources sont disponibles pour le programmeur qui ne le connaîtrait pas. Sur Mina Protocol, le code est compilé via le système de construction Dune, qui fonctionne à base de dossiers, représentant des modules. Les fichiers d’interface contiennent les signatures de types et les structures pour un module.
Les codeurs devront donc parcourir la documentation sur les librairies d’OCaml. Il existe aussi des outils permettant d’obtenir des informations directement à l’intérieur de l’éditeur de code, comme Merlin. La structure de fichiers du dépôt Mina est décrite dans la documentation.
Le code doit respecter certaines directives de style. Elles sont une extension du standard ocamlformat et du Jane Street styleguide.
Les modifications du code source de Mina proposées par la communauté doivent également respecter certains standards. Bien entendu, elles doivent répondre à un réel besoin (correctif, nouvelle fonctionnalité), avoir été testées, et être bien documentées.
Les Sandbox Nodes, des nœuds de test pour Mina
Afin de tester le protocole Mina dans un environnement stable, il faut déployer un Sandbox Node (nœud bac à sable). Ce nœud n’est pas connecté au réseau Mina, mais réplique la configuration du testnet. On peut ainsi créer des comptes multiples, effectuer des transactions entre ces comptes, déléguer, “staker”, produire des SNARK… Le déploiement est effectué via Docker.
Une fois le nœud “bac à sable” déployé via Docker, il tourne en arrière-plan, avec un producteur de blocs et un générateur de preuves SNARK. Il faut ensuite jeter un œil à l’interface en lignes de commandes de Mina.
L’API de Mina Protocol
Pour communiquer avec un nœud Mina, il faut passer par une API en GraphQL. La liste des différentes requêtes est fournie dans la documentation. Au-delà des informations concernant le nœud lui-même, l’API peut fournir des données relatives aux derniers blocs émis sur le réseau. Cependant, pour obtenir des données historiques, il faut posséder un nœud d’archivage. En effet, rappelons-nous que la blockchain de Mina est succincte.
Le logiciel client (Javascript) de Mina Protocol est nécessaire pour générer les paires de clefs, signer et vérifier les messages qui transitent sur le réseau ainsi que signer et diffuser les transactions.
Avis aux développeurs !
Mina est un protocole open source sous licence Apache 2.0. Ainsi, si vous êtes développeur et que vous souhaitez contribuer, rien de plus simple. Il suffit d’entrer en contact avec la communauté via le serveur Discord. Le projet est en pleine construction, et toute contribution sous forme de code, de test ou de documentation est donc la bienvenue.
La société O(1) Labs récompense les contributeurs via un programme de subventions. La plupart des projets récompensés sont focalisés sur la programmation, mais les besoins en design et en développement communautaire sont également au programme. Bien entendu, les simples utilisateurs peuvent aussi tester l’infrastructure des nœuds, rapporter les bugs ou participer aux discussions générales.