How-To

So programmierst du Smart Contracts mit Ethereum und Webassembly

Wie funktionieren die sogenannten Smart Contracts und wo geht die Reise hin? (Abbildung: Shutterstock / ImYanis)

Lesezeit: 6 Min.
Artikel merken

Ethereum steht hinter einer der populärsten Kryptowährungen – und doch ist es noch sehr viel mehr. Damit kann kryptografisches Geld dank Algorithmen nämlich völlig ­autonom verwaltet werden. Aber wie funktionieren die sogenannten Smart Contracts und wo geht die Reise hin?


Um das Prinzip der Smart Contracts in Ethereum zu verstehen, ist es notwendig, zunächst einen kurzen Exkurs in die Welt der Programmiersprachen zu unternehmen. Die gängigen Programmiersprachen teilen sich grundsätzlich in zwei Gruppen: interpretierte und kompilierte Sprachen. Bei der ersten Gruppe schreibt man Programme in einer Hochsprache, die dann von einem Interpreter ausgeführt werden. Zwei populäre Beispiele dafür sind Python und JavaScript. Interpretierte Sprachen sind in vielen Anwendungsdomänen (wie zum Beispiel im Web) verbreitet, denn man kann sofort loslegen. Außerdem sind sie sehr universell und auf verschiedenen Plattformen einsetzbar, ohne dass man weiteres Tooling braucht.

Demgegenüber stehen kompilierte Sprachen, bei denen zunächst ein Compiler den Programmtext in eine andere Sprache – oft binärer Maschinencode – überführt. Dieser Binärcode ist plattformabhängig und wird direkt auf einem Prozessor ausgeführt. Der ­Compiler kann (und muss) maßgeschneiderten Code für den Befehlssatz des Prozessors ausgeben, zum Beispiel für ARM- oder Intel-kompatible CPU. Bekannte Vertreterinnen dieses Typus sind C und Rust.

Die Realität ist jedoch wie immer komplexer, als diese ein­fachen Kategorien suggerieren. Seit längerer Zeit gibt es ­Mischformen, wie zum Beispiel Java. Der Java-Compiler übersetzt ­nämlich Java-Code nicht direkt in „echten“ Maschinencode, sondern in ein spezielles ­Zwischenformat. Dieses Zwischenformat wiederum wird dann von einem Interpreter – der Java Virtual Machine – auf der konkreten ­Prozessorarchitektur ausgeführt.

(Abbildung: Lars Hupel)

Auf ähnliche Weise funktionieren auch die Smart Contracts in Ethereum. Sämtliche Knoten, die in Ethereum Transaktionen validieren und neue Währung schürfen, beinhalten eine Instanz der ­Ethereum Virtual Machine (EVM). Im Yellow Paper, der technischen Spezifikation von Ethereum, ist haarklein definiert, ­welche Instruktionen die EVM unterstützen – und wie sie auszuführen sind.

Es handelt sich dabei um eine Eigenentwicklung, die zahlreiche Besonderheiten aufweist:

Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

  • Interaktion mit der äußeren Welt ist nicht möglich: ­Sämtliche algorithmischen Entscheidungen müssen sich aus der ­Blockchain und ihren Transaktionen ergeben.
  • Arithmetik basiert auf 256-Bit-Werten, um das Hantieren mit ­Adressen und größeren Geldbeträgen zu erleichtern.
  • Spezialoperationen wie die Hash-Funktionen sind zur Performance-­Steigerung direkt eingebaut.
  • Sämtlichen Instruktionen ist eine Kostenfunktion (engl. Fuel) zugeordnet, die grob der nötigen Ausführungszeit und dem Speicher­aufwand entspricht. Im Englischen ist der Begriff ­Metering üblich.
  • Programmieren auf der EVM

Ähnlich wie im Java-Ökosystem gibt es mehrere Programmiersprachen, für die EVM-Compiler zur Verfügung stehen. Die verbreitetste Sprache ist Solidity, die oberflächlich (syntaktisch) an JavaScript erinnert. Stand Ende 2020 listet die Ethereum-­Dokumentation noch zwei weitere Sprachen: Vyper, die sich an Python orientiert, und Yul Plus, eine komplett eigenständige ­Entwicklung.

Auch interessant: „Ethereum-Gründer Vitalik Buterin: Philosoph im Regenbogen-Shirt“

Gemein ist all diesen Sprachen, dass sie domänenspezifisch sind, denn im Gegensatz zu den General-Purpose-Languages besetzen sie eine Nische mit speziellen Features und insbesondere einer speziellen Runtime: der EVM. Natürlich sind solche domänen­spezifischen Sprachen (DSL) grundsätzlich eine gute Idee, um die Komplexität von Anwendungen zu reduzieren.

Doch im Falle der EVM erscheint das wenig sinnvoll. Schließlich kann sie – ungeachtet der fehlenden Interaktionsmöglich­keiten mit der Blockchain-externen Welt – beliebige Algorithmen ausführen, ist also (vereinfacht ausgedrückt) Turing-vollständig.

Warum nutzt man also nicht eine existierende Sprache und Laufzeitumgebung? Gegebenenfalls müsste man dann zwar Features entfernen, könnte aber auf eine längere Erfahrung, stabileres Tooling und – viel wichtiger – eine breitere Basis von Programmierern zurückgreifen. Denn es ist ein alter Hut, dass heutzutage für die Popularität einer Programmiersprache nicht nur ausschlaggebend ist, ob man in ihr besonders konzis, typsicher oder dynamisch programmieren kann, sondern auch, wie einfach man auf wie viele existierende Bibliotheken und Pakete zugreifen kann. Besonders wird dieser Zeitenwandel von JavaScript illustriert, das oft für seine krude Semantik kritisiert wird, aber spätestens seit dem Millionsten NPM-Paket als ­populärste Programmiersprache gelten muss.

Das könnte dich auch interessieren

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Digitales High Five
Holger Schellkopf (Chefredakteur t3n)

Anleitung zur Deaktivierung

Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder