Leseprobe
Abstract
Smart Contracts make it possible to program and automate contract relationships. This results in an overlap of legal contract design and information technology, in which great potential is recognized. The functioning of these smart contracts is made possible by the so-called blockchain technology. It is the foundation for most digital currencies, acting as a decentralized database structure that allows transactions to be transparent. The current leading blockchain-platform that enables the creation of smart contracts is called Ethereum. According to this the base of these contracts has been created, but there are still some challenges that have to be overcome. This paper, based on literature research, gives an overview of smart contracts and sheds more light on their technical background of the blockchain technology. Therefore the blockchain platform Ethereum is described, which is the basis for smart contracts. The focus on this will lie on the used programming language and a code example. This paper comes to the conclusion that the foundation of smart contracts has been created but still faces challenges in the future.
Inhaltsverzeichnis
Abbildungsverzeichnis
Abkürzungsverzeichnis
1 Einleitung
2 Smart Contracts
2.1 Geschichte der Smart Contracts
2.2 Definition Smart Contracts
3 Smart Contracts dank Blockchain-Technologie
3.1 Funktionsweise der Blockchain
4 Blockchain-Plattform Ethereum
4.1 Ethereum
5 Smart Contracts entwickeln mit Ethereum
5.1 Die Programmiersprache und Code-Beispiel
6 Fazit
Literaturverzeichnis
Anhang
Abbildungsverzeichnis
Abbildung 1: Code-Beispiel Münzwurf 16
Abkürzungsverzeichnis
Abbildung in dieser Leseprobe nicht enthalten
1 Einleitung
Es klingt wie eine Fiktion: Verträge, die in der Lage sind sich selbst abzuwickeln. Diese Art von Kontrakt läuft ohne Mittler oder menschliche Hilfe völlig automatisiert ab und klingt zu irreal, um praktikabel zu sein.
Die Realität ist, dass wahrscheinlich jeder mit dem Grundgedanken solcher Smart Contracts bereits in Berührung gekommen ist. Wirft man einen Euro in einen Getränkeautomaten und betätigt die Taste für das gewünschte Getränk, erhält man dieses darauf. Im Gegensatz zum Kiosk ist an diesem Vorgang kein Mensch beteiligt. Das Verfahren, das sich dahinter versteckt, ist eine einfache Wenn-Dann- Funktion. Das bedeutet, wenn der erforderliche Betrag eingeworfen wird, dann gibt der Getränkeautomat die Ware frei.
Die Idee der Smart Contracts weist Potenzial auf, weshalb hohe Geldbeträge in die Entwicklung dieser Verträge investiert werden. Dabei geht es genauer um Kontrakte, die in Programmiersprache hinterlegt werden. Die Vertragspartner schließen den Vertrag lediglich ab, jedoch liegt die Abwicklung im Bereich eines Codes, auf dem die digitalen Verträge basieren. Dieser kümmert sich darum, dass die Übereinkunft realisiert wird.
Gegenstand dieser Arbeit ist es deshalb, einen Überblick über Smart Contracts zu geben und ihren technischen Hintergrund genauer zu beleuchten. Um ein Hintergrundverständnis zu schaffen wird dem Leser zu Beginn ein kurzer Abriss über die geschichtlichen Hintergründe dieser Verträge und eine Begriffserklärung der Smart Contracts gegeben. Im weiteren Verlauf beschäftigt sich diese Arbeit mit der Technologie, die hinter den Smart Contracts steckt und als sogenannte Blockchain-Technologie bezeichnet wird. Der nächte Teil dieser Arbeit beschreibt die Blockchain-Plattform Ethereum, welche die Grundlage für Smart-Contracts darstellt. Im Fokus steht hier neben der Erläuterung von Ethereum, die verwendete Programmiersprache und ein Code-Beispiel. Diese Arbeit kommt zu dem Ergebnis, dass die Basis für Smart Contracts geschaffen ist, dennoch einige Herausforderungen auf das Konzept der Smart Contracts zukommen.
2 Smart Contracts
Mit Hilfe von Smart Contracts besteht die Möglichkeit Vertragsbeziehungen zu programmieren und automatisieren. Es kommt zu einer Überschneidung von rechtlicher Vertragsgestaltung und Informationstechnologie, in der man großes Potenzial erkennt. Wie bei allen neuen Technologien ist noch nicht genau abschätzbar, welche Möglichkeiten durch den Einsatz von Smart Contracts bestehen.1Entsprechend forschen einige Unternehmen und Staaten an dieser Technologie.2Daher bedarf es im Folgenden einer historischen Erläuterung und Begriffsdefinition der Smart Contracts, um mehr Verständis über den Grundgedanken der Kontrakte zu schaffen.
2.1 Geschichte der Smart Contracts
Ende der 90er Jahre kam die Idee der sogenannten „Smart Contracts“ erstmals durch den US-amerikanischen Juristen und Computerwissenschaftler3Nick Szabo auf. Das Motiv von damals gleicht der Idee von heute: Software und Hardware der Verträge so darzustellen, dass die Programmlogik sowohl die Leistung als auch die Gegenleistung vorgibt. Leitgedanke der Smart Contracts ist die Annahme, dass eine Reduktion von Risiken und Transaktionskosten durch fehlendes menschliches Agieren bei der Vertragsdurchführung ermöglicht wird. Die Vertragsparteien müssen ausschließlich auf das Funktionieren der Maschine vertrauen und somit nicht in sich gegenseitig.4Das Konzept des Smart Contracts war lange in den Hintergrund gerückt, da die damaligen zugänglichen Technologien nicht den Anschein erweckten, tauglich dafür zu sein, die beiden Hauptversprechen, höhere Vertragssicherheit und geringere Transaktionskosten, zu erfüllen.5Erst durch zunehmende Erkenntnisse über die Möglichkeiten der sogenannten Blockchain-Technologie, auf welche das Kapitel 3.1 genauer eingehen wird, stellte sich heraus, dass diese Technologie optimale Rahmenbedingungen für Smart Contracts bietet.6
2.2 Definition Smart Contracts
Ehe im Nachfolgenden auf die Symbiose zwischen Smart Contracts und der Blockchain-Technologie eingegangen wird, soll vorerst der Begriff des Smart Contracts möglichst technologieneutral definiert werden, da sich der Begriff, ohne die Existenz einer allgemeingültigen Definition, bereits in der IT-Szene verbreitet hat.7
Ein Smart Contract ist ein Vertrag auf Software-Basis, in dem verschiedene Vertragsbedingungen mittels einer Programmiersprache hinterlegt sind.8Insofern ein als Vertragsbedingung definiertes Ereignis erfüllt wird, wird eine rechtlich relevante Handlung selbsttätig durch einen Programmcode ausgeführt.9Somit erfolgt die Überwachung und Einhaltung des Vertrags automatisiert, ohne durch eine menschliche Instanz gesteuert zu werden.10
Ein denkbares Einsatzszenario soll dies demonstrieren:
Das Leasing eines Pkws stellt einen Smart Contract dar, in dem folgende Vertragsbedingung hinterlegt ist: Ein Pkw steht nur zum Betrieb bereit, wenn die Rate des dazugehörigen Leasingvertrages beglichen ist. Insofern also die digital prüfbare Bedingung der Bezahlung der Leasing-Rate erfüllt ist, wird die Betriebsbereitschaft des Pkws hergestellt. Dafür überprüft der Smart Contract, der auf dem Boardcomputer des Pkws abgewickelt wird und über eine Schnittstelle zu einer Bank verfügt, die Erfüllung der Vertragsbedingung mit Hilfe des Programmcodes. Bei Bedingsungseintritt gibt der Smart Contract die Zündung des Pkws frei.11
3 Smart Contracts dank Blockchain-Technologie
Aufgrund des Siegeszugs der Blockchain erfährt der Smart Contract im Zusammenspiel mit der Blockchain-Technologie viele Vorzüge und Besonderheiten.12 Um diese Symbiose nachvollziehen zu können, wird im folgenden Abschnitt das Prinzip der Blockchain vereinfacht dargestellt.
3.1 Funktionsweise der Blockchain
Die Blockchain-Technologie ist eine neue Art der Verifizierung von Datentransaktionen.13Sie ist die Basis für die meisten digitalen Währungen und fungiert dabei als eine dezentrale, fälschungssichere Datenbankstruktur, die es als digitales Register ermöglicht, Transaktionen transparent zu verzeichnen.14Dabei stellt die Blockchain eine gepflegte Datei dar, welche per Mehrheits- Konsens jegliche Transaktionen aller Nutzer validiert und abspeichert und damit unveränderbar macht. Informationen über diese Transaktionen werden in sogenannten Blöcken gespeichert.15Ein Block besteht somit zum einen aus einer Verknüpfung von Transaktionsdaten16, wie zum Beispiel der anonymisierten Information über Sender und Empfänger17und zum anderen aus der gesamten Transaktionshistorie18in Form eines Hash Werts. Dieser ist eine Prüfziffer, „die aus dem zu prüfenden Inhalt errechnet wird“ und es ermöglicht die Transaktionskette auf Echtheit zu überprüfen. Die Durchführung der Transaktionen erfordert von jedem Teilnehmer des Netzwerkes einen öffentlichen und privaten Schlüssel. Dabei kann der öffentliche Schlüssel als eine eindeutige Adresse verstanden werden, während der private Schlüssel eine Art Passwort darstellt, das geheim gehalten werden muss. Bei Transaktionen bestätigt der Absender mit dem privaten Schlüssel lediglich die Informationen der Transaktion.19Meist handelt es sich bei den Transaktionen um die Übertragung von Vermögenswerten wie zum Beispiel Immaterialgütern (z.B. Domains), Waren oder Geldbeträgen.
Alle Vermögenswerte besitzen eine ID, die es ermöglicht, dass nur der Besitzer des Vermögenswertes über den Wert verfügt, da ihm durch die ID der private Schlüssel zugeordnet wird. Somit ist eine Transaktion nur gültig, wenn sie digital vom Besitzer durch einen privaten Schlüssel signiert wurde und noch nicht in einem Block enthalten ist.20Mit jeder Fortführung einer Transaktion wird diese auf Gültigkeit geprüft und durch ein geregeltes Verfahren namens Proof-of-Work in einen weiteren Block generiert, welcher mit dem vorherigen Block untrennbar zu einer „Block-Chain“ verkettet wird.21
Vereinfacht dargestellt handelt es sich bei den aus Blöcken bestehenden Ketten also um einen „digitalen Kontoauszug für Erklärungen zwischen Computern (sog. Nodes)“. Dieser Kontoauszug wird nicht zentral abgelegt, sondern in identischer Form auf vielen Nodes abgelegt und gespeichert. Ein solches Peer-to-Peer- Netzwerk ermöglicht es dem Großteil der Nodes die Integrität der Daten zu gewährleisten und gegen Manipulationen zu schützen.22Das liegt vor allem darin begründet, dass getätigte Einträge im Blockchain-Verzeichnis nicht verändert oder gelöscht werden können, was wiederum bedeutet, dass die Einträge für immer nachvollzogen werden können.
Aus dieser Beschreibung resultieren drei wesentliche Merkmale der BlockchainTechnologie: Transparenz, Dezentralität und Unveränderlichkeit.23Besonders das Merkmal der Dezentralität ermöglicht das Bestehen von Smart Contracts, da eine intermaschinelle Kommunikation ohne einen Intermediär ausgeführt werden kann.
Winzer, Kristina „Chain Code“ - Smart Contracts
Hochschule der Deutschen Bundesbank demonstriert an einfachen Code-Beispielen
4 Blockchain-Plattform Ethereum
Das Funktionieren von Smart Contracts wird zum einen durch IT Schnittstellen, sogenannten Oracles, unterstützt, welche in der Lage sind Smart Contracts mit Informationen zu versorgen, die aus anderen Systemen stammen. Zum anderen funktionieren Smart Contracts wie bereits angeführt nur aufgrund von komplexen Bedingungsprüfungen, die durch Blockchain-Technologie ermöglicht wird. Die derzeit führende Blockchain-Plattform für Smart Contracts besitzt die Bezeichnung „Ethereum“. Was genau Ethereum ist, soll im nächsten Abschnitt erläutert werden.24
4.1 Ethereum
Die Ursprünge der Entwicklung des Projektes Ethereum liegen im Jahr 2013. Nachdem das Projekt ein Jahr später vorgestellt wurde und eine erfolgreiche Crowdfunding Kampagne ins Leben gerufen wurde, wurde das Projekt 2015 realisiert, programmiert und letztendlich umgesetzt.
Seitdem zählt Ethereum mit der Kryptowährung Ether (ETH) zu einer der verheißungsvollsten Blockchains der heutigen Zeit. Ethereum stellt keine Kryptowährung dar, sondern eine Plattform, auf der dezentrale Applikationen durchgeführt werden können. Diese Applikationen laufen mittels der in Kapitel 2 erwähnten Smart Contracts auf Basis der Geldeinheit Ether. Dabei besteht die Option des Wertaustausches nicht nur in Form von Geldtransaktionen, sondern auch in Form anderer Vermögenswerte. Unterstützt werden diese Vorgänge durch mehrere verfügbare Programmiersprachen, aufgrund dessen die Erstellung und Abwicklung der Smart Contracts ermöglicht wird.25
5 Smart Contracts entwickeln mit Ethereum
Der letzte Abschnitt hat aufgezeigt, dass Smart Contracts ein wesentliches Element der Ethereum-Infrastruktur sind und, dass die Abwicklung dieser Smart Contracts auf verschiedenen Programmiersprachen beruht. Deshalb wird der nächste Abschnitt hinterleuchten, was genau hinter diesen Programmiersprachen steckt und dies an einem einfachen Code-Beispiel demonstrieren.
5.1 Die Programmiersprache und Code-Beispiel
Die Programmiersprache, die zum Entwickeln der Smart Contracts auf der Blockchain-Plattform Ethereum verwendet wird, heißt Solidity.26Solidity ist die vierte, aber am meisten weiterentwickelte Programmiersprache, die für Ethereum existiert. Sie basiert auf JavaScript und ermöglicht, dass die Kontrakte in Bytecode kompiliert werden, um anschließend das Hochladen auf die Ethereum Blockchain durchzuführen.27Wie genau so ein Quellcode aussieht und funktioniert soll am folgenden Beispiel demonstriert werden:
Das Glücksspiel Münzwurf (Kopf oder Zahl) stellt einen Smart Contract dar. Dieses Glücksspiel soll im Test-Net des Ethereum Wallet, einer digitalen Geldbörse28mit der Geldeinheit Ether, demonstriert werden. Dabei wickelt der Code des Smart-Contract das Glücksspiel ab.
Das Glückspiel beginnt, nachdem zwei oder mehr Teilnehmer einen Mindesteinsatz in einen virtuellen Topf werfen. Insofern der Einsatz des letzten Spielers getätigt wurde, ist es dem Ersteller des Kontraktes unterbunden, den Smart-Contract zu löschen. Diese Möglichkeit besteht erst wieder, wenn der Gewinn des Glücksspiels an den Sieger ausgezahlt wurde. Das Ende des Spiels ist durch Ablauf der Zeitspanne gekennzeichnet. Mit Ablauf der Zeit bestimmt der Smart-Contract mittels Zufallsprinzip, wer der Gewinner des Glückspiels ist und überweist diesem sofort den Gewinnbetrag.29
Untersucht man den kompletten 210 Quellcode (ANLAGE X) genauer, stellt sich heraus, dass die oben beschriebenen Vorgänge in den Code eingebettet sind und teilweise von Wenn-Dann-Funktionen unterstützt werden. Im Weiteren wird dies anhand des bereits definierten Beispiels veranschaulicht.
Die Code-Zeilen eins bis 41 der Anlage 1 beschreiben den Anfangsabschnitt des Quellcodes des Gewinnspiels. Dieser Teil gibt Auskunft über die Hauptinformationen des Smart Contracts. Zeile 11 beschreibt hierbei, dass der Quellcode für eine Solidity Version 0.4.15 entwickelt ist, währenddessen definiert Code-Zeile 13 den Namen des Kontraktes mit „Kopf oder Zahl“. Zudem werden in Zeile 29 die Spielregeln dargelegt, die es zu erfüllen gilt. In diesem Fall werden die Bedingungen festgelegt, dass der Einsatz eines Spielers mindestens einen Ether betragen muss und dass das Spiel erst beginnt, sobald alle Spieler ihre Einsätze getätigt haben. Sind alle Bedingungen erfüllt wird ein Sieger auserwählt und es erfolgt eine Auschüttung des kompletten Topfes an den Gewinner.
Ein Quellcode in Solidity besteht aus einer Sammlung von Codes, den sogenannten Funktionen, und Daten.30Das angeführte Münzwurf-Beispiel besteht aus fünf Funktionen, die eine Art Grundkonstrukt für den Code bilden. Wie in den Code-Zeilen 44 bis 60 zu erkennen ist, bildet dabei der sogenannte Konstruktor die erste Funktion. Dieser ist als eine Methode definiert, die aufgerufen wird, wenn Objekte erzeugt werden sollen.31Im Beispiel werden vier Dinge initialisiert: das Spiel Kopf oder Zahl, die Anzahl der Spieler, die Dauer in Sekunden und der minimale Wetteinsatz. Zusätzlich gibt Zeile 55 Auskunft über den Status des Gewinnspiels - Status = 0 bedeutet in diesem Fall, dass die Wette bisher noch nicht platziert ist.
Die Code-Zeilen 65 bis 73 beschreiben den sogenannten Destruktor, welcher eine Methode definiert, die aufgerufen wird, um Objekte aufzulösen.32Diese Funktion kann nur vom Erzeuger des Smart Contracts aufgerufen werden und ermöglicht eine Selbstzerstörung des Codes, wenn das Spiel nicht läuft.
[...]
1Vgl.: Kreditkarte: Smart Contracts - selbsterfüllende Verträge: URL siehe Literaturverzeichnis, Zugriff am 04.01.2018.
2Vgl.: BTC-Echo: Was ist die Blockchain?: URL siehe Literaturverzeichnis, Zugriff am 09.01.2018.
3Vgl.: Cointelgraph: Smart Contracts, Explained: URL siehe Literaturverzeichnis, Zugriff am
06.01.2018.
4Vgl.: Kaulartz, Markus/Heckmann, Jörn: Smart Contracts - Anwendungen der BlockchainTechnologie, in: Computer und Recht, Ausgabe 09/2016, S. 618.
5Vgl.: Graff, Christof/Stoiber, Helmut/Zscherp, Matthias: Plattformsicherheit - Smart Contracts und TPM, Frankfurt am Main, 2015, S. 1 ff.
6Vgl.: Kaulartz, Markus/Heckmann, Jörn: Smart Contracts - Anwendungen der BlockchainTechnologie, in: Computer und Recht, Ausgabe 09/2016, S. 618.
7Vgl.: a.a.O., S. 618.
8Vgl.: Gabler Wirtschaftslexikon: Smart Contract: URL siehe Literaturverzeichnis, Zugriff am
09.01.2018.
9Vgl.: Kaulartz, Markus/Heckmann, Jörn: Smart Contracts - Anwendungen der BlockchainTechnologie, in: Computer und Recht, Ausgabe 09/2016, S. 618.
10Vgl.: Dev Insider: Was ist ein Smart Contract?: URL siehe Literaturverzeichnis, Zugriff am
03.01.2018.
11Vgl.: Kaulartz, Markus/Heckmann, Jörn: Smart Contracts - Anwendungen der BlockchainTechnologie, in: Computer und Recht, Ausgabe 09/2016, S. 618.
12Vgl.: Kaulartz, Markus/Heckmann, Jörn: Smart Contracts - Anwendungen der BlockchainTechnologie, in: Computer und Recht, Ausgabe 09/2016, S. 618.
13Vgl.: Voshmgir, Sherim: Blockchains, Smart Contracts und das Dezentrale Web, Berlin, 2016, S.8 ff.
14Vgl.: BTC-Echo: Was ist die Blockchain?: URL siehe Literaturverzeichnis, Zugriff am 09.01.2018.
15Vgl.: Kaulartz, Markus/Heckmann, Jörn: Selbsterfüllende Verträge - Smart Contracts: Quellcode als Vertragstext, in: CT Magazin für Computer und Technik, Ausgabe 24/2016, S.138 ff.
16Vgl.: CryptoTicker: Was sind Kryptowährungen?: URL siehe Literaturverzeichnis, Zugriff am
11.01.2018.
17Vgl.: BTC-Echo: Was ist die Blockchain?: URL siehe Literaturverzeichnis, Zugriff am 09.01.2018.
18Vgl.: Kreditkarte: Smart Contracts - selbsterfüllende Verträge: URL siehe Literaturverzeichnis, Zugriff am 04.01.2018.
19Vgl.: Voshmgir, Sherim: Blockchains, Smart Contracts und das Dezentrale Web, Berlin, 2016, S.8 ff.
20Vgl.: Kaulartz, Markus/Heckmann, Jörn: Selbsterfüllende Verträge - Smart Contracts: Quellcode als Vertragstext, in: CT Magazin für Computer und Technik, Ausgabe 24/2016, S.138 ff.
21Vgl.: BTC-Echo: Was ist die Blockchain?: URL siehe Literaturverzeichnis, Zugriff am 09.01.2018.
22Vgl.: Kaulartz, Markus/Heckmann, Jörn: Selbsterfüllende Verträge - Smart Contracts: Quellcode als Vertragstext, in: CT Magazin für Computer und Technik, Ausgabe 24/2016, S.138 ff.
23Vgl.: BTC-Echo: Was ist die Blockchain?: URL siehe Literaturverzeichnis, Zugriff am 09.01.2018.
24Vgl.: Kaulartz, Markus/Heckmann, Jörn: Selbsterfüllende Verträge - Smart Contracts: Quellcode als Vertragstext, in: CT Magazin für Computer und Technik, Ausgabe 24/2016, S.138 ff.
25Vgl.: Voshmgir, Sherim: Blockchains, Smart Contracts und das Dezentrale Web, Berlin, 2016, S.8 ff.
26Vgl.: Solidity: Solidity: URL siehe Literaturverzeichnis, Zugriff am 14.01.2018.
27Vgl.: Ethereum Github: URL siehe Literaturverzeichnis, Zugriff am 14.01.2018.
28Vgl.: Chip: Bitcoin Wallet - was ist das? URL siehe Literaturverzeichnis, Zugriff am 15.01.2018.
29Vgl.: Zen-Systems: Solidity Ethereum Code Beispiel Münzwurf, URL siehe Literaturverzeichnis, Zugriff am 15.01.2018.
30Vgl.: Solidity: Introduction to Smart Contracts, URL siehe Literaturverzeichnis, Zugriff am
15.01.2018.
31Vgl.: Stroustrup, Bjarne: Die C++ Programmiersprache, München, 2000, S. 115 ff.
32Vgl.: a.a.O., S. 115 ff.