Editors note: Im ersten Teil unserer Blockchain Blogs hat Pascal über dApps und die Grundlagen der Blockchain Technologie geschrieben. Im zweiten Teil wirds nun technischer: Pascal erklärt nicht nur was ein Smart Contract ist, sondern zeigt in einem praktischen Tutorial auch gleich auf, wie man auf Ethereum einen aufsetzt.
Smart Contracts und Ethereum
Im Zentrum der Ethereum-Blockchain steht das Konzept der Smart Contracts. Bitcoins Scripting-Begrenzungen, welche eine eingeschränkte Unterstützung für Smart Contracts bieten, dienten als ursprüngliche Motivation für Ethereum.
Was bedeutet das genau?
Bitcoin bietet nur begrenzte Unterstützung für Smart Contracts, da die Skriptsprache nicht Turing-komplett ist, was teilweise auf das Fehlen von Schlaufen zurückzuführen ist. Das bedeutet, dass es viele Anwendungen gibt, die von Entwicklern auf Ethereum programmiert werden können, nicht aber auf Bitcoin. Technisch gesehen wurde Ethereum von Anfang an als “eine Plattform für den Einsatz und die Ausführung von Smart Contracts” konzipiert.
Was bedeutet Turing-komplett?
Ethereums Turing-komplette Sprache basiert ursprünglich auf Alan Turings Konzept einer universellen Turingmaschine (UTM). Einfach ausgedrückt, ist eine Turingmaschine eine hypothetische Maschine, die 1936 vom Mathematiker Alan Turing erfunden wurde. Trotz ihrer Einfachheit kann die Maschine jeden Computeralgorithmus simulieren, egal wie kompliziert dieser ist. Die UTM ist nichts anderes als eine Turingmaschine, die eine beliebige Turingmaschine auf willkürliche Eingabe hin simuliert. Da Ethereum jedoch das Konzept eines Gaslimits (= maximaler Preis, den Nutzende bereit sind für eine Aktion zu bezahlen) implementiert, können Entwickler keine Programme ausführen, die mehr Gas als das Gaslimit benötigen. Daher nennt das Ethereum Yellow Paper die Ethereum Virtual Machine, die EVM, eine "quasi-Turing-komplette Maschine". Trotz vieler Ähnlichkeiten ist Ethereum nicht wirklich Turing-komplett, da Entwickler ohne Gas nicht programmieren können, was sie wollen.
Was ist ein Smart Contract?
Werfen wir einen Blick auf die Definition eines Smart Contracts:
Ein Smart Contract ist ein selbstausführender Vertrag, bei welchem die Vertragsklauseln zwischen Käufer und Verkäufer direkt in die Codezeilen geschrieben werden.
Der Code und die darin enthaltenen Vereinbarungen existieren in einem verteilten, dezentralisierten Blockchain Netzwerk.
Der Code steuert die Ausführung und Transaktionen sind nachvollziehbar und irreversibel.
Damit sollte aus theoretischer Sicht alles klar sein. Gehen wir also zum praktischen Teil über. Denjenigen, die noch tiefer in die Geschichte von Ethereum und Smart Contracts eintauchen wollen, empfehle ich diesen (englischen) Blogbeitrag.
Ein kleines Smart Contract Tutorial
Zweck dieses Tutorials ist es, dir eine der einfachsten Möglichkeiten zu zeigen, wie du einen Smart Contract auf Ethereum-Basis bereitstellen kannst. Dabei folge ich einer bestimmten Struktur, die im Bereich der Entwicklung von Smart Contracts üblich ist. Zuerst stellen wir den Smart Contract lokal auf einer persönlichen Blockchain bereit - ich werde Ganache verwenden. Als zweites setzen wir den Smart Contract in einem der vorgesehenen Testnetzwerk ein. Zuletzt stellen wir den Smart Contract im Hauptnetzwerk bereit.
Als Entwicklungsframework verwende ich Truffle. Truffle ist eine Entwicklungsumgebung, ein Testing Framework und eine Asset-Pipeline für Ethereum mit dem Ziel, das Leben eines Ethereum Entwicklers zu erleichtern.
1) Vorbereitung: Die richtigen Tools installieren
Um starten zu können, braucht es einige grundlegende Werkzeuge. Als erstes laden wir Node.js. herunter, wobei es sich mindestens um die Version 8.9.4 handeln muss. Ich gehe ausserdem davon aus, dass Windows, Linux oder Mac OS X verwendet wird. Sobald wir bereit sind, öffnen wir unsere Shell und führen den folgenden Befehl aus: