Kryptowährung Ethereum: Smart Contracts für die Blockchain schreiben

Wir zeigen Ihnen, wie Sie einen solchen Smart Contract programmieren, um „Schere, Stein, Papier“ auf der Ethereum-­Blockchain zu spielen.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen

(Bild: saran25, stock.adobe.com)

Lesezeit: 24 Min.
Von
  • Lars Hupel
Inhaltsverzeichnis

Ethereum und seine Währung Ether sind zwar das zweitgrößte Kryptogeldsystem nach Bitcoin, aber der eigentliche Clou von Ethereum sind Smart Contracts. Das sind Programme auf der Blockchain, die global verteilt, manipulationssicher und allgemein überprüfbar ausgeführt werden. Im Prinzip schreibt man einen Smart Contract wie jedes andere Programm auch. Das geschieht üblicherweise in einer Hochsprache, die zu Bytecode für die Ethereum Virtual Machine (EVM) kompiliert wird. Anschließend muss man den Vertrag ausrollen, also auf der Blockchain platzieren. Dazu benötigt man ein Ethereum-Konto und eine (mit dem Browser verknüpfte) Wallet-Applikation.

Nachdem ein Vertrag ausgerollt wurde, können Blockchain-Nutzer mit ihm interagieren. Das geschieht über Transaktionen wie beim reinen Verschieben von Geld, allerdings ist das Zielkonto der Smart Contract. Transaktionen können auch 0 Ether überweisen, eine Vertragsinteraktion muss also nicht unbedingt auch Geld an den Vertrag senden. Transaktionskosten entstehen aber in jedem Fall. Weil der Zustand der Blockchain und auch alle Transaktionen öffentlich sind und die EVM rein deterministisch arbeitet, ist jederzeit klar, wann welcher Vertrag aufgerufen wurde und welches Ergebnis der Aufruf hatte.

Von sich aus werden Verträge nie aktiv, sie ähneln Objekten aus der objektorientierten Programmierung: Ein Vertrag hat einen Satz Methoden, manche können "von außen" aufgerufen werden, andere sind nur intern für den Vertrag selbst zugänglich. Neben Sender, Empfänger und Betrag haben Transaktionen noch ein spezielles Feld, das angibt, welche öffentliche Methode des Vertrags mit welchen Parameterwerten aufgerufen werden soll. Andere Ethereum-Transaktionen haben dieses Feld auch, aber bei einer einfachen Überweisung von Person zu Person bleibt es meist leer. Einmal aufgerufen, können Verträge auch miteinander interagieren und sogar neue erzeugen.