Starkware, StarkNet et StarkEx – La couche secondaire ultime pour Ethereum
Scalabilité et confidentialité sur Ethereum sont les maîtres mots pour décrire le projet de Starkware. L’entreprise israélienne développe des solutions de couche secondaire qui permettent au réseau de décupler ses possibilités.
Nous présenterons dans cet article les trois produits développés par l’équipe de Starkware : StarkNet, StarkEx et Cairo. Grâce à des outils cryptographiques avancés, les preuves à divulgation nulle de connaissance, Starkware permet à Ethereum de se mettre à l’échelle, mais aussi de retrouver sa confidentialité perdue.
Starkware : l’entreprise, l’équipe et la genèse du projet
Eli Ben-Sasson, Uri Kolodny, Michael Riabzev et Alessandro Chiesa fondent l’entreprise Starkware en 2018. Elle est spécialisée dans les preuves à divulgation nulle de connaissance (zero-knowledge proofs ou ZKP). Starkware s’appuie sur ces outils cryptographiques afin de développer des solutions de scalabilité et de confidentialité pour les blockchains.
L’équipe d’une cinquantaine de personnes compte bien transformer les théories mathématiques complexes amenées par la recherche fondamentale en des produits fonctionnels. De nombreux ingénieurs et codeurs, accompagnés par leurs conseillers scientifiques, travaillent d’arrache-pied pour fournir une infrastructure de seconde couche scalable, transparente et sécurisée pour Ethereum.
L’interview du fondateur de Starkware, Eli Ben-Sasson, sera bientôt disponible sur notre chaîne YouTube.
Au départ, Starkware était une petite startup passionnée par les zero-knowledge proofs, souhaitant utiliser ces outils cryptographiques dans l’industrie blockchain. L’équipe s’est vite agrandie, et après avoir mené une série B de 75 millions de dollars, leur projet est passé de la théorie à la pratique.
StarkNet : des ZK-Rollups sur Ethereum
Tout utilisateur d’Ethereum connaît son problème majeur : sa piètre scalabilité (la capacité du réseau à s’adapter à la montée en charge, provoquée par une utilisation de plus en plus croissante). Sa blockchain est engorgée, ce qui provoque entre autres une augmentation des frais de transactions.
Il y a plusieurs approches pour pallier ce souci. La plus populaire réside dans les solutions de couche secondaire (layer 2) du réseau. Afin de décharger la chaîne principale, il faut traiter le plus possible de données hors-chaîne, tout en gardant un haut niveau de sécurité et de décentralisation.
Les ZK-Rollups, qu’est-ce que c’est ?
Les ZK-Rollups sont des structures de données permettant de décharger la blockchain d’Ethereum. Elles sont construites grâce aux célèbres arbres de Merkle et aux preuves à divulgation nulle de connaissance. Certains calculs et données sont ainsi traités hors-chaîne.
Une preuve à divulgation nulle de connaissance (ZKP) est un protocole cryptographique qui permet de prouver la véracité d’une proposition sans avoir connaissance de la proposition elle-même. Ces protocoles permettent à un “fournisseur de preuve” de prouver mathématiquement à un “vérificateur” l’exactitude d’une proposition, sans révéler quelque autre information que la véracité de la proposition.
Mathématiquement, les preuves à divulgation nulle de connaissance doivent satisfaire trois propriétés :
- La consistance (completeness) : si le fournisseur de preuve et le vérificateur suivent le protocole, alors le vérificateur doit toujours accepter la preuve ;
- La robustesse (soundness) : si la proposition est fausse, aucun fournisseur de preuve malveillant ne peut convaincre un vérificateur « honnête » que la proposition est vraie, et ceci avec une forte probabilité ;
- La divulgation nulle d’information (zero knowledge) : le vérificateur n’apprend, de la part du fournisseur de preuve, rien de plus que la véracité de la proposition. Il s’agit de la propriété la plus complexe à prouver.
Concrètement, les transactions s’effectuent sur la couche secondaire du réseau. Elles sont agrégées dans un rollup, qui sera ensuite publié sur la chaîne principale. Un smart contract se charge alors de comparer l’état antérieur du rollup (le solde des comptes) au nouveau, et vérifie la validité des opérations. Si c’est le cas, l’état de la blockchain est mis à jour.
Principes de fonctionnement de StarkNet
StarkNet est donc une plateforme de seconde couche (layer 2) pour Ethereum, basée sur les ZK-Rollups. Elle permet de prendre en charge les mêmes calculs et opérations que le réseau Ethereum, avec le même degré de sécurité, mais avec beaucoup plus de scalabilité. StarkNet a les mêmes propriétés qu’Ethereum : la plateforme est décentralisée, sans permission (tout le monde peut y accéder) et résistante à la censure.
Elle permet à ses utilisateurs d’exécuter des transactions comme ils le feraient sur Ethereum, mais en bénéficiant d’une bien meilleure scalabilité. StarkNet a son propre langage de programmation, dénommé Cairo, dont nous reparlerons plus bas. Les développeurs peuvent ainsi coder leurs applications, puis les déployer sur StarkNet. Les nœuds de StarkNet sont économiquement incités à agir de façon efficace et loyale, pour garantir la sécurité du système. Bien entendu, n’importe qui peut déployer un nœud StarkNet, ce qui garanti sa décentralisation.
Les opérations qui se déroulent sur StarkNet sont agrégées. Ces agrégats sont alors assortis d’une preuve cryptographique de leur validité. Les nœuds d’Ethereum peuvent ensuite la vérifier, puis mettre l’état de la blockchain à jour.
Les preuves utilisées sont des STARK (Scalable Transparent ARguments of Knowledge). Nous rentrerons dans les détails de ces preuves dans un article à part entière. Ce qu’il faut retenir, c’est qu’elles sont légères et transparentes. Elles ne nécessitent pas de paramètre secret (trusted setup), contrairement aux SNARK utilisées sur ZCash, par exemple.
Les possibilités offertes par StarkNet
Il faut noter que la durée de vérification des preuves diminue exponentiellement en fonction du temps de génération :
Du point de vue de la scalabilité, les résultats de Starkware sont ainsi très impressionnants. En effet, l’équipe peut se vanter d’avoir établi le record du monde en termes de transactions par seconde pouvant être traitées sur Ethereum.
Grâce à StarkNet, il est ainsi possible d’atteindre 300 000 transactions pour une seule preuve sur le mainnet : cela porte le débit à 3000 transactions / s. Quand aux frais, il s’agit également d’un record : seulement 315 gas / transaction.
Concrètement, StarkNet permet donc à ses utilisateurs d’effectuer des transactions comme ils le feraient sur Ethereum. Les développeurs peuvent déployer leurs dApps sans se soucier des contraintes actuelles (mauvaise scalabilité, coûts de déploiement élevé). Chaque instance de StarkNet peut héberger et exécuter une application.
Il s’agit de la première étape sur la feuille de route de Starkware, appelée « Planets« .
Pour la deuxième étape, « Constellations« , de multiples applications pourront être exécutées sur la même instance et accéder au même état de la couche secondaire. Elles seront ainsi interopérables, et les frais de gas réduits grâce aux économies d’échelle.
Enfin, la troisième étape, « Universe« , sera consacrée à la décentralisation totale de StarkNet. Il s’agira d’améliorer ses mécanismes de consensus et de concevoir des incitations économiques pour améliorer sa transparence, son efficience et sa sécurité.
StarkEx : un moteur pour la scalabilité d’Ethereum
StarkEx est le moteur dédié à la scalabilité de la couche secondaire d’Ethereum. Déjà déployé sur le mainnet, il permet d’effectuer des opérations complexes : trading spot, création de produits financiers dérivés et de NFT. Il est notamment utilisé par DeversiFi, dYdX et ImmutableX. À l’avenir, il sera également possible de déployer des AMM.
StarkEx a permis à l’équipe de Starkware de tester ses outils et de mieux comprendre les besoins de l’écosystème. Il intègre des oracles de prix, et est compatible avec plusieurs wallets (Ledger, Authereum, WalletConnect, Metamask).
Il est possible de déployer StarkEx en utilisant les ZK-Rollups (les données sont publiées on-chain) ou en utilisant le mode Validium. Validium permet de vérifier la disponibilité des données grâce à une sidechain. Ce mode a l’avantage de ne pas nécessiter de paiement on-chain. Seul le coût en gas de vérification de la preuve est requis pour mettre à jour l’état de la blockchain.
À l’avenir, les utilisateurs pourront choisir eux-mêmes le mode d’accès aux données (Volition).
Les transactions exécutées par une application sont envoyées vers le StarkEx Service, qui va les agréger. Le lot de transactions passe ensuite par le module SHARP (shared proving service). Ce dernier va générer une preuve attestant de leur validité. La preuve STARK est ensuite envoyée on-chain vers le smart contract vérificateur (STARK Verifier). Si la preuve est valide, l’état de la blockchain d’Ethereum est mis à jour par le StarkEx Contract.
Le moteur StarkEx fonctionne ainsi sur les deux couches d’Ethereum (layer 1 et layer 2).
Cairo : l’épine dorsale de StarkNet
StarkNet et StarkEx sont basés sur un langage de programmation spécifiquement conçu par l’équipe de Starkware : Cairo. Ce langage Turing-complet (comme Solidity) permet aux développeurs d’utiliser la puissance des preuves STARK pour créer des applications scalables et efficaces.
Son nom dérive de l’expression « CPU Algebraic Intermediate Representation« . Les STARK sont basées sur des équations polynômiales : du point de vue du développeur, Cairo permet de simplifier le code sous-tendant les interactions entre les fournisseurs de preuve et les vérificateurs.
Grâce au système GPS (Generic Proof Service) de Cairo, les développeurs « prouvent » leur code, qui sera ensuite vérifié sur la blockchain. Une seule preuve permet d’assurer l’intégrité de l’exécution d’applications indépendantes, ce qui réduit les dépenses de gas.
Ce langage permet donc aux codeurs d’intégrer les preuves STARKS facilement au sein de leurs applications décentralisées. Ces derniers peuvent se focaliser sur leur logique business, sans se soucier de la génération des preuves. Cairo est assorti d’un compilateur, d’une machine virtuelle, d’un débuggeur, ainsi que d’un environnement de développement intégré.
En conclusion
Starkware place la barre très haut en concevant sa solution de seconde couche pour Ethereum, basée sur les preuves à divulgation nulle de connaissance. Ces outils mathématiques sont très complexes, et la recherche fondamentale à leur sujet est prolifique. Mettre ce champ de la cryptographie en pratique est un véritable casse-tête. Les apports de l’équipe d’ingénieurs et de chercheurs chevronnés de Starkware sont immenses. La conception de leurs preuves STARK en font les plus performantes, en termes de transparence et de scalabilité.
Si l’aventure vous tente, Starkware recrute des profils qualifiés : ingénieurs DevOps, ingénieurs SRE, développeurs back-end, chercheurs, etc.
Ressources
- Starkware – Site officiel
- StarkNet – Whitepaper et documentation
- StarkEx – Documentation
- Cairo – Whitepaper et documentation
- Medium
- GitHub
- YouTube