Ce référentiel contient un exemple de rollup qui s'intègre à Espresso Sequencer. L'exemple de cumul représente un simple magasin de comptes clé/valeur qui reçoit les transactions commandées d'Espresso, les exécute dans la VM de cumul et publie des preuves d'état fictives sur un contrat intelligent L1 (Ethereum). Le cumul contient une API simple pour soumettre des transactions et interroger les soldes des comptes.
Espresso repose sur HotShot, un réseau qui parvient à un consensus sur des lots de transactions cumulées. À un niveau élevé, un rollup est une solution de mise à l'échelle L1 qui effectue des calculs coûteux hors chaîne. Dans le cas de zkRollups, un prouveur soumet périodiquement des points de contrôle d'état de cumul ainsi que des preuves par lots de validité de transaction au L1. L'exemple illustré ici est un zkRollup simulé. Pour en savoir plus sur les rollups Espresso, lisez nos documents
Assurez-vous que docker
est installé sur votre système.
Pour les distributions Linux, suivez les instructions officielles de votre distribution Linux ou consultez les instructions officielles du Docker.
Nous devons d’abord démarrer un réseau local Espresso Sequencer.
git clone https://github.com/EspressoSystems/espresso-sequencer
cd espresso-sequencer
docker compose pull
docker compose up -d --wait
Une fois cette opération terminée, déployez l’exemple de rollup, il peut être exécuté de manière native.
Pour exécuter nativement, une chaîne d’outils Rust est requise. Nous fournissons un shell nix pour installer toutes les dépendances. Nix peut être installé via le nix-installer. Une fois installé, exécutez ce qui suit à la racine du projet :
nix develop
just dev-demo
Après avoir exécuté just dev-demo
, vous pourrez voir new state event
après quelques minutes.
submit
de l'API du rollup. Si Alice craint la censure, elle peut envoyer sa transaction directement au séquenceur.Light Client
sur L1, qui vérifie qu'un consensus a été atteint sur le nouvel état.État de cumul
L'état de l'exemple de cumul est le suivant :
Exécuteur
L'exécuteur est un service chargé de souscrire au nouvel état publié dans le contrat client léger L1, d'appliquer les transactions à l'état de cumul et de soumettre des preuves simulées au contrat de cumul. Les cumuls séparent souvent les rôles d'exécuteur et de prouveur en deux services distincts, mais cet exemple les combine par souci de simplicité.
API de cumul
L'API de cumul est une API REST qui inclut un point de terminaison submit
et query
.
Contrat cumulatif
Le contrat de cumul stocke l’engagement d’état de cumul le plus récent. Le contrat met à jour l'engagement de l'État lorsqu'il reçoit de l'exécuteur une preuve de transition d'état valide.
Dans cet exemple, nous avons utilisé quelques composants Espresso comme décrit ci-dessous. Plus d'informations peuvent être trouvées dans la documentation
Le client léger est un contrat intelligent qui vérifie l'intégrité de l'état du cumul. Le code du contrat peut être trouvé ici
Nous avons géré un réseau expresso en utilisant les images docker du séquenceur expresso. Le réseau utilise hotshot pour parvenir à un consensus sur l'état du cumul. L'architecture peut être trouvée ici
Espresso Network utilise HotShot pour parvenir à un consensus sur l'état du cumul.