Von Maximilian Niemzik

Voraussichtliche Lesedauer: 5 Minuten

Techblog

Embark: Dezentralisierte Anwendungen entwickeln

DApps – kurz für Decentralized Applications – sind Programme, die durch Blockchain und andere Technologien ohne zentrale Server auskommen. Ausgesprochen wird es „Däpp“. Sie laufen auf vielen Rechnern gleichzeitig, sind also dezentralisiert. Da die Programme weit verteilt sind, sind sie nur schwer angreifbar; man spricht hier gerne von „unstoppable apps“. Ein weiterer großer Vorteil: Wenn…

Techblog

DApps – kurz für Decentralized Applications – sind Programme, die durch Blockchain und andere Technologien ohne zentrale Server auskommen. Ausgesprochen wird es „Däpp“. Sie laufen auf vielen Rechnern gleichzeitig, sind also dezentralisiert. Da die Programme weit verteilt sind, sind sie nur schwer angreifbar; man spricht hier gerne von „unstoppable apps“. Ein weiterer großer Vorteil: Wenn die Programme richtig programmiert sind, skalieren sie automatisch mit der Anzahl der Nutzer, da die Nutzer bei der Weiterverteilung des Programms teilnehmen. Mehr Nutzer bedeutet in dem Fall also automatisch noch größere Reichweite.

Für die Entwicklung DApps gibt es derzeit zwei große Frameworks: Truffle und Embark. Truffle (Link) ist im Blockchain-Umfeld schon gut etabliert. Embark (Link) ist noch weniger bekannt, deswegen möchte ich es heute vorstellen.

DApps bauen mit Embark

Vom Funktionsumfang sind Truffle und Embark zu vergleichen. Embark bringt allerdings direkt eine Umgebung für vollwertige DApp-Frontend-Entwicklung mit. Wer möchte, kann den integrierten Build-Prozess nutzen, um sein Webfrontend zu bauen und unkompliziert nach persönlichen Projekt-Anforderungen konfigurieren. Das Deployment kann entweder automatisch erfolgen, oder per JavaScript-Funktion vom Projekt selbst aus. Standardgemäß achtet Embark auf Dateiänderungen und packt die Smart Contracts in die bekannten web3js-Objekte.

Damit die DApp so richtig dezentral werden kann, unterstützt Embark auch direkt die Verwendung von IPFS (Link) und swarm (Link) für dezentrales Speichern der DApp (mehr im Artikel von Frank Polster auf heise-developer); und Orbit (Link) und Whisper (Link) für dezentrale Kommunikation. Beispielsweise ist Orbit in der Lage, Nachrichten über ein IPFS-basiertes Peer-to-Peer-Netzwerk zu senden. Ein großer Vorteil davon ist, dass Nachrichten nicht von einer zentralen Instanz verwaltet werden müssen oder verändert werden können. Zusätzlich spart man sich den Weg zur zentralen Instanz: Wenn sich beispielsweise zwei Personen in München und Frankfurt unterhalten, kann meist eine relativ direkte Route genutzt werden. Im Gegensatz zu herkömmlichen Kommunikationssystemen müssen die Nachrichten nicht erst an Server gesendet werden (die ja auch in den USA stehen können), die dann die Nachrichten wiederum weiter nach München leiten.

Auf Wunsch startet Embark auch direkt einen http-Server, mit dem sich die DApp lokal starten und testen lässt – für die Entwicklungsarbeit sehr hilfreich.

Weniger? Geht auch

Auch wenn man lieber eine komplett eigene Struktur hat, inkompatible Technologien nutzt oder ganz ohne JavaScript entwickelt, kann Embark helfen. Sämtliche Zusatzmodule, etwa der http-Server, IPFS oder die web3js-Integration, lassen sich ganz einfach abschalten. Das ist gerade in diesem Bereich sehr nützlich, da es ständig neue Tools und Ansätze gibt, die oft noch gar nicht von Frameworks direkt unterstützt werden können. So unterstützt zum Zeitpunkt dieses Artikel Truffle immer noch kein web3js 1.0, im Gegensatz zu Embark übrigens. In seiner simpelsten Form deployed Embark nur noch die Smart Contracts und legt JSON-Dateien mit allen relevanten Informationen an, etwa ABI oder Adresse. Diese lassen sich dann ganz einfach in jedem Umfeld benutzen.

Außerdem bietet Embark selbstverständlich Standards an, die bei der Smart-Contract-Entwicklung gelten: Tests, Deplyoment auf verschieden Ethereum-Chains und eine detaillierte Konfiguration von Deployment-Optionen, wie Gasparameter oder das Übergeben von bereits deployten Contracts im Konstruktor.

Überhaupt lässt sich bei Embark sehr viel einstellen, was Entwicklern, die ungerne von gut gemeinten oder technisch bedingten Beschränkungen in Frameworks behindert werden, die Arbeit sehr angenehm macht. Vom vollwertigen Framework, das in allem unterstützt, bis hin zu einer dünnen Schicht zwischen DApp und Blockchain ist alles möglich.

Nicht zu vergessen ist natürlich auch das schicke Dashboard das standardgemäß Informationen über die aktuelle Tätigkeit von Embark liefert und den Status von verfügbaren Services wie http-Server oder Whisper anzeigt.

Praktisch ist auch die Kontrolle der lokalen Geth node über Embark. Mit dem einfachen Kommando „embark blockchain“ wird eine Geth node mit einer lokalen Entwicklungs-Blockchain gestartet. Mit „embark blockchain testnet“ wird eine Verbindung zum Ropsten Testnet hergestellt. Weitere Optionen wie ein Deployment auf das Mainnet sind möglich. Selbstverständlich lassen sich viele Parameter der Geth node im Projekt definieren.

Weitere Infos und Ressourcen gibt es 


Über den Autor

Von Maximilian Niemzik