Mina Protocol – Les Snapps, des applications décentralisées aux propriétés étonnantes
Après avoir présenté le fonctionnement de Mina Protocol dans un précédent article, nous allons nous attarder sur ses spécificités. En quoi cette nouvelle plateforme d’applications décentralisées se démarque-t-elle de la concurrence ?
Cet article vous est proposé dans le cadre d’une campagne de communication éducative, et soutenue par Mina Protocol.
Mina n’est pas seulement la blockchain la plus légère du marché. Grâce aux preuves à divulgation nulle de connaissance (les zk-SNARKs), les développeurs peuvent déployer des applications décentralisées d’un nouveau type. Appelées Snapps (abréviation de Snarkified Applications), elles héritent des propriétés intrinsèques des blockchains, mais aussi des possibilités offertes par les preuves SNARK.
Les Snapps, des applications décentralisées utilisant les zk-SNARKs
Les Snapps sont similaires aux applications décentralisées (dApps) d’Ethereum. Cependant, elles bénéficient de propriétés additionnelles. En effet, les zk-SNARKs offrent de nouvelles possibilités :
- On peut vérifier l’intégrité d’un jeu de données sans avoir connaissance de ces dernières ;
- De même, l’exactitude d’une séquence de calculs complexe peut être rapidement prouvée ;
- Enfin, la taille succincte des preuves offre de grands bénéfices en termes de scalabilité.
Comme l’équipe de O(1) Labs le résume :
Snapps = dApps + confidentialité + données hors-chaîne + scalabilité
Les zk-SNARKs sont des preuves cryptographiques. Elles permettent de certifier l’exactitude d’une séquence de calcul sans avoir connaissance de cette dernière. De même, ces preuves permettent de valider l’authenticité de données qui ne sont pas publiques.
L’intégration des preuves SNARKs au sein de Mina Protocol étend le champ des possibilités. De nouvelles applications peuvent voir le jour, basées sur la confidentialité des données de l’utilisateur.
Déploiement d’une Snapp sur Mina Protocol
Il y a une différence majeure entre la façon dont une dApp est exécutée sur Ethereum et le mode de fonctionnement des Snapps. Sur Ethereum, chaque nœud doit exécuter les mêmes calculs. Sur Mina, le développeur d’applications exécute ces calculs une seule fois, et fournit ensuite des preuves cryptographiques à l’ensemble du réseau. Bien qu’il soit possible d’utiliser des SNARKs sur la couche secondaire d’Ethereum, les applications restent limitées par le débit de la chaîne principale. Les Snapps bénéficient, quant à elles, de la scalabilité de Mina Protocol.
Le déploiement d’une application décentralisée sur Mina comporte plusieurs étapes :
- Identification du code à exécuter. S’il n’est pas open-source, il sera rendu public.
- Le code est ensuite utilisé pour déployer un circuit SNARK, via un appel de fonction sur Mina.
- Les données à traiter sont ensuite sourcées.
- Les fonctions à exécuter sont appelées en y injectant les données pertinentes.
- Les calculs sont ensuite exécutés on-chain, de façon similaire à l’exécution d’un smart contract sur Ethereum. Pour l’instant, les smart contracts ne sont pas implémentés (ils verront le jour de 6 à 12 mois après la mise en service du mainnet).
- La preuve (SNARK) générée est ensuite attachée à une adresse Mina.
- La transaction est validée puis exécutée par le protocole après vérification de la preuve.
Comptes et outils de gestion des preuves
Techniquement, le protocole Mina fonctionne avec un système de comptes, comme Ethereum. Un nouveau type de compte permet d’intégrer les zk-SNARKs (snapp account). En plus de l’adresse publique et du solde, il comporte une clé de vérification pour les preuves et l’état du compte.
Lors d’une transaction d’un compte standard à un compte Snapp, l’état du compte Snapp est mis à jour, tout comme son solde. Dans le cas d’une transaction entre deux comptes Snapp, les soldes et les états respectifs des deux comptes sont modifiés simultanément.
Afin de faciliter le travail des développeurs, O(1) Labs a développé un premier outil dédié à la génération des preuves (Snarky) et travaille à étendre leur toolkit. Le calcul des preuves requises pour déployer une application devrait être effectué en un clic. Les développeurs pourront intégrer ces outils de génération et de vérification des preuves au sein leurs applications.
Les Snapps en pratique : plusieurs exemples
Il existe de nombreux cas d’usage des preuves à non-divulgation de connaissance. Les domaines de l’identité numérique, des données médicales ou financières seront probablement impactés par cette technologie.
La preuve de document d’identité authentique
L’idée est de prouver que l’on possède un document d’identité authentique sans pour autant révéler ce document.
Aujourd’hui, il est nécessaire d’effectuer une procédure KYC pour chaque plateforme web que l’on utilise. Grâce à Mina, une seule vérification suffira.
L’utilisateur va envoyer un scan ou une photo de sa pièce d’identité sur l’application gérant le processus de connaissance client. Dans le même temps, un wallet Mina lui sera attribué. Une fois la vérification effectuée par l’application tierce, un hash du document et la preuve SNARK seront attachés à son wallet. Il n’aura ensuite qu’à fournir ce couple (hash + preuve) pour ses futurs KYC. Bien entendu, tout passera par l’interface graphique de l’application.
Mina permet donc aussi de créer un système d’authentification privé, utilisable par n’importe quel site ou service Internet. Il sera possible de se connecter à un site web sans créer de compte, ou fournir de données personnelles. Une fois une adresse e-mail liée à un compte Mina, il est possible, grâce aux Snapps, de prouver que l’on est bien propriétaire de la boîte mail sous-jacente, sans révéler son adresse. L’équipe de développement compte bien fournir un prototype cette année.
La preuve de solvabilité
Il s’agit de prouver que l’on possède un solde minimum en crypto sans pour autant divulguer le montant de ses avoirs.
Par exemple, l’utilisateur souhaite utiliser une application de prêt en cryptomonnaies. Afin de contracter ce prêt, l’application va lui demander de prouver qu’il possède un compte sur une plateforme de change, dont le solde est supérieur à 10,000 dollars. Il va alors se connecter à ladite plateforme. L’application de lending va ensuite vérifier localement que son solde remplit le critère. Elle va ensuite générer une preuve SNARK (toujours en local) avant de l’attacher au wallet Mina de l’utilisateur.
Ce dernier pourra ensuite prouver qu’il est bien le propriétaire de ce wallet en signant la preuve SNARK à l’aide de sa clé privée. Il est aussi possible d’utiliser ces preuves de solvabilité dans le monde financier traditionnel.
Le vote privé
L’utilisation des zk-SNARKs permet également de concevoir des systèmes de vote privé. Il est possible d’organiser une élection accessible en fonction de certains critères, sans divulguer l’identité ou le choix des participants. Pour autant, le résultat de l’élection sera vérifiable publiquement à l’issue de la période de vote.
Les oracles web sans permission
Grâce à Mina Protocol, les développeurs peuvent inclure au sein de leurs applications des données privées et vérifiées, issues du monde réel. Par exemple, on peut envoyer un paiement crypto après avoir reçu la preuve d’un virement bancaire. On peut émettre un NFT une fois qu’un tweet a dépassé un certain nombre de likes, etc.
Les oracles actuels nécessitent l’accès à des serveurs sources sous permission, et peuvent divulguer des données utilisateur sensibles aux contreparties. Les preuves SNARK utilisées sur Mina confèrent plus de confidentialité, et permettent d’intégrer toute source de données publiques sans permission du serveur.
En effet, les Snapps peuvent interagir avec le protocole HTTPS pour créer des preuves vérifiables. Il est ainsi possible de s’assurer que telle donnée était bien présente sur tel serveur à un horaire spécifique.
Mina Protocol, Snapps et développement
Il est possible d’imaginer pléthore d’applications décentralisées basées sur les zk-SNARKs, confidentielles et vérifiables. On peut imaginer de nouveaux systèmes d’authentification respectueux de la vie privée. Les développeurs pourront implémenter les preuves SNARK au sein de leurs applications grâce aux outils fournis par O(1) Labs. La fondation Mina offre en prime des opportunités aux codeurs qui rejoindront Mina Protocol avec son programme de subventions.