Zum Hauptinhalt springen
Change page

Smart-Contract-Sprachen

Ein großartiger Aspekt von Ethereum ist, dass Smart Contracts mit relativ entwicklerfreundlichen Sprachen programmiert werden können. Wenn Sie Erfahrung mit Python oder einer Programmiersprache mit geschweiften Klammern (öffnet in einem neuen Tab) haben, können Sie eine Sprache mit vertrauter Syntax finden.

Die beiden aktivsten und am besten gepflegten Sprachen sind:

  • Solidity
  • Vyper

Die integrierte Entwicklungsumgebung (IDE) Remix bietet eine umfassende Entwicklungsumgebung zum Erstellen und Testen von Verträgen in Solidity und Vyper. Probieren Sie die browserbasierte Remix-IDE aus (öffnet in einem neuen Tab), um mit dem Programmieren zu beginnen.

Erfahrenere Entwickler möchten vielleicht auch Yul verwenden, eine Zwischensprache für die Virtuelle Ethereum-Maschine (EVM), oder Yul+, eine Erweiterung für Yul.

Wenn Sie neugierig sind und dabei helfen möchten, neue Sprachen zu testen, die sich noch in der intensiven Entwicklung befinden, können Sie mit Fe experimentieren, einer aufstrebenden Smart-Contract-Sprache, die noch in den Kinderschuhen steckt.

Voraussetzungen

Vorkenntnisse in Programmiersprachen, insbesondere in JavaScript oder Python, können Ihnen helfen, die Unterschiede zwischen Smart-Contract-Sprachen zu verstehen. Wir empfehlen Ihnen außerdem, Smart Contracts als Konzept zu verstehen, bevor Sie zu tief in die Sprachvergleiche eintauchen. Einführung in Smart Contracts.

Solidity

  • Objektorientierte Hochsprache zur Implementierung von Smart Contracts.
  • Sprache mit geschweiften Klammern, die am stärksten von C++ beeinflusst wurde.
  • Statisch typisiert (der Typ einer Variablen ist zur Kompilierzeit bekannt).
  • Unterstützt:
    • Vererbung (Sie können andere Verträge erweitern).
    • Bibliotheken (Sie können wiederverwendbaren Code erstellen, den Sie aus verschiedenen Verträgen aufrufen können – wie statische Funktionen in einer statischen Klasse in anderen objektorientierten Programmiersprachen).
    • Komplexe benutzerdefinierte Typen.

Beispielvertrag

Dieses Beispiel soll Ihnen ein Gefühl dafür geben, wie die Syntax von Solidity-Verträgen aussieht. Für eine detailliertere Beschreibung der Funktionen und Variablen lesen Sie die Dokumentation (öffnet in einem neuen Tab).

Vyper

  • Pythonische Programmiersprache
  • Starke Typisierung
  • Kleiner und verständlicher Compiler-Code
  • Effiziente Bytecode-Generierung
  • Hat absichtlich weniger Funktionen als Solidity, mit dem Ziel, Verträge sicherer und einfacher überprüfbar (auditierbar) zu machen. Vyper unterstützt Folgendes nicht:
    • Modifikatoren (Modifiers)
    • Vererbung
    • Inline-Assembly
    • Überladen von Funktionen
    • Überladen von Operatoren
    • Rekursive Aufrufe
    • Endlosschleifen
    • Binäre Festkommazahlen

Seit v0.4.0 unterstützt Vyper ein Modulsystem (öffnet in einem neuen Tab). Die Wiederverwendung von Code wird durch Komposition anstelle von Klassenvererbung erreicht.

Für weitere Informationen lesen Sie die Grundprinzipien (Rationale) von Vyper (öffnet in einem neuen Tab).

Beispiel

Dieses Beispiel soll Ihnen ein Gefühl dafür geben, wie die Syntax von Vyper-Verträgen aussieht. Für eine detailliertere Beschreibung der Funktionen und Variablen lesen Sie die Dokumentation (öffnet in einem neuen Tab).

Yul und Yul+

Wenn Sie neu bei Ethereum sind und noch nicht mit Smart-Contract-Sprachen programmiert haben, empfehlen wir Ihnen, mit Solidity oder Vyper zu beginnen. Beschäftigen Sie sich erst mit Yul oder Yul+, wenn Sie mit den Best Practices für die Sicherheit von Smart Contracts und den Besonderheiten der Arbeit mit der Virtuellen Ethereum-Maschine (EVM) vertraut sind.

Yul

  • Zwischensprache für Ethereum.
  • Unterstützt die EVM und Ewasm (öffnet in einem neuen Tab), ein auf Ethereum zugeschnittenes WebAssembly, und ist als nutzbarer gemeinsamer Nenner beider Plattformen konzipiert.
  • Gutes Ziel für High-Level-Optimierungsstufen, von denen sowohl EVM- als auch Ewasm-Plattformen gleichermaßen profitieren können.

Yul+

  • Eine Low-Level-, hocheffiziente Erweiterung für Yul.
  • Ursprünglich für einen Optimistic Rollup-Vertrag entwickelt.
  • Yul+ kann als experimenteller Upgrade-Vorschlag für Yul betrachtet werden, der neue Funktionen hinzufügt.

Beispielvertrag

Das folgende einfache Beispiel implementiert eine Potenzfunktion. Es kann mit solc --strict-assembly --bin input.yul kompiliert werden. Das Beispiel sollte in der Datei input.yul gespeichert werden.

Wenn Sie bereits viel Erfahrung mit Smart Contracts haben, finden Sie hier (öffnet in einem neuen Tab) eine vollständige ERC-20-Implementierung in Yul.

Fe

  • Statisch typisierte Sprache für die Virtuelle Ethereum-Maschine (EVM).
  • Inspiriert von Python und Rust.
  • Soll leicht zu erlernen sein – auch für Entwickler, die neu im Ethereum-Ökosystem sind.
  • Die Entwicklung von Fe befindet sich noch in einem frühen Stadium, die Sprache hatte ihre Alpha-Veröffentlichung im Januar 2021.

Beispielvertrag

Das Folgende ist ein einfacher Vertrag, der in Fe implementiert wurde.

Wie man sich entscheidet

Wie bei jeder anderen Programmiersprache geht es hauptsächlich darum, das richtige Werkzeug für die jeweilige Aufgabe zu wählen, sowie um persönliche Vorlieben.

Hier sind ein paar Dinge, die Sie beachten sollten, wenn Sie noch keine der Sprachen ausprobiert haben:

Was ist das Tolle an Solidity?

  • Wenn Sie Anfänger sind, gibt es viele Tutorials und Lernwerkzeuge. Mehr dazu finden Sie im Abschnitt Lernen durch Programmieren.
  • Gute Entwickler-Tools verfügbar.
  • Solidity hat eine große Entwickler-Community, was bedeutet, dass Sie höchstwahrscheinlich recht schnell Antworten auf Ihre Fragen finden werden.

Was ist das Tolle an Vyper?

  • Großartiger Einstieg für Python-Entwickler, die Smart Contracts schreiben möchten.
  • Vyper hat eine geringere Anzahl an Funktionen, was es ideal für das schnelle Prototyping von Ideen macht.
  • Vyper zielt darauf ab, leicht überprüfbar (auditierbar) und maximal menschenlesbar zu sein.

Was ist das Tolle an Yul und Yul+?

  • Einfache und funktionale Low-Level-Sprache.
  • Ermöglicht es, viel näher an die reine EVM heranzukommen, was helfen kann, den Gas-Verbrauch Ihrer Verträge zu optimieren.

Sprachvergleiche

Für Vergleiche der grundlegenden Syntax, des Vertragslebenszyklus, der Schnittstellen, Operatoren, Datenstrukturen, Funktionen, des Kontrollflusses und mehr, schauen Sie sich diesen Spickzettel (Cheatsheet) von Auditless (öffnet in einem neuen Tab) an.

Weiterführende Literatur