Introduction
Cairo est un langage de programmation Turing-complet à usage général permettant d’écrire des programmes prouvables. StarkNet utilise le langage Cairo pour son infrastructure et l’écriture des smart contracts.
Avec les problèmes de scalabilité liés à Ethereum et son langage de programmation Solidity, un nouveau paradigme s’est formé, nommé “Provable Computation” en français “calcul prouvable”. Solidity a amené le paradigme des “calculs composables” et bien maintenant avec les calculs prouvables, les avantages du calcul composable sont conservés, avec la possibilité de prouver que des programmes ont été réexécutés entièrement
Avec ce nouveau paradigme, l’idée est qu’un composant off-chain (prouveur) prend en charge les exécutions les plus complexes et communique avec un smart contract on-chain (smart contract de vérification). Le tout sans renoncer à la sécurité du système, car tous les changements d’état du système sont garantis par des preuves STARKs pour StarkNet.
C’est ainsi que de plus en plus d’applications se tournent vers des solutions dites de Layer 2 tels que StarkNet, c’est au sein de ce nouveau paradigme que le langage Cairo intervient !
En effet, Cairo a été conçu dans le but de prouver succinctement l’exécution correcte d’un programme, il est sans état, ce qui signifie que vous n’avez pas d’accès natif au stockage, ni aux autres programmes Cairo, ni à l’état L1.
Cependant, dans la machine virtuelle StarkNet, il existe un état persistant auquel les smart contracts peuvent accéder et modifier. Les smart contracts peuvent stocker des variables, communiquer avec d’autres contracts, échanger des messages L2<>L1 et inversement.
StarkNet est donc un réseau dont l’exécution est programmée en Cairo, et dont les transitions d’états peuvent être prouvées grâce à des preuves STARKs et ainsi être vérifiées sur Ethereum L1.
Comment s’exécute Cairo ?
Lorsqu’un développeur souhaite déployer son contrat sur StarkNet, il soumet une transaction auprès du Séquenceur qui est chargé du séquençage des transactions ainsi que l’exécution de StarkNet OS. Ceci permet de mettre à jour l’état du réseau au sein du contrat StarkNet Core.
En second lieu, l’exécution d’un programme Cairo génère une trace qui est ensuite envoyée à un prouveur sans permission (permissionless)* qui à son tour génère une preuve STARK validant l’énoncé ou le calcul représenté par le programme Cairo. S’ensuit la vérification de la preuve à l’aide d’un vérifieur (pouvant être on-chain ou non).
*Il est actuellement possible à quiconque de déployer des contrats sur le testnet grâce à SHARP. Cependant, il n’est pas encore possible de déployer des contrats sans permission sur le mainnet, uniquement sur demandes auprès de StarkWare pour que vos contrats soient mis sur liste blanche.
Autrement dit, le prouveur exécute le programme et créer une preuve qui renvoie une sortie Y quand on lui donne une entrée X.
Et en pratique ?
- Écrivez votre programme avec Cairo
- Générez une preuve d’exécution sur L2
- Envoyez la preuve au contrat de vérification sur L1
- Une fois validée sur L1, votre application peut utiliser le résultat en toute confiance.
L’avantage est que StarkNet est un Validity Rollup. Grâce à sa conception reposant sur des preuves de validité, il est exigé un temps de 30 minutes pour soumettre votre preuve et ainsi être inclus et mis à jour sur l’état d’Ethereum. Contrairement aux 7 jours nécessaires pour soumettre une preuve de fraude via un Optimistic rollup.
Toutes fois ceci ne serait possible sans ce fameux prouveur !
The Shared Prover – L’élément essentiel au processus
SHARP est un prouveur public. Il génère les preuves de validité provenant des traces d’exécutions des programmes envoyés par les utilisateurs.
SHARP comprend 3 composants principaux :
- un prouveur (off-chain)
- un smart contract du vérifieur (on-chain)
- un contrat de registre de faits (on-chain)
Comment fonctionne SHARP ?
SHARP – Shared Prover, génère actuellement les preuves attestant de la validité des exécutions des programmes issus du langage Cairo comme la transition d’état de StarkNet. Ceci est assuré par StarkNet OS.
Fonctionnement :
- le prouveur prend la trace d’exécution de votre programme Cairo
- prouve qu’il est valide et envoie cette preuve au vérifieur
- après vérification de la preuve, le vérifieur écrit un fait attestant de la validité de la preuve dans le registre des faits on-chain (ce fait un comparable à un sceau d’approbation sans confiance, certifiant que le programme écrit en Cairo a été calculé correctement)
- le smart contract de la dApp vérifie que ce fait existe permettant de s’appuyer sur le calcul qui a été exécuté off-chain
Pourquoi StarkNet utilise SHARP ?
Le programme Cairo assure la validité des transitions d’états de StarkNet est StarkNet OS. Étant écrit en Cairo, il peut utiliser SHARP.
Les preuves de transition d’état de StarkNet peuvent être réalisée avec un ensemble de programmes qui ne sont pas liés à StarkNet, ce qui réduit le coût marginal de chaque participant.
L’intérêt pour StarkNet d’utiliser SHARP est d’avoir un prouveur dédié garantissant plusieurs paramètres, dont les TPS.
Outils – Cairo !
Le Compilateur permet de traduire des programmes Cairo en Cairo bytecode
La Machine Virtuelle Cairo est un logiciel permettant d’utiliser le bytecode produit par le compilateur afin de l’exécuter sur un ordinateur. La sortie de cette exécution est la trace du programme qui peut ensuite être envoyée à un prouveur STARK validant ainsi l’énoncé exprimé dans le code Cairo.
Le Tracer permet de déboguer en affichant une représentation visuelle de la trace pendant l’exécution du programme, permettant ainsi au développeur d’identifier les problèmes et d’observer plus en détails l’exécution du code.
Sincères remerciements à @Sylve, @Aurelou et @Henri pour la relecture et leurs précieux commentaires sur cette page.
Lectures complémentaires :
Amarna: Static analysis for Cairo programs
Provable vs. Composable Computation or why Cairo will supersede Solidity
En apprendre plus sur Cairo :
Site Officiel | Documentation | Cairo Paper | Guide ressources | Hello, Cairo | How Cairo Works