zkSync : un layer 2 Ethereum entre scalabilité et sécurité grâce aux ZK-Rollups

ZKsync zk rollups

L’histoire derrière zkSync

Ethereum (ETH) a vu son utilisation croître en flèche : de nombreuses DApps se sont construites sur la blockchain : marketplace d’NFT, protocoles de lending/farming, Play-to-Earn… L’ensemble de ces DApps ont néanmoins abouti à une congestion du réseau Ethereum résultant en des transactions lentes et coûteuses pour les utilisateurs. Actuellement, c’est plus de 40 millions de dollars qui sont utilisés chaque mois pour payer des frais (gas) sur la blockchain Ethereum. L’état du réseau actuel limite donc son utilisation aux particuliers et fait l’objet de critiques sur son ouverture aux petits portefeuilles.

Pour résoudre ce problème de congestion, de nombreuses solutions appelées solutions de secondes (”layer 2” en anglais) ont émergées, permettant de bénéficier de frais minimes tout en bénéficiant de la sécurité du réseau Ethereum.

C’est notamment le cas de zkSync qui est un protocole basé sur la technologie ZK-proof et développé par la société Matter Labs. C’est une solution de seconde couche permettant de pallier aux problèmes de scalabilité de la chaîne principale Ethereum, notamment responsable de l’augmentation des frais (gas) ces derniers mois.

Actuellement, zkSync se place 7ᵉ au classement des solutions de seconde couche attirant le plus de liquidité (ce qu’on appelle “TVL = total value locked” en anglais).

classement-layer-2

Nous verrons cependant, par la suite, que grâce à sa technologie Zero-Knowledge Proof, zkSync propose bien plus qu’une solution permettant uniquement de réduire les frais sur Ethereum.

Qu’est-ce que zkSync ?

zkSync est construit sur l’architecture ZK Rollup. C’est une solution de mise à l’échelle de type “layer 2” dans laquelle tous les fonds déposés sont détenus par un smart contract sur la chaîne principale, alors que le calcul et le stockage sont effectués hors chaîne. Pour chaque bloc Rollup, une preuve de transition d’état à connaissance nulle, que l’on appelle “SNARK”, est générée et vérifiée par le contrat de la chaîne principale. Cette SNARK comprend la preuve de la validité de chaque transaction du bloc Rollup.

interface zksync

De manière informelle, cela fonctionne comme suit :

  1. Les utilisateurs du réseau (que l’on appelle émetteurs) signent les transactions et les soumettent aux validateurs (que l’on appelle relayeurs dans le cadre d’un rollup).
  2. Les relayeurs regroupent des milliers de transactions en un seul bloc (en anglais “batch”) et soumettent un engagement cryptographique (le “state root”, c’est-à-dire la racine de l’arbre de Merkle à partir de laquelle il sera possible de remonter à l’ensemble des transactions) du nouvel état sur le réseau principal, ainsi qu’une preuve cryptographique (appelé “SNARK”) certifiant que ce nouvel état est bien le résultat de l’application de certaines transactions correctes à l’ancien état.
  3. La preuve et le state root sont ainsi vérifiées par le smart contract, permettant de facto la validation de toutes les transactions incluses dans le bloc.
fonctionnement zkproof

La vérification de la preuve SNARK coûte beaucoup moins cher aux relayeurs que la vérification de chaque transaction cumulée et le stockage de l’état hors chaîne est nettement moins cher que le stockage sur la chaine principale. Cela permet donc d’augmenter considérablement la scalabilité du réseau (~100-200x la capacité du réseau principal) et donc de réduire les coûts de transactions.

Les différents types de rollups

Comme nous l’avons détaillé plus haut, la technologie zero-knowledge proof appartient à la famille des rollups, qui a pour objectif d’augmenter la scalabilité en alliant les données on-chain et off-chain. Si zkSync est basé sur la ZK-proof pour assurer son fonctionnement, il existe néanmoins une autre famille de rollup que l’on appelle “optimistic rollup”.

Les optimistic rollups vont également fonctionner sur le principe des données on-chain et off-chain. Afin de réduire les frais et d’augmenter la scalabilité, les optimistic rollups effectuent les calculs et le stockage off-chain, c’est-à-dire en dehors de la chaine principale et publie les résultats sous format compressé on-chain, c’est-à-dire sur la chaine principale.

La principale différence avec la ZK-proof réside dans la manière de valider les transactions. Les ZK émettent une preuve cryptographique (appelée SNARK) pour chaque lot, tandis que les optimistic rollups se basent sur la confiance des agrégateurs, qui ont pour rôle de compresser l’ensemble des transactions dans des lots et de publier l’état final du réseau sur la chaine principale Ethereum.

optimistic-rollup

Ainsi, au sein des optimistic rollups, tous les participants (émetteurs et agrégateurs) partent du principe que l’ensemble des transactions contenues dans les lots sont valides. Les agrégateurs disposent alors d’une période de 7 jours pour les contester : si personne ne les conteste, les lots sont validés et l’état du réseau final est mis à jour sur la blockchain Ethereum.

Si un agrégateur au sein du réseau décide de contester les transactions au sein d’un lot, alors il est libre de recalculer l’ensemble des transactions et de publier le résultat final. Si la fraude est avérée, l’agrégateur qui a publié des transactions frauduleuses se verra sanctionner par la perte d’une partie de son collatéral (chaque agrégateur qui participe à la validation des transactions doit déposer un collatéral).

Ainsi, ce système de sécurisation est un système incitatif basé sur la confiance : chaque agrégateur est invité à se comporter de manière vertueuse. Si l’un d’entre eux se comporte de manière frauduleuse, il s’expose à une perte de son collatéral.

Bien que les optimistic rollups semblent désavantagés en termes de scalabilité par rapport à leur concurrent ZK (il faut 7 jours pour valider définitivement les transactions sur les Optimistic rollups), elles sont néanmoins beaucoup plus simples en terme d’architecture. Les plus connus sont actuellement Optimism et Arbitrum.

La roadmap du projet

Initialement fondée par Alex Gluchowski en 2018, la société Matter Labs a commencé à proposer sa vision de zkSync fin 2019.

interface matterlabs

Le 15 juin 2020, la version 1 est sortie sur le mainnet d’Ethereum. Néanmoins, à cette époque, la solution ne présentait aucune comptabilité avec l’EVM (Ethereum Virtual Machine). Les possibilités d’utilisation au sein de l’écosystème étaient donc assez restreintes. De nombreuses améliorations sont intervenues depuis, jusqu’à l’annonce en mai 2021 de la version 2 de zkSync disponible sur le testnet, et cette fois compatible à l’EVM.

Côté financement, l’entreprise a annoncé une levée de fond en série A d’un montant de 2 millions de dollars en mars 2021, puis une nouvelle levée de fond de 50 millions de dollars en novembre 2021, menée par des acteurs réputés de l’écosystème comme Andreessen Horowitz (a16z).

Faire ses premiers pas sur zkSync

L’écosystème zkSync fournit déjà un grand nombre de possibilités grâce aux dizaines de protocoles développés à partir de la technologie zk-proof.

Parmi eux, nous pouvons citer Standard Protocol (protocole DeFi), Homespace (NFT) ou encore Bitkeep Wallet (wallet non-custodial). L’ensemble de l’écosystème est consultable sur la page officielle du projet.

zksync environnement

Comment faire ses premiers pas dans l’écosystème zkSync ?

Tout d’abord, pour interagir avec l’écosystème, il faudra en premier lieu envoyer des fonds sur son portefeuille zkSync. Pour cela, rendez-vous sur https://wallet.zksync.io/

Sur cette page, l’utilisateur est amené à connecter son portefeuille Ethereum (par exemple Metamask).

commencer avec zksync

Une fois que le portefeuille Metamask (connecté au réseau ETH) est configuré, l’utilisateur pourra envoyer ses premiers fonds vers son portefeuille zkSync.

Pour cela, l’utilisateur suivra les étapes suivantes :

  1. Appuyer sur “top up”
  2. Choisir le bridge zkSync en bas de la page
  3. Choisir le montant que l’on souhaite envoyer
  4. Valider la transaction

Une fois ces étapes terminées, les fonds de l’utilisateur arriveront sur son portefeuille de layer 2, et l’utilisateur pourra alors interagir avec les différents protocoles ayant intégré le réseau zkSync.

Sur la page d’accueil de son compte, l’utilisateur pourra également, s’il le souhaite, effectuer des swaps de tokens, ainsi que des transferts vers d’autres comptes zkSync ou vers son wallet Metamask Ethereum.

D’autres fonctionnalités sont également possibles et retrouvables dans le bandeau sur la page d’accueil

bandeau d'accueil zksync

Les utilisateurs peuvent par exemple minter des NFT, ajouter des contacts via leur adresse de portefeuille, ou encore consulter l’historique du réseau zkSync.

Conclusion

zkSync représente donc, aujourd’hui, une véritable évolution pour l’écosystème blockchain. Grâce à la technologie zero-knowledge proof et aux rollups fonctionnant sur le principe des données on-chain et off-chain, zkSync propose une solution à la fois scalable (et donc peu coûteuse en termes de frais pour l’utilisateur final), tout en conservant le même niveau de sécurité que sur la chaîne principale Ethereum.

De plus, contrairement au concurrent StarkNet qui développe sa solution en Cairo, les équipes de Matter Labs ont choisi de rendre leur écosystème compatible avec l’EVM (Ethereum Virtual Machine), ce qui permettra aux développeurs de contribuer plus facilement à l’écosystème.

Pour l’instant encore assez peu utilisé (le protocole ne représente que 2% de la TVL totale des layer 2), son utilisation devrait s’accroître dans les prochains mois à mesure que l’équipe derrière le projet communique davantage.

Un projet à suivre de très près, d’autant plus que l’écosystème pourrait être le lieu de nombreux airdrops dans les mois à venir.