Toolchain für Ethereum

IDEs und Tools für Dapps und Smart Contracts

| Autor / Redakteur: Mirco Lang / Florian Karlstetter

Die Blockchain-Entwicklung ist noch zu jung und unausgegoren, um auf standardisierte Tools zurückgreifen zu können.
Die Blockchain-Entwicklung ist noch zu jung und unausgegoren, um auf standardisierte Tools zurückgreifen zu können. (Bild: © lmonk72 - Pixabay / CC0)

Wer Python oder JavaScript beherrscht, hat bereits den wichtigsten Schritt in Richtung Blockchain-Entwicklung getan. Aber mit welchen Tools lassen sich diese Fähigkeiten umsetzen? Ein Überblick über die wichtigsten Frameworks, IDEs und Helferlein rund um Solidity, Dapps und Smart Contracts in Ethereum.

Der Einstieg in die Blockchain-Entwicklung ist bisweilen etwas holprig, das ganze Universum aus Dokumentationen, Hilfen und Artikeln ist noch recht jung und unausgegoren. Und auf der Tool-Seite gibt es einen riesigen Wust aus IDEs, Frameworks, Compilern, Bindings, APIs und so weiter – viele nicht klar abgrenzbar, viele nach kurzer Zeit wieder eingestellt und „das eine“ Standard-Tool-Set hat sich auch noch nicht heraus kristallisiert.

Wer sich der Thematik über Praxis, Tutorials und verfügbare Software sowie deren Funktionen annähern will, bekommt hier einen kurzen Überblick über die wichtigsten Tools zum Entwickeln, Testen und Deployen verteilter Anwendungen (Dapps) und ihrer Smart Contracts. Der grundsätzliche Aufbau einer Entwicklungsumgebung für Dapps sieht dabei wie folgt aus: Für die Frontend-Entwicklung kann ein beliebiger HTML-/JavaScript-Editor herhalten, für das Backend/den Smart Contract kommt eine IDE oder ein Framework zum Einsatz und zum Testen bedarf es gegebenenfalls noch eines lokalen Ethereum-Test-Nodes; alternativ kann auch Ethereums Testnetz „Ropsten“ genutzt werden.

Programmiersprachen

Die Basis für jede Entwicklung bildet natürlich die Programmiersprache und für das Backend, die Smart Contracts, gibt es hier drei Varianten:

  • Die Standardsprache Solidity arbeitet mit einer JavaScript-ähnlichen Syntax, ist objektorientiert und kann ausschließlich von der Ethereum Virtual Machine (EVM), also auf der Blockchain ausgeführt werden. Für die produktive Entwicklung von Verträgen ist die High Level Language Solidity heute eindeutig die erste Wahl.
  • Serpent ist an Python angelehnt und etwas rudimentärer und näher an der EVM als Solidity. Die Sprache bietet die Effizienzvorteile einer Low Level Language und zugleich einfachen Code und spezielle Smart-Contract-Funktionen.
  • Lisp Like Language (LLL) ist eine an Lisp angelehnte Low-Level-Sprache, die in der Praxis jedoch kaum genutzt wird, selbst die obige GitHub-Adresse scheint verwaist.

CLI-Frameworks

  • Truffle ist derzeit wohl das verbreitetste Framework zum Entwickeln von Dapps und läuft wie alle Tools dieser Kategorie ausschließlich auf der Kommandozeile. Der Funktionsumfang entspricht im Grunde ähnlichen Rahmenwerken für herkömmliche Programmiersprachen: Kompilierung, Verlinkung und Deployment von Verträgen, automatische Testverfahren, Scripting-Fähigkeiten für Wartung/Deployment, Verwaltung mehrerer Blockchains/Netzwerke (test, produktiv), Paketmanager für Smart-Contract-Abhänigkeiten, interaktive Konsole, einfache Anbindung an den Test-/Entwicklungs-Client EthereumJS TestRPC.
  • Embark ist als Framework nicht auf Ethereum spezialisiert, sondern unterstützt auch die Entwicklung verteilter Anwendungen für dezentralisierten Speicher via InterPlanetary File System (IPFS) sowie die dezentralisierten Kommunikationsplattformen Whisper und Orbit. Der Funktionsumfang für Ethereum: Automatisches Deployment von (aktualisierten) Verträgen, Kompilierung, Verwaltung unterschiedlicher Netzwerke sowie Abhängigkeiten
  • Dapp ist ein einfaches CLI-Werkzeug und erledigt ebenfalls die Basics der Entwicklung: Paketmanagment, Unit testingund Deployment.

IDEs

Die „Standard“-IDE ReMix im Browser.
Die „Standard“-IDE ReMix im Browser. (Bild: ReMix Screenshot)

  • ReMix ist eine Browser-basierte Entwicklungsumgebung – und kann somit direkt über den Link ausprobiert werden; ein Beispielprojekt wird standardmäßig geladen. Die IDE bietet einen simplen Texteditor mit Syntax-Highlighting, Projektverwaltung, Module für Debugging und Analyse und kann für Testzwecke auch eine Verbindung zum lokalen Server aufbauen. ReMix ist jedoch weit davon entfernt selbsterklärend zu sein und die Dokumentation ist spärlich und unvollständig.
  • Die Visual Studio Solidity Extension von ConsenSys bringt Solidity-Unterstützung in die gewohnte Visual-Studio-Umgebung und unter anderem folgende Features mit: Deployment, Compilation, Projektmanagement, kontextsensitive Menüs, Syntax-Highlighting, Vorlagen, Entwicklung für NodeJS und ASP.Net, erweiterte Testing-Werkzeuge und natürlich die äußerst nützliche Auto-Vervollständigung samt zugehöriger Klammern.

Testing/Clients

  • testrpc ist ein auf Node.js basierender Ethereum-Client zum lokalen Testen von Smart Contracts, ohne eine Verbindung zu einem echten Blockchain-Netzwerk zu benötigen; testrpc wird in vielen Anleitungen im Netz eingesetzt.
  • Alternativ zu testrpc kann auch das Tester-Modul pyethereum.tester genutzt werden – die Dokumentation ist auch hier wieder eher seicht, die Interaktion mit dem lokalen Testnetz aber auch recht simpel, unter anderem da nach der Installation direkt zehn Test-Accounts zur Verfügung stehen.
  • Natürlich kann auch mit dem regulären Client geth eine Testumgebung aufgebaut werden.
  • web3.js ist die Ethereum JavaScript API und eine gute Möglichkeit, einfach mit dem lokalen Testnetz zu interagieren; eine exakte, englischsprachige Anleitung zum Aufsetzen einer Testumgebung mit testrpc und web3.js findet sich hier.

Sonstige Tools

  • solc-js bietet JavaScript-Bindings für den Solidity Compiler (solc). So können JavaScript-Entwickler ohne Umgewöhnung direkt in gewohnter Umgebung Smart Contracts programmieren.
  • Solidity REPL ist eine interaktive Shell für Solidity (ähnlich iPython), mit der sich sehr einfach erste Erfahrungen mit Solidity-Syntax und -Funktionen machen lassen.
  • Doxity erzeugt automatisch eine Dokumentation aus dem Solidity-Code von Smart Contracts. Die statischen HTML-Seiten können so direkt in GitHub integriert werden. Doxity unterstützt Syntax-Highlighting, komplett individualisierbare Ergebnisse und Whitelisting für Methoden, Application Binary Interface Code (ABI), Bytecode und/oder Quellcode. Die Anwendung arbeitet auch mit Truffle zusammen.

Eingestellte Apps

Das Wort „deprecated“ taucht auf sehr vielen Webseiten rund um Blockchain-Entwicklung ganz allgemein auf – viele Tools werden genauso schnell eingestellt, wie sie aufgetaucht sind. Das ist verständlich, da die Thematik noch recht jung und sehr dynamisch ist – bei der Einarbeitung ist es aber schwierig: Kaum ist ein brauchbar aufgebauter Artikel gefunden, stellt er sich auch schon als obsolet heraus, wenn die „falschen“ Tools verwendet wurden.

Die hier wohl wichtigsten Stichwörter sind die App-Namen Mix (Vorgänger von ReMix), Ethereum Studio, AlethZero und Dapple (jetzt Dapp) – aber es lohnt sich generell, vor der Vertiefung in längere Artikel und Tutorials zu checken, ob die eingesetzten Tools überhaupt noch aktuell sind.

Beispiel-Setups

  • Zum Schluss sollen zwei Beispiel-Setups den Einstieg erleichtern: Ein minimales Test-Setup könnte aus testrpc als Test-„Server“ (Node) und web3.js für die Kommunikation bestehen – minimale Test-Verträge können im Texteditor der Wahl erstellt werden.
  • Für ein Minimal-Setup für produktive Entwicklung würde sich die Kombination geth Truffle und gegebenenfalls ReMix anbieten, oder alternativ die Variante Visual Studio plus Solidity Extension.

Es gibt noch allerhand weitere Tools rund um die Entwicklung von Smart Contracts und Dapps für die Ethereum-Blockchain und viele Möglichkeiten, diese zu einer persönlichen Entwicklungsumgebung zu kombinieren. Aufgrund der extrem dynamischen App-Landschaft bleibt jedoch vor allem eine Empfehlung: Es sollten die populärsten Tools genutzt, jedoch Wissen unabhängig von diesen aufgebaut werden.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44815230 / Blockchain)