Dieses Repository enthält ein Beispiel-Rollup, das in den Espresso Sequencer integriert ist. Das Beispiel-Rollup stellt einen einfachen Schlüssel-/Wert-Kontospeicher dar, der bestellte Transaktionen von Espresso empfängt, sie in der Rollup-VM ausführt und Scheinstatusnachweise für einen L1-Smart-Vertrag (Ethereum) veröffentlicht. Das Rollup enthält eine einfache API zur Übermittlung von Transaktionen und zur Abfrage von Kontoständen.
Espresso basiert auf HotShot, einem Netzwerk, das einen Konsens über Stapel von Rollup-Transaktionen erzielt. Auf einer hohen Ebene ist ein Rollup eine L1-Skalierungslösung, die teure Berechnungen außerhalb der Kette durchführt. Im Fall von zkRollups übermittelt ein Prüfer regelmäßig Rollup-Statusprüfpunkte zusammen mit Stapelnachweisen der Transaktionsgültigkeit an L1. Das hier dargestellte Beispiel ist ein simuliertes zkRollup. Um mehr über die Espresso-Rollups zu erfahren, lesen Sie unsere Dokumente
Stellen Sie sicher, dass docker
auf Ihrem System installiert ist.
Befolgen Sie für Linux-Distributionen die offiziellen Anweisungen Ihrer Linux-Distribution oder sehen Sie sich die offiziellen Docker-Anweisungen an.
Zuerst müssen wir ein lokales Espresso Sequencer-Netzwerk starten.
git clone https://github.com/EspressoSystems/espresso-sequencer
cd espresso-sequencer
docker compose pull
docker compose up -d --wait
Sobald die Bereitstellung des Beispiel-Rollups abgeschlossen ist, kann es nativ ausgeführt werden.
Für die native Ausführung ist eine Rust-Toolchain erforderlich. Wir stellen eine Nix-Shell zur Verfügung, um alle Abhängigkeiten zu installieren. Nix kann über den Nix-Installer installiert werden. Führen Sie nach der Installation Folgendes im Stammverzeichnis des Projekts aus:
nix develop
just dev-demo
Nachdem Sie just dev-demo
ausgeführt haben, können Sie nach einigen Minuten new state event
sehen.
submit
-Endpunkt der Rollup-API an das Rollup. Wenn Alice Angst vor Zensur hat, kann sie ihre Transaktion direkt an den Sequenzer senden.Light Client
-Vertrag auf L1, der überprüft, ob ein Konsens über den neuen Status erzielt wurde.Rollup-Status
Der Status des Beispiel-Rollups besteht aus:
Testamentsvollstrecker
Der Executor ist ein Dienst, der dafür verantwortlich ist, den neuen Status zu abonnieren, der im L1-Light-Client-Vertrag veröffentlicht wird, Transaktionen auf den Rollup-Status anzuwenden und Scheinnachweise für den Rollup-Vertrag einzureichen. Rollups trennen häufig die Rollen des Ausführenden und des Prüfers in zwei unterschiedliche Dienste, in diesem Beispiel werden sie jedoch der Einfachheit halber kombiniert.
Rollup-API
Die Rollup-API ist eine REST-API, die einen submit
und query
enthält.
Rollup-Vertrag
Im Rollup-Vertrag wird die aktuellste Rollup-Zustandsverpflichtung gespeichert. Der Vertrag aktualisiert die staatliche Verpflichtung, wenn er vom Testamentsvollstrecker einen gültigen Zustandsübergangsnachweis erhält.
In diesem Beispiel haben wir einige Espresso-Komponenten wie unten beschrieben verwendet. Weitere Informationen finden Sie in den Dokumenten
Der Light Client ist ein Smart Contract, der die Integrität des Rollup-Status überprüft. Den Vertragscode finden Sie hier
Wir haben ein Espresso-Netzwerk mit den Docker-Bildern des Espresso-Sequenzers betrieben. Das Netzwerk verwendet Hotshot, um einen Konsens über den Rollup-Status zu erzielen. Architektur finden Sie hier
Espresso Network verwendet HotShot, um einen Konsens über den Rollup-Status zu erzielen.