Tech-Talk: Smart Contract Entwicklung in Cairo
In diesem Teck-Talk gab Jonathan Bättig eine Einführung wie Smart Contracts – dezentralisierte Applikationen auf der Blockchain – entwickelt werden können mit der Programiersprache Cairo. Das Umfeld und die Vorteile von Cairo wurden erklärt und in einem Life Coding wurde ein kleiner Smart Contract entwickelt, getestet und deployed.
Blockchain & Smart Contracts
Eine Blockchain ist eine dezentralisierte Datenbank, bei welcher Knoten peer-to-peer über ein gewisses Protokol kommunizieren (z.B. Bitcoin). Transaktionen erfolgen in Blöcken – deshalb Blockchain. Für solche Transaktionen muss man bezahlen, das teuerste daran ist persistenter Speicher.
Smart Contracts sind Programme, die auf der Blockchain sind und über Transaktionen genutzt werden können.
Wenn Blöcke produziert werden, müssen diese von Validatoren dezentral überprüft werden. Hier erscheint das Skalierungsproblem: um zu überprüfen, ob eine Transaktion korrekt ausgeführt wurde, muss diese im Normalfall erneut ausgeführt werden, um dann die Ergebnisse vergleichen zu können. Bei aufwendigen Berechnungen braucht das enorm Energie und ist unter umständen nicht machbar, da nicht alle Validatoren die gleiche Rechenleistung bringen.
Starknet
Starknet ist eine Layer-2 Blockchain Applikation, welche den hohen Transaktionskosten auf Ethereum und dem Skalierungsproblem entgegen wirkt.
Gebündelte Transaktionen sind billiger, da Metadaten gespart werden und mit Hilfe der Proof, müssen Validatoren nicht mehr die ganze Transaktion überprüfen, sondern nur noch die Proof ansich. beispielsweise den gleichen Code für das Programmieren einer SPI-Schnittstelle auf verschiedenen Microcontrollern zu verwenden. Der HAL kümmert sich darum, dass die korrekten Register beschrieben bzw. ausgelesen werden.
Cairo
Von Cairo Programmen können Stark-Proofs effizient erstellt werden ohne das man grosses Know-How darüber haben muss.
Cairo ist eine general purpose Sprache und läuft auf der Cairo-VM. Sie verwendet immutable Memory und finite Fields, um die Proof generierung zu ermöglichen / vereinfachen. Die Syntax ist sehr ähnlich zu Rust mit starker Typisierung, Traits, Makros, Ownership etc.
Scrab ist ein Package Manager für Cairo mit Build und Test support.
Code
Um einen Smart Contract zu erstellen, muss man ein eigenes Starknet Contract Interface erstellen und Funktionen darin definieren:
Wenn hier self
mit ref
übergeben wird, dann ist der State mutable – für die Nutzung dieser Funktionen muss man bezahlen. Das @
heisst, dass der State als immutable View übergeben wird und somit keine Transaktion auf der Blockchain auslöst und gratis ist.
Dann muss man noch eine Implementation des Interfaces schreiben:
Hier wird auch definiert, was überhaupt im State enthalten ist.
Nutzung
Wenn man nun einen Smart Contract mit Starknet Foundry deployed hat, sieht man diesen auf der Starkscan Webseite und kann die definierten Funktionen aufrufen. Read-only Funktionen sind gratis, da sie keine Transaktion generieren.
Im Starknet geht das Ausführen von Transaktionen nur einige wenige Sekunden. Die Transaktionen werden aber nur ~1 mal in der Stunde auf die Ethereum Blockchain geladen, wo sie validiert werden.
Tech-Talk: Jonathan Bättig (jonathan.baettig@students.fhnw.ch), MSE Student
Blog Beitrag: Janic Berger (janic.berger@fhnw.ch), MSE Student und Assistent am IMVS
Kommentare
Keine Kommentare erfasst zu Tech-Talk: Smart Contract Entwicklung in Cairo