Protocol Mina - une blockchain succincte

From Mina Wiki
Jump to navigation Jump to search

Vous pouvez considérer Mina comme étant “un portefeuille qui rentre dans votre poche »

  • La première cryptomonnaie avec une blockchain succincte.
  • Une blockchain compressé qui passe de plusieurs centaines de gigaoctet (comme observé sur les autres blockchains existantes) à seulement quelques kilooctets.
  • scalable, sécurisé et décentralisé.
  • Permet de vérifier la blockchain sur un téléphone mobile.

La taille de la blockchain Mina est fixe – l’équivalent de quelques tweets, quel que soit le nombre de transactions circulant sur le réseau.

hack.summit(“blockchain”) 2018 — Izaak Meckler — co-fondateur et CTO, Mina Protocol

Dans la ‘cryptosphère’, nous sommes souvent encouragés à suivre la devise « Ne faites pas confiance, vérifiez » et malgré la compréhension de ce besoin d’être un acteur actif du réseau, les utilisateurs des blockchains sont de moins en moins susceptibles de faire fonctionner un nœud complet à cause de l’accroissement continu des prérequis pour le faire.

[ https://miro.medium.com/max/2000/1*cELjxQwXYMqroQ0TgoSd1A.jpeg ]

Taux d’accroissement de la taille de la blockchain Bitcoin en megaoctets de 2009 à 2018. (https://www.blockchain.com/en/charts/blocks-size?timespan=all)

Preface

Pourquoi tout le monde ne peut pas être un nœud complet ?

Avant de creuser la question, nous devons d'abord comprendre le fonctionnement d'un protocole de cryptomonnaie type : un validateur, plus connu sous le nom de mineur ou miseur (respectivement pour les consensus PoW et PoS), ajoute une transaction à la base de données. Ensuite, un nœud complet observe ces transactions pour s'assurer que ces validateurs agissent en toute honnêteté. En général, les utilisateurs finaux ne font pas ces vérifications - ils délèguent plutôt la confiance aux participants volontaires du réseau.

Pourquoi cela ?

  • Les besoins matériels et la complexité de faire fonctionner un nœud complet découragent les utilisateurs finaux de le faire
  • Faire fonctionner un nœud complet demande des calculs intensifs sur un ordinateur. C’est impossible de le faire sur un téléphone mobile
  • Il est plus facile de faire confiance à une tierce partie qui fait cette vérification.

[ https://miro.medium.com/max/1400/0*3Nod-k_4sVhkqz13 ]

Au lancement de toute cryptomonnaie, il est relativement facile d’opérer un nœud complet quand la taille de la blockchain est réduite – probablement quelques megaoctets. Cependant, au fur et à mesure que le temps passe et que des transactions sont enregistrées, cela augmente jusqu’à des centaines de gigaoctects (comme indiqué sur le graph ci-dessus). De ce fait, il devient de plus en plus compliqué d’opérer un nœud complet sans un ordinateur conçu à cet effet, et encore moins sur un smartphone.


Comment pouvons-nous être certains de l’état de la blockchain sans voir l’historique complet menant à cet état ?

Introduction a Mina

“Mina est un nouveau protocole cryptographique qui permet à tout à chacun de se synchroniser avec le réseau [quelque soit son équipement] avec le niveau de sécurité d’un nœud complet en téléchargeant seulement quelques kilooctets de données et faisant un calcul de quelques millisecondes, à comparer les gigaoctets dans les protocoles cryptographiques traditionnels. ”

[ https://www.youtube.com/watch?v=4AJKUGNwzZ0 Izaak Meckler & Evan Shapiro: Mina — A Succinct Blockchain — Epicenter ]

O(1) Labs développe le protocole Mina pour adresser le problème de la taille des blockchains en créant la première blockchain succincte ou compressé – de la taille de quelques tweets. Cela offre aux utilisateurs finaux une faible barrière à l’entrée pour valider les transactions.

Comment cela est devenu possible ?

  • L’utilisation de zk-SNARKs — qui compresse efficacement les blocs en une preuve unique appelé aussi certificat.
  • L’utilisateur vérifie cette preuve au lieu de vérifier l’intégralité de l’historique d’un bloc
  • L’assemblage récursif de ces SNARKS/certificats permet une taille de blockchain constante.

zk-SNARKs sont une déclinaison des preuves à divulgations nulle de connaissance – une méthode cryptographique qui permet de prouver à un vérificateur une preuve de calcul sans toutefois révéler d’autres informations sur ce calcul.

Comment Mina fonctionne

zk-SNARKs dans Mina

Au cœur du protocole de Mina, il y a l’usage des zk-SNARKS qui peuvent être utilisé pour certifier tout calcul.

Les zk-SNARKs sont utilisés comme des certificats infalsifiables qui prouvent qu’un calcul a été réalisé correctement, sans avoir à prouver tout le calcul. Comme indiqué, nous pouvons l’appliquer à n’importe quel calcul, comme la vérification des transactions d’un bloc et en créer un SNARK. Ce SNARK prouve l'exactitude de l'historique des transactions d'un bloc, sans avoir à afficher toutes les transactions. Cela réduit efficacement la taille d’un bloc à un seul SNARK (environ 1k octets).

Un SNARK remplie TOUTES les exigences pour un consensus.

Il assure :

  • Que les transactions sont signées.
  • Qu’elles sont valides.
  • Les règles du consensus (puissance de hashage totale + résistance de la chaine pour le PoW, et autres règles

pour le PoS).

Un SNARK généré illicitement n’est pas valide. N'importe qui sur le réseau pourrait s’en rendre compte quasiment instantanément sur un appareil aussi «léger» qu'un Raspberry Pi ou un smartphone.

Maintenir de faibles exigences sur l’équipement nécessaire pour vérifier les transactions d’un bloc est le premier pas pour créer une solution durable et scalable. Un producteur de SNARK créant un SNARK/certificat de validité pour un bloc qui peut être transmis comme une preuve, sans inclure toutes les transactions

[ https://miro.medium.com/max/1400/0*Y5qiN4mQ3dWolofS.png ]


Une conversation réelle entre un producteur Mina et un utilisateur final :

“Salut vérificateur/utilisateur! J’ai créé un certificat te permettant de vérifier l’historique de transaction d’un bloc. Ce processus m’a demandé beaucoup de puissance de calcul, donc je suis récompensé pour faire cela.

Tu peux vérifier l'exactitude de cette preuve en vérifiant le SNARK ce qui ne prendra que quelques millisecondes et quelques kilooctets d'espace libre. De cette façon, vous n'aurez pas à télécharger des centaines de gigaoctets pour vérifier la blockchain ! ” - Producteur SNARK

“Merci BEAUCOUP, producteur. Je vais vérifier ce certificat ! Maintenant qu’il est si petit, je n'ai pas besoin de faire confiance à quelqu'un d'autre pour vérifier la blockchain à ma place et je peux enfin faire fonctionner un nœud de validation et un portefeuille sur mon smartphone ou équivalent. Je vous remercie! La vie est si belle maintenant. »- Utilisateur final


Remplacer chaque bloc par un SNARK n’est pas une solution satisfaisante

Au départ, on pensait que nous pouvions simplement créer un SNARK pour chaque bloc, en réduisant chaque bloc à environ un kilooctet. Cependant, cela aurait entraîné une croissance linéaire au fil du temps, au fur et à mesure que les SNARK s'accumuleraient, même si cela aurait été dans une bien moindre mesure que les blockchains existantes.

Comment pouvons-nous résoudre cela ?

Eh bien, nous savons qu'un SNARK peut être utilisé pour certifier n'importe quel calcul. La création d'un SNARK est un calcul en soi - et si nous créons un SNARK de plusieurs SNARKs?

[ https://miro.medium.com/max/1400/0*oPqhLi91z1V_H2pJ.png Plusieurs certificats / SNARK, chacun vérifié par un utilisateur final. ]


Une organisation récursive des SNARK dans Mina

Comme mentionné précédemment, nous pouvons enchaîner ces certificats ensemble dans une organisation récursive et permettre à la blockchain de rester à une taille constante d’environ 20 Ko (SNARK + extrémité du chemin de Merkle).

Chaque fois qu'un nouveau bloc est produit, un nouveau SNARK / certificat est créé. En créant un SNARK unique composé des certificats précédents, vous êtes, en quelque sorte, en mesure de créer un seul "méga" SNARK, qui prouve tout l'historique des transactions de la blockchain vous permettant de passer du bloc de genèse à l'état actuel tout en restant à la taille d'un seul certificat.

[ https://miro.medium.com/max/1400/0*yzdwtbQurT-RKsSa.png Plusieurs certificats / SNARK placés dans un seul certificat / SNARK ].


Pour simplifier, disons que vous avez :

  • Un certificat indiquant que vous pouvez passer du bloc 0 au bloc 2
  • Un certificat supplémentaire indiquant que vous pouvez passer du bloc 2 au bloc 4.

Vous pouvez ensuite combiner ces SNARK en un seul SNARK qui indique que vous pouvez passer du bloc 0 au bloc 4.

Le nouveau SNARK / certificat reste à une taille d’environ 1 Ko. À plus grande échelle, vous pouvez créer un certificat pour l'ensemble de l'historique des transactions de la blockchain, qui reste de taille constante - malgré le nombre de certificats «coincés» dans le SNARK le plus récent.

Un nœud de validation dans Mina comprendra : Un zk-SNARK récursif (1 ko) qui prouve la validité de tout l'historique passé de la blockchain et la racine de Merkle de l'état actuel (20 ko); l’ensemble prouvant la validité du solde d'un utilisateur. Tout cela ne prend que quelques millisecondes à synchroniser.

[ https://miro.medium.com/max/1400/0*Par2LpIhHQPmO0oo L'utilisateur final vérifie un SNARK de l'état actuel qui inclut tous les certificats antérieurs, ainsi qu'un chemin de Merkle. Tout cela permet à un utilisateur de valider son solde. ]

Applications, décentralisation et scalabilité

Applications

La construction du protocole Mina permet à la blockchain d'être facilement accessible aux utilisateurs finaux via votre navigateur et dans les applications sans avoir à télécharger des centaines de gigaoctets et sans déléguer la confiance.

Imaginez une application telle qu'un portefeuille hyper léger où vous n'êtes pas obligé de vous assurer que le développeur effectue correctement le processus de vérification. Ce processus de validation pourrait être effectué par les utilisateurs finaux sans qu'ils aient besoin de matériel dédié à cet effet.

N'importe quel appareil pourrait faire fonctionner un nœud de validation, y compris, mais sans s'y limiter, les smartphones, votre navigateur ou sur les téléphones basiques (oui, votre ancien Nokia indestructible).

Décentralisation

Comme indiqué, les utilisateurs finaux des protocoles de crypto-monnaie actuels finissent par déléguer la confiance à des services tels que les portefeuilles en ligne ou les clients légers dans le cas du minage. Cela pourrait devenir problématique dans certains cas, comme une attaque à 51%, car le devoir de vérification des transactions est souvent concentré entre les mains de ces prestataires de services.

En offrant aux participants du réseau un moyen simple d'héberger des nœuds de validation, la décentralisation est améliorée car les transactions seraient validées par un plus large éventail de participants du réseau - les utilisateurs finaux.

Scalabilité

En ce qui concerne l’amélioration de la scalabilité, l'augmentation à des milliers de transaction par seconde dans les protocoles existants produirait un volume accru de données nécessaires à la vérification. Vous vous retrouveriez ainsi inévitablement avec une blockchain qui croît plus vite qu'elle ne peut être vérifiée. Cependant, puisque Mina maintient sa blockchain à une taille constante, vous avez une solution pour réduire les données requises pour vérifier les transactions, ce qui permet ainsi d'atteindre un débit élevé car les données de vérification sont fortement compressées

A retenir

En créant une blockchain qui reste à une taille constante, Mina permet aux utilisateurs finaux de vérifier eux-mêmes et facilement les transactions.

  • Pas besoin de déléguer la confiance à ceux en mesure de respecter les exigences d’exploitation d’un nœud complet - comme c'est le cas dans les blockchains

traditionnelles.

  • Obtenez un niveau de sécurité équivalent à celle d’un nœud complet sur quasiment n'importe quel appareil en téléchargeant un seul SNARK qui agit comme un certificat pour l'ensemble de la blockchain & l’extrémité d’un chemin de Merkle.
  • En utilisant une organisation récursive de SNARK, la taille de la blockchain reste à 20k octets.
  • Un important réseau de nœuds de validation augmente la décentralisation, grâce au fait d’avoir plus d'utilisateurs finaux en mesure de participer à la vérification du réseau.

Pensée Bonus:

Vous pouvez considérer Mina comme une blockchain compressée en PokéBall. Au lieu d’entasser un Snorlax dans un Pokéball, Mina comprime la blockchain dans un SNARK.