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.
Die Blockchain-Entwicklung ist noch zu jung und unausgegoren, um auf standardisierte Tools zurückgreifen zu können.
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.
eBook „Blockchain“
(Bild: Dev-Insider)
E-Book zum Thema
Unser eBook „Blockchain“ umreißt interessante Blockchain-Technologien und geht näher auf die Ethereum-Plattform ein.
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.
(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.
E-Book zum Thema
Blockchain
eBook „Blockchain“
(Bild: Dev-Insider)
Um die Möglichkeiten von Blockchains einschätzen zu können, muss man verstehen, was eine solche Kette von Blöcken überhaupt im Stande ist zu leisten, und wie sie das realisiert.
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.