Tam Hanna Selbstständig

„Derzeit stehen vier verschiedene Programmiersprachen für die Blockchain zur Verfügung: Neben dem hier verwendeten und an C bzw. JavaScript orientierten Solidity gibt es zwei Python- und eine LISP-ähnliche Sprache. In der Praxis hat sich Solidity allerdings am stärksten etabliert.“

Ein herausragendes Feature der Ethereum Blockchain ist ihre Fähigkeit, neben Transaktionen auch Smart Contracts aufzunehmen. Hinter dem Begriff verbirgt sich die Möglichkeit, Intelligenz in Blockchain-Adressen unterzubringen. Dabei kommt die Programmiersprache Solidity zum Einsatz, die wir uns nun näher ansehen werden.

Smart Contracts entstehen durch Transaktionen. Sofern das Ziel der Transaktion der „magische 0-Account“ ist, entsteht durch die Operation ein neuer Smart Contract. Wie bei allen Blockchain-Operationen gilt, dass etwas Geduld erforderlich ist – man sollte mit dem Contract erst dann interagieren, wenn sein Konstruktor erfolgreich durchgelaufen ist.

Smart-Contract-Konten unterscheiden sich von ihren gewöhnlichen Kollegen durch eine andere Adressform. Während ein zu einer natürlichen oder juristischen Person gehörender Account einen Public- und einen Private- Key aufweist, entsteht die Adresse eines Smart Contract durch die Kombination der Adresse des Erzeugers und einer inkrementierten Nonce.

Wichtig ist in diesem Zusammenhang, dass ein Smart Contract analog zu einem gewöhnlichen Konto auch einen Kontostand aufweist. Diese auf den ersten Blick theoretisch klingende Situation ist insofern kritisch, als ein falsch programmierter Smart Contract seinen Kontostand fressen und nicht mehr freigeben kann. Auf Reddit finden sich Erzählungen von Entwicklern, die auf diese Art erhebliche finanzielle Verluste erfuhren. Beachten Sie das – der Autor lehnt explizit jegliche Haftung dafür ab.

Wieso und wie?

Puristen merken an dieser Stelle an, dass auch Bitcoin Smart Contracts unterstützt – eine Zusammenfassung der Situation findet sich unter. Die Ethereum-Implementierung unterscheidet sich davon insofern, dass die als EVM bezeichnete virtuelle Maschine direkter Teil der Implementierung der Sprache ist.

Das Ethereum-Team bietet unter die in Abbildung 1 gezeigte IDE Remix an, die dank Verwendung von Emscripten Produkte direkt in der Cloud kompiliert.

Abb. 1: Cloudbasierte IDE Remix (Quelle: bitcoinmagazine.com)

Abb. 1: Cloudbasierte IDE Remix (Quelle: Bitcoinmagazine.com)

Wir wollen in den folgenden Schritten aber, schon aufgrund des bequemen Handlings, auf eine lokale Version setzen. Im ersten Schritt müssen wir den Code deshalb aus GitHub herunterladen:

git clone --recursive 
cd solidity/
git submodule update --init –recursive

Der pedantisch wirkende Aufruf der submodule-Funktion ist von besonderer Bedeutung – fehlen Untermodule, so scheitert das Kompilieren. Im nächsten Schritt rufen wir das vom Solidity-Team bereitgestellte Installationsskript auf, um eventuelle Abhängigkeiten zu installieren. Im Idealfall läuft es problemlos durch. Auf der Workstation des Autors kam es stattdessen zur in Listing 1 dargestellten Fehlermeldung.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin Spezial Vol.18: Blockchain - "Blockchain"

Alle Infos zum Heft
579865618Eine Einführung in Solidity
X
- Gib Deinen Standort ein -
- or -