Mina Protocol – Comprendre la blockchain la plus légère au monde

Mina Protocol est un projet développé par la société 0(1) Labs, basée à San Francisco. La blockchain de Mina est la plus légère du marché. En outre, le protocole assure protection et confidentialité des données sensibles de ses utilisateurs.

Avec une taille de blockchain limitée à 22 ko (l’équivalent de deux tweets), n’importe quel utilisateur de Mina pourra déployer un nœud complet sur son smartphone. Quel est l’intérêt d’une telle prouesse technique, et comment est-ce réalisable ?

Mina Protocol - Logo

Mina Protocol, une blockchain ultralégère dédiée au contrôle de ses données personnelles

Le degré de décentralisation architecturale d’une blockchain augmente avec le nombre de nœuds chargés de valider les transactions du réseau. Malheureusement, les blockchains actuelles ont une taille très importante, de l’ordre de plusieurs centaines de gigaoctets. Cela accroît la centralisation, car il devient de plus en plus coûteux d’opérer un nœud complet.

Évolution de la taille de la blockchain de Bitcoin au cours du temps.

C’est autour cette problématique qu’Evan Shapiro et Izaak Meckler ont fondé O(1) Labs en 2017. Trois ans plus tard et après une levée de fonds réussie, leur projet phare sort de l’ombre.

Le protocole Mina intègre un outil cryptographique complexe : les preuves à divulgation nulle de connaissance. Ce sont elles qui permettent de réduire drastiquement la taille de la blockchain. Ainsi, n’importe quel utilisateur peut maintenir un nœud complet, même en cas d’usage intensif du réseau.

Toutefois, l’atteinte d’une décentralisation optimale n’est pas la seule raison d’être de Mina Protocol. L’idée globale est de fournir une interface sécurisée entre le monde réel et celui des cryptos, préservant la confidentialité des données sensibles des utilisateurs. Les concepteurs de Mina mettent en avant 3 cas d’usage concrets.

Les cas d’usage de Mina Protocol

Rappelons que la raison d’être d’une blockchain est de se passer de tiers de confiance pour assurer le maintien d’un registre comptable. Ainsi, n’importe quel utilisateur du réseau peut vérifier ce registre et valider son intégrité. Mais dans la pratique, le taux de participation est faible, à cause de l’énorme quantité de données qui doit être stockée par les nœuds validateurs.

Les développeurs de Mina ont une solution élégante pour éliminer ces barrières à l’entrée, basée sur les preuves cryptographiques. Mina Protocol remplace les blocs par des preuves cryptographiques de taille constante et très réduite, appelées zk-SNARKs. Outre les avantages de la décentralisation, notamment une résistance accrue à la censure, cette architecture permet de proposer plusieurs fonctionnalités, axées sur la confidentialité des données des utilisateurs du réseau.

  • La confidentialité des données de bout en bout : le protocole Mina permet à ses utilisateurs d’effectuer des opérations sensibles sur la blockchain, sans avoir à divulguer leurs données personnelles.
  • Des oracles web permissionless : les développeurs pourront intégrer à leurs applications décentralisées de multiples sources de données publiques issues de l’Internet, sans permission.
  • La gestion de ses identifiants web : les utilisateurs pourront utiliser Mina pour accéder à un site ou un service Internet sans avoir à créer de compte et à partager leurs données personnelles. Mina fonctionnera comme une interface pour s’identifier de façon sécurisée sur n’importe quelle plateforme.

Bien entendu, les développeurs peuvent imaginer d’autres applications qui tireront parti de ces innovations. Mina offre l’interopérabilité d’une blockchain publique, tout en bénéficiant du même niveau de confidentialité que celui d’une blockchain privée.

Afin de comprendre son fonctionnement, jetons un œil à ces fameuses preuves cryptographiques, les zk-SNARKs.

Preuves à divulgation nulle de connaissance et zk-SNARKs

Si vous évoluez depuis plusieurs années dans l’univers des cryptomonnaies, ce terme barbare ne vous est pas totalement inconnu. En effet, les zk-SNARKs sont très utilisées au sein des cryptomonnaies dites “anonymes”. Par exemple, on les emploie pour assurer la confidentialité des transactions au sein du réseau ZCash.

zk-SNARK est l’acronyme de zero knowledge Succinct Non-interactive ARgument of Knowledge. Cela pourrait être traduit en français par “preuve succincte non-interactive à divulgation nulle de connaissance”. Avant de nous pencher sur les mots “succincte” et “non-interactive”, il nous faut comprendre ce qu’est une preuve à divulgation nulle de connaissance (zero knowledge proof ou ZKP).

Une preuve à divulgation nulle de connaissance est un protocole cryptographique qui permet de prouver la véracité d’une proposition, sans avoir connaissance de la proposition elle-même.

Je ne détaillerai pas ici le fonctionnement des ZKP. Elles feront l’objet d’un article technique à part entière.

Dans le cas des zk-SNARKs, les preuves sont :

  • Succinctes : la taille des preuves générées est très réduite, de l’ordre de quelques kilooctets ;
  • Non-interactives : le protocole ne nécessite pas d’interaction entre le fournisseur de preuve et le vérificateur.

Mina Protocol tire alors profit des propriétés étonnantes des zk-SNARKs pour maintenir sa blockchain, une blockchain “succincte”, la plus légère en existence.

Utilisation des zk-SNARKS dans Mina Protocol

Les zk-SNARKs sont donc des certificats immuables. Ils permettent de prouver la validité de toute opération ayant eu lieu sur le réseau, sans pour autant la connaître. Ainsi, pour n’importe quelle séquence de calcul (comme la vérification des transactions incluses dans un bloc), on peut produire une preuve mathématique certifiant que cette séquence est correcte.

Cela permet de réduire la taille d’un bloc à une simple SNARK de 1 ko. La SNARK permet de vérifier que toutes les règles du protocole de consensus sont respectées : validité des signatures et des transactions, consensus en preuve d’enjeu, etc.

Tout le monde peut valider la blockchain

Cette technique permet donc de “compresser” la blockchain. Plutôt que de vérifier l’intégralité de l’historique d’une transaction présente dans un bloc pour la valider, les nœuds complets vérifient des preuves cryptographiques, assorties de l’arbre de Merkle associé au dernier état de la blockchain.

Si le protocole utilisait une SNARK par bloc, la taille de la chaîne serait réduite, mais elle augmenterait de façon linéaire avec le temps. Les nouvelles preuves sont donc générées à partir des anciennes : la fonction utilisée pour générer les SNARKs est récursive. C’est ce qui permet de garder la taille des preuves fixe.

Chaque nouvelle SNARK peut donc être considérée comme une “super-SNARK”, une super-preuve générée à partir d’un enchaînement de preuves. C’est ce qui permet de valider l’historique de n’importe quelle transaction, du bloc de genèse au dernier bloc produit, grâce à un simple fichier de quelques kilooctets.

Pour résumer, chaque nœud validateur du réseau Mina n’a besoin que de deux éléments pour vérifier l’intégrité d’un bloc :

  • La zk-SNARK récursive (environ 1 ko) qui permet de prouver la validité de l’intégralité de l’historique de la blockchain ;
  • La racine de l’arbre de Merkle de l’état le plus récent de la blockchain, qui permet de prouver la solvabilité d’un compte utilisateur.

Un nœud complet peut donc se synchroniser à l’ensemble du réseau en quelques millisecondes seulement.

Bien entendu, il est aussi possible de déployer un nœud d’archivage (archive node) qui stockera l’intégralité des données de la blockchain. C’est utile pour certains cas d’usage de Mina.

Les applications décentralisées sur Mina : les Snapps

Les applications décentralisées du réseau Mina qui utilisent les zk-SNARKs ont été renommées des Snapps. Les Snapps ont trois propriétés fondamentales :

  • On peut vérifier l’intégrité d’un jeu de données sans connaître ces dernières ;
  • Il est facile de vérifier l’exactitude de calculs longs et coûteux ;
  • Ces applications sont scalables. Lorsqu’une Snapp est déployée sur Mina, seul son développeur exécute la séquence de calculs associée. Les nœuds du réseau vont ensuite seulement vérifier les preuves cryptographiques associées.

Dans notre monde numérique, chaque internaute doit confier ses données personnelles, privées et confidentielles, à de puissants acteurs centralisés pour accéder à divers services. Avec les Snapps, les utilisateurs de Mina fourniront des preuves de l’intégrité de ces données, et non les données elles-mêmes.

L’utilisation de preuves cryptographiques permet donc de concevoir des applications nouvelles. Par exemple, il est possible de prouver que l’on possède un document d’identité authentique sans avoir à fournir ce document. On peut concevoir des systèmes de vote privés, dont l’authenticité des résultats est publiquement vérifiable, sans pour autant révéler l’identité des votants et leurs choix. On peut prouver que l’on possède une quantité minimale de cryptomonnaies sans avoir à révéler son adresse publique. Ou bien encore, prouver à son banquier que l’on est éligible à un crédit sans révéler le montant de sa fortune et le nom des banques où l’argent est stocké. Une assurance-santé peut être certaine que l’on ne possède pas tel ou tel gène sans divulgation du génome, etc.

Fonctionnement de Mina Protocol

Mina Protocol utilise un algorithme de consensus dérivé dOuroboros Praos (le mécanisme de consensus en preuve d’enjeu de Cardano). Il n’est pas possible de détailler ici le fonctionnement de ce mécanisme de consensus adaptatif et semi-synchrone. Ce qu’il faut savoir en bref :

  • Les détenteurs de jetons peuvent participer à la sécurisation du réseau par la preuve d’enjeu, directement par le staking (verrouillage) de leurs jetons ou en les déléguant ;
  • Le protocole n’utilise pas le mécanisme du slashing (perte du stake) pour punir les mauvais comportements. Il n’y a donc pas de risque à verrouiller ses jetons ou à déléguer le staking.

Le mécanisme de consensus initial a été modifié pour être adapté aux caractéristiques particulières de Mina, notamment avec l’intégration des zk-SNARKs. Cette nouvelle version est appelée Ouroboros Samasika. Il y alors trois rôles pour les acteurs du réseau.

Les vérificateurs

Tous les nœuds du réseau Mina peuvent vérifier les preuves cryptographiques que sont les zk-SNARKs. Ces preuves sont très rapides à télécharger, puisqu’elles ne pèsent que quelques centaines d’octets. De même, elles sont faciles à vérifier : le processus ne prend que quelques millisecondes.

Les producteurs de blocs

Comme les mineurs du réseau Bitcoin ou les stakers dans un réseau en PoS, ils sont chargés de collecter les transactions et de les inclure dans des blocs. Le protocole les récompense pour leur travail via l’inflation et la collecte des frais de transactions.

Les producteurs de blocs sélectionnent les transactions. Ils ont intérêt à privilégier celles qui présentent les frais les plus élevés, afin de maximiser leurs gains. Mais ils doivent également fournir des SNARK : la blockchain doit rester “succincte”.

Pour chaque transaction ajoutée à un bloc, le producteur doit fournir des SNARK pour un nombre équivalent de transactions précédemment ajoutées. Sans cela, il ne respecterait pas les règles du consensus, et serait rejeté par les autres nœuds. Par exemple, si un producteur de blocs souhaite ajouter 10 transactions à la fin de la file d’attente, il doit “snarker” 10 transactions depuis le début de la file d’attente.

Les producteurs de blocs peuvent générer eux-mêmes ces SNARK, ou les acheter auprès des nœuds dédiés uniquement à leur calcul, les snarkers.

Mina Protocol - Production des blocs
Schématisation de la production des blocs. Les transactions sélectionnées dans la file d’attente sont progressivement couplées à une preuve cryptographique.

Les snarkers

Les snarkers sont les nœuds du réseau chargés de produire les preuves cryptographiques (zk-SNARKs). Ils assignent une enchère (bid) à chaque preuve générée. Ensuite, les producteurs utilisent les preuves pour construire leurs blocs. Ils récompensent ainsi financièrement les snarkers, en payant les enchères associées grâce aux frais de transaction.

Les snarkers peuvent donc produire de multiples preuves et enchères pour la même transaction. Ils sont en concurrence, et les producteurs de blocs sont incités à minimiser le coût des preuves qu’ils utilisent. Ce marché est appelé la Snarketplace.

Mina Protocol - Snarketplace
Les producteurs de blocs ont intérêt à sélectionner les enchères les plus basses proposées par les snarkers.

Il est important de comprendre cette dynamique de marché entre snarkers et producteurs de blocs. Le snarker a intérêt à vendre ses preuves : il est récompensé pour ses calculs. Le producteur de bloc cherche des preuves à bas prix. Il paie les snarkers via une transaction spéciale appeléé fee transfer. Ils préférera donc acheter des lots de SNARK au même snarker, car il ne paiera les frais qu’une seule fois par lot.

Bien entendu, Mina Protocol possède un jeton utilitaire, le MINA. Il s’agit de la cryptomonnaie native du réseau, nécessaire pour le sécuriser (via le staking – la preuve d’enjeu). C’est également ce jeton qui est utilisé sur la Snarketplace. Ses tokenomics feront l’objet du prochain article dédié à Mina.

Conclusion

L’engouement du marché pour le protocole Mina est indéniable. En effet, la vente publique de tokens MINA lancée via Coinlist a attiré beaucoup plus d’investisseurs que de places disponibles. L’équipe d’O(1) Labs est à l’origine d’une innovation majeure dans l’univers blockchain, grâce à la combinaison de la preuve d’enjeu et des zk-SNARKs. Outre les perspectives offertes par cette nouvelle architecture en termes de décentralisation et de scalabilité, Mina Protocol ouvre la voie aux développeurs pour créer de nombreuses applications, basées sur la confidentialité et le contrôle des données privées.

Pour aller plus loin

Morgan Phuc

Cofounder @ 8Decimals & Partner @ Node Guardians - Making crypto great again - Journal du Coin / BitConseil