Einmaleins der Blockchain und DLT

Was sind Smart Contracts?

20.10.2020 von Zoltan Fazekas
Smart Contracts gehören zu den mächtigsten und nützlichsten Funktionen von Blockchain und Distributed Ledger Technologien. Lesen Sie weiter und erfahren Sie, warum.
 
  • Validitätsprüfung in einer Ethereum Blockchain
  • Nützliches Wissen und Beispiele für Softwareentwickler
  • Was bieten Hyperledger Fabric und R3 Corda?

Meist werden Blockchains im Unternehmenskontext dazu genutzt, kryptografische Prüfsummen (Hashwerte) von Daten und Dokumenten in einer unveränderbaren Historie zu speichern. Dieser simple Anwendungsfall wird wegen des fälschungssicheren Zeitstempels auch Notarisierung genannt. Die Blockchain kann aber deutlich mehr. Sie kannzum Beispiel dank der eindeutigen Reihenfolge der darin hinterlegten Transaktionen sog. Double Spends verhindern.Dabei handelt es sich um Überweisungen, die die Gesamtmenge an Kryptowährung im System erhöhen würden. Dazu müssen die Notes (Computer, der an einer Blockchain beteiligt ist) lediglich die Quelle und Höhe der Überweisungen prüfen.
Smart Contracts gehen noch einen großen Schritt weiter: sie können diese hartkodierte Prüfung um beliebige weitere Bedingungen ergänzen und die Blockchain so zu einem universellen betrugssicheren Transaktionssystem machen.

Ein Smart Contract ist - entgegen der landläufigen Meinung - weder intelligent noch ein Vertrag. Allerdings befähigt er die Blockchain, die Geschäftslogik von Anwendungen zu verstehen und abzusichern.
Foto: Pixels Hunter - shutterstock.com

Die praktische Umsetzung einer alten Vision

Das Konzept des Smart Contract ist wesentlich älter als die Blockchain und stammt von Nick Szabo, einem US-amerikanischen Informatiker und Juristen, der Ende der 1990er Jahre die Idee hatte, eine automatische Prüfung und Durchsetzung von Vertragsbedingungen in softwaregesteuerte Alltagsgegenstände zu integrieren. Damit wäre es unmöglich, Verträge zu umgehen bzw. unnötig, wegen ihrer Verletzung zu klagen. Deutlich wird seine Vision am Beispiel eines geleasten Fahrzeugs, das sich nur starten lässt, wenn die Leasingraten bezahlt wurden. Aber woher soll das Fahrzeug wissen, ob die Ratenzahlungen rechtzeitig erfolgten? Fast zwei Jahrzehnte sollten vergehen, bis Bitcoin als dezentralisiertes Zahlungsprotokoll und später Ethereum als dezentralisierte Applikationsplattform für Smart Contracts bekannt werden. Seitdem sind Smart Contracts eng mit Blockchain und Distributed Ledger Technologien verbunden und gehören zum Repertoire von fast allen Produkten in diesem Umfeld.

Smart Contracts auf der Ethereum Blockchain

In Ethereum löst jede Transaktion, mit Ausnahme der einfachen Überweisung auf den Account eines Users, einen Smart Contract aus. Dieser prüft die Transaktion und entscheidet über ihre Zulässigkeit. Das Resultat wird zusammen mit der Transaktion in der Blockchain abgespeichert.
Die Kriterien für die Zulässigkeit können vielfältig sein. Etwa, dass der Sender im Rahmen einer früheren Transaktion von einem anderen User bevollmächtigt wurde und sein aktuelles Guthaben über dem Wert eines bestimmten Parameters liegt. Jeder Smart Contract hat ein Gedächtnis, in dem die Ergebnisse vergangener Prüfungen gespeichert sind. Auf andere Informationen als die aktuelle Transaktion und sein Gedächtnis kann er jedoch nicht zugreifen. Während der Prüfung einer Transaktion kann der Smart Contract die Außenwelt zudem über sog. Ereignisse informieren. Softwaresysteme, die mit dem Smart Contract in Verbindung stehen, werden so über diese Ereignisse benachrichtigt und können sie den betroffenen Usern mitteilen.

Funktionsweise aus Sicht der Softwareentwicklung

Was haben Softwareentwickler mit Verträgen zu tun? Eine ganze Menge.
Aus Sicht eines Softwareentwicklers sind Ethereum Smart Contracts nichts anderes als Objekte, d.h. Instanzen einer Klasse. Der Quellcode der Klasse wird überwiegend in der Programmiersprache Solidity geschrieben und in einen durch die Ethereum Virtual Machine (EVM) ausführbaren Bytecode übersetzt. Der Bytecode wird beim Deployment des Smart Contracts unter einer deterministisch erzeugten neuen Adresse auf jedem Node der Blockchain gespeichert. Der Smart Contract kann von nun an unter dieser Adresse erreicht werden, wenn man ihm eine Transaktion schicken oder seine Variablen auslesen will.

Die Funktionen des Smart Contracts definieren, welche Transaktionen er versteht. Zum Beispiel kann der Smart Contract eines Kfz-Leasingvertrags eine Funktion anbieten, über welche der Eingang regelmäßiger Ratenzahlungen mitgeteilt wird. Die Funktionen können Parameter haben, wie etwa die vereinbarte Höhe und Anzahl der monatlichen Ratenzahlungen beim Abschluss des Leasingvertrags.
Smart Contracts verfügen über einen internen Speicher, in dem sie den aktuellen Zustand ihrer Variablen bereithalten. In unserem Beispiel wären die Variablen die Höhe der monatlichen Leasingraten und die Anzahl der verbleibenden Ratenzahlungen eines Leasingvertrags. So kann der Smart Contract bei jeder Transaktion prüfen, ob die Höhe der Ratenzahlung stimmt und die Anzahl der verbleibenden Leasingraten entsprechend anpassen.

Smart Contracts können auch miteinander interagieren. Wurde etwa eine Funktion des Smart Contracts im Zuge einer Transaktion ausgelöst, kann sie andere Funktionen desselben Smart Contracts sowie Funktionen eines anderen Smart Contracts aufrufen. So könnte der Smart Contract des Leasingvertrags die Rückgabe des Fahrzeugs an einen anderen Smart Contract melden, der einen Gutachter mit der Feststellung des tatsächlichen Restwerts beauftragt. Smart Contracts können zwar nicht auf Daten außerhalb ihres Speichers zugreifen, sie können der Außenwelt aber über Ereignisse signalisieren, wenn sie aktuelle Informationen benötigen. Solche Informationen, wie z.B. Umrechnungskurse, werden ihnen im Rahmen einer weiteren Transaktion durch sog. Oracles mitgeteilt. Dies ist z.B. notwendig, wenn Ratenzahlungen in Ether, der nativen Kryptowährung von Ethereum, erfolgt sind und ihre Höhe in Euro festgelegt war. Smart Contracts können nämlich Ether wie auch beliebige Ethereum-basierte Token empfangen und versenden.

Was bieten andere Blockchains?

Smart Contracts existieren auch in anderen populären Blockchain und Distributed Ledger Technologien wie Hyperledger Fabric oder R3 Corda. Ihre Funktionsweise unterscheidet sich allerdings erheblich.
Während die Smart Contracts in Etherum auf allen Nodes des Netzwerks ausgeführt werden, sobald diese einen Block mit den entsprechenden Transaktionen erhalten, werden sie in Hyperledger Fabric hingegen nur von jenen Nodes ausgeführt, die zur Billigung einer Transaktion notwendig sind, bevor die Transaktion in einen Block aufgenommen wird.
Ähnlich ist es auch in R3 Corda: hier werden Smart Contracts nur von den Nodes ausgeführt, die eine Transaktion zwingend überprüfen müssen. In Corda unterscheidet sich der Aufbau von Smart Contracts grundlegend von Ethereum und Hyperledger Fabric. Dort haben Smart Contracts kein Gedächtnis; sie überprüfen lediglich, ob die Änderungen an Objekten, die in einer Transaktion enthalten sind, den festgelegten Regeln entsprechen.

Im Gegensatz zu Ethereum können Hyperledger Fabric und R3 Corda durch spezielle Transaktionen auch den Code von Smart Contracts aktualisieren, wenn alle zustimmungspflichtigen Nodes dem Update einwilligen.

Smart Contracts ermöglichen es, die kritischen Teile der Anwendungslogik auf einer Blockchain abzubilden und so vor Manipulation zu schützen. Sie haben unzählige Einsatzmöglichkeiten für Unternehmen und öffentlichen Stellen, die diese Sicherheit ihren Kunden und Geschäftspartnern anbieten wollen. (bw)