Le Web3 est en plein essor, offrant une vision décentralisée d'Internet grâce à la technologie blockchain. Parmi les protocoles informatiques basés sur cette technologie, Ethereum est la blockchain la plus plébiscitée notamment grâce à une grande simplicité d’utilisation. Elle offre l'exécution de programmes ouverts à tous, appelés aussi smart contracts. Ils sont utilisables par quiconque en envoyant une transaction informatique, en payant cette requête avec de l’Ether, la monnaie du système.
Au fil des ans, Ethereum a connu une croissance exponentielle, attirant des développeurs, des entrepreneurs et des utilisateurs du monde entier. Cependant, sa popularité a mis en lumière le défi du passage à l’échelle, avec des problèmes d'évolutivité et de coûts de transaction élevés. À mesure que le réseau grandit, il peut devenir congestionné, ce qui entraîne des frais de transaction dramatiquement élevés et des temps de validation plus longs. En pratique, celà nuit fortement à son utilisation.
Pour résoudre ce célèbre trilemme, de nombreuses solutions de passage à l’échelle ont vu le jour afin de décongestionner le réseau, mais celles-ci sont malheureusement trop souvent moins sécurisées, très lentes ou centralisées. Dans ce contexte, la proposition de valeur de Starknet, une solution venant de la société StarkWare, fondée en 2018, émerge comme une solution prometteuse. Le principe est d’exécuter des transactions rapides et à coût réduit sur le réseau Starknet, et d’utiliser Ethereum pour sauvegarder le minimum d’information.
Dans cet article, nous explorerons la réponse proposée par Starknet, ses propositions technologiques structurantes, et son architecture.
Starknet utilise la technologie des rollups. Un rollup permet, grâce à des techniques informatiques basées sur la théorie des graphes, d’ancrer une valeur pouvant prouver l'existence d’une grande quantité d’autres valeurs. En effet, Starknet possède un fonctionnement parallèle à celui d’Ethereum et produit une grande quantité de données. La totalité de ces données sont compressées grâce au rollup et une certaine quantité de données est ancrée sur Ethereum, prouvant ainsi que les choses se sont exécutés. Dans ce cas, on dit que Starknet est une side-chain (chaîne parallèle), et Ethereum une commit-chain (chaîne d’ancrage).
Cette technique de preuve est très fréquente et Starknet n’est pas la seule blockchain à l’utiliser. Toutes ces blockchains s'exécutant en parallèle sont appelées layer-2.
Ainsi, les calculs liés à une transaction n’ont pas besoin d’être exécutés sur les nœuds du réseau car une preuve de son exécution suffira. Le gain est que la vérification de cette preuve prend beaucoup moins de temps et donc de ressources que l'exécution du code lui-même.
Il est à noter que même si Starknet s’appuie sur Ethereum dans son fonctionnement, il pourrait aussi utiliser une autre blockchain pour ancrer ses preuves d'exécution. Le fait de s’appuyer sur Ethereum fait cependant bénéficier son écosystème et ses smart-contrats à Starknet. En effet, le transfert de données va dans les deux sens.
Starknet ajoute aussi à ces preuves une autre propriété, la preuve à divulgation nulle de connaissances, ou encore zero-knowledge proof, abrégée zkp. En raison de leur nature évolutive et transparente, les STARKs sont souvent considérés comme une solution prometteuse pour la vérification décentralisée et la confidentialité des données dans les systèmes basés sur la blockchain.
Le zkp utilise une technologie appelée zk-SNARKs, ou Succinct Non-Interactive Arguments of Knowledge en anglais. C’est un système de protocoles cryptographiques qui permet de prouver la connaissance d'une information sans révéler cette information elle-même. Cela est intéressant car le prouveur peut démontrer la validité d'une affirmation :
Les zk-SNARKs ont été introduits en 2012 par des chercheurs en cryptographie, notamment Eli Ben-Sasson, Alessandro Chiesa, et al. L’idée derrière les zkp est que l’on va demander au programme de résoudre des défis, auxquels il peut répondre uniquement si l’affirmation est vraie. Par exemple, c’est comme si quelqu’un voulait vous prouver qu’il a appris une langue étrangère, sans avoir besoin de vous traduire tous les mots, il pourrait simplement prouver qu’il a tiré au hasard de manière non-biaisée une centaine de mots dans le dictionnaire et donner les traductions correspondantes. Cette technique peut être utilisée de manière non-intéractive. Les zk-SNARKs ont connu une popularité croissante depuis leur utilisation dans la blockchain Zcash, lancée en 2016.
Starknet utilise une amélioration des zk-SNARKs appelée les zk-STARKS, ou Scalable Transparent Argument of Knowledge en anglais. Les STARKs sont conçus afin d’être utilisés pour des problèmes de grande taille de manière très efficace. Les STARKs permettent une vérification transparente et déterministe des preuves, ce qui signifie que le vérificateur peut vérifier l'exactitude de la preuve sans avoir à effectuer de calculs supplémentaires. Même si les STARKS sont plus complexes à générer, quand l’affirmation augmente en complexité d’une certaine valeur, la preuve STARKS n’augmente que du logarithme de cette valeur. Les SNARKs traditionnels nécessitent malheureusement une “configuration de confiance", assez laborieuse à mettre en place, lors de leur création. Cela signifie qu'un groupe de participants doit générer des paramètres spécifiques à l’initialisation, sans quoi les preuves peuvent être falsifiées.
La génération de preuve convertit une transaction (un appel à une fonction d’un contrat) en une preuve vérifiable STARK. Cette preuve démontre de manière cryptographique la validité de l’opération réalisée par le client. Les transactions Starknet sont agrégées à Ethereum en six phases :
Cette architecture contraint néanmoins une transaction à prendre plus de temps avant d’être validée (de quelques secondes à plusieurs minutes). Il existe dors et déjà des solutions pour optimiser ce dispositif, il faut néanmoins du temps pour que les équipes de développement les étudient et les implémentent.
Au-delà de son architecture, Starknet possède d’autres avantages structurels.
Starknet utilise le langage de programmation Cairo. Il est conçu pour être un langage de bas niveau optimisé pour les preuves zkp, ce qui lui confère une grande efficacité et des performances élevées. Il est capable d'exécuter des calculs complexes de manière rapide et efficace, ce qui en fait un choix attrayant pour les applications nécessitant des performances optimales. Cairo est un langage portable, ce qui signifie qu'il peut être utilisé sur différentes plateformes et architectures. Il est indépendant du matériel, ce qui facilite le déploiement du code Cairo sur différents environnements.
Cairo peut également être utilisé indépendamment de la blockchain Starknet. Les programmes écrits en Cairo peuvent être rigoureusement vérifiés et prouvés pour garantir leur fonctionnement correct. Cela offre un niveau élevé de confiance dans la fiabilité et la sécurité. Cairo est un langage polyvalent qui peut être utilisé pour développer une large gamme d'applications. Il peut être utilisé pour écrire des contrats intelligents, des protocoles cryptographiques, des systèmes de traitement de données et bien d'autres choses encore. Sa conception modulaire et son architecture flexible permettent aux développeurs d'exprimer des fonctionnalités complexes de manière claire et concise. Cairo peut aussi être intégré avec d'autres langages de programmation, ce qui permet aux développeurs de tirer parti des avantages spécifiques de chaque langage.
Sur Starknet, les smart contracts sont, avant d’être utilisés, déclarés comme une librairie informatique appelée classe. Les fonctions, variables et la logique métier du contrat sont spécifiées dans cette classe.
C’est l'instanciation de la classe qui correspond au déploiement du contrat sur Starknet. Dans ce processus de déploiement il peut être nécessaire de fournir certains paramètres d’entrée personnalisés au constructeur du contrat, la fonction appelée lors du déploiement du contrat pour initialiser des valeurs ou effectuer une action quelconque.
Starknet apporte une abstraction de compte native, ce qui signifie que les comptes utilisateurs sont eux-même des smart contract. Cela permet la mise en place de nouvelles fonctionnalités de gestion d’accès ou de droit envers le compte, qui porte parfois des crypto-monnaies ou des accès spécifiques sur d’autres smart contract de grande valeur. Voici quelques exemples :
D’autres fonctionnalités sont évidemment implémentables, et de nouvelles normes sont proposées par les acteurs de l’écosystème.
Starknet se veut résolument orienté pour des systèmes rapides ou gourmands, tels que les jeux vidéo et autres applications nécessitant une exécution rapide et efficace des transactions. L'objectif principal de Starknet est de fournir une solution qui permet de traiter un grand nombre de transactions à une vitesse élevée, tout en maintenant des coûts de transaction abordables.
Grâce à l'utilisation de preuves succinctes et à son architecture optimisée, Starknet offre des performances élevées et une évolutivité remarquable. Cela signifie qu'il peut gérer des charges de travail importantes et exécuter des calculs complexes en un temps réduit, offrant ainsi une expérience fluide et réactive pour les utilisateurs.
Pour les jeux vidéo, par exemple, Starknet offre une solution attractive en permettant une exécution rapide des transactions liées aux mouvements, aux interactions entre joueurs, aux achats d'objets virtuels et aux récompenses en jeu par exemple. De nombreux framework de programmations spécifiquement dédiés à ces cas d'usages sont en cours de développement
En plus des jeux vidéo, Starknet peut également bénéficier à d'autres systèmes exigeants tels que les applications de finance décentralisée, les marchés NFT, les échanges décentralisés et d'autres applications nécessitant une exécution rapide.
En résumé, l'objectif de Starknet est de fournir une solution performante et efficace au problème de passage à l’échelle rencontré par la technologie blockchain. Starknet révolutionne le Web3 en permettant l'exécution de transactions de manière très optimale, sans compromettre la sécurité ni la décentralisation du réseau. Les ZK-STARKs garantissent ainsi l'intégrité des calculs et des transitions d'état tout en fournissant une preuve non-manipulable de leur bonne exécution.
L'architecture de rollup existante offre ainsi une opportunité d'augmentation du débit et de réduction des coûts par rapport à Ethereum, qui permettra à terme de permettre d’autres usages, notamment dans les jeux vidéo.
Pour plus d'informations sur les applications Starknet en cours de construction, ou déjà déployées, n’hésitez pas à visiter le site de Starknet.