InnoLab Smart Contracts – Code is Law

von Christoph Bösch | 20. Oktober 2016 | Allgemein, Deutsch, Senacor

Christoph Bösch

Managing Consultant (ehem.)

Im Rahmen des InnoLabs haben wir uns mit einem Thema beschäftigt, das seit den 1990er Jahren ein Schattendasein auf philosophisch-theoretischer Ebene geführt hat. Erst in den letzten drei Jahren wurden durch den technologischen Fortschritt, insbesondere die Blockchain, praktische Anwendungsmöglichkeiten für das Konzept erkennbar. Dies ist eindrucksvoll am rasch wachsenden Ökosystem von Plattformen und Tools zur Erstellung von Smart Contracts zu beobachten.

Verträge aus Code

Beim Einstieg in das Thema stößt man direkt auf merkwürdige Begrifflichkeiten. Welche Form von Contract wird hier zwischen wem geschlossen, und was ist smart daran? Die Betrachtung moderner Smart-Contract-Plattformen liefert Antworten. Diese Plattformen haben folgende Struktur:

  1. eine Blockchain als dezentrale Datenbank mit Konsens-Mechanismus zwischen allen teilnehmenden Maschinen
  2. eine virtuelle Maschine zur Ausführung von Code, der auf der Blockchain abgelegt ist
  3. eine Kryptowährung als Motivation für den Konsens-Mechanismus und um Ausführungskosten von Smart Contracts abzubilden

Der Smart Contract ist also ein verteiltes Programm, das dezentral durch virtuelle Maschinen von jedem Teilnehmer unabhängig ausgeführt wird. Der Zustand des Programms ist in der Blockchain abgebildet. Was das Ganze mit Contracts zu tun hat, erklärt sich aus der konzeptionellen Ausgangsidee. Nach der gängigen Definition von Nick Szabo ist ein Smart Contract ein Computer-basiertes Transaktionsprotokoll, das die Bedingungen eines Vertrags ausführt. Zum Beispiel kann eine Mitgliedschaft in einem Fitnessstudio als Smart Contract implementiert werden. Der Contract kontrolliert selbständig jeden Monat die Zahlung des Beitrags vom Konto des Mitglieds. Wenn die Zahlung ausbleibt, sperrt der Contract automatisch die Zugangskarte des Mitglieds und aktiviert diese erst wieder nachdem alle ausstehenden Beiträge eingegangen sind.

Der Smart Contract bietet Möglichkeiten zur Interaktion in Form von nach außen sichtbaren Funktionen, z.B. zur Zahlung eines Monatsbeitrags oder zur Kündigung der Mitgliedschaft. Alles was man mit dem Smart Contract tun kann, ist per Definition nach den Regeln des Vertrags erlaubt. Jeder erreichbare Zustand des Contracts und die damit verbundenen Auswirkungen auf Beteiligte (z.B. der Transfer von Kryptowährung) sind zulässig. Über die Blockchain ist der Contract für jeden Nutzer offen einsehbar. Es stehen also alle Informationen zur Verfügung, bevor ein Nutzer mit dem Contract interagiert. Im oben genannten Beispiel sieht der Nutzer die Höhe des Preises für die Mitgliedschaft, die Zahlungsintervalle sowie die Konsequenzen eines Zahlungsverzugs direkt anhand des Codes im Contract. Auch Kündigungsbedingungen wie Vorlaufzeit und Mindestvertragsdauer sind im Contract festgelegt.

Fehler in Verträgen und Contracts

Wenn nun alles erlaubt ist, was der Vertrag zulässt, dann stellt sich die Frage nach dem Umgang mit Fehlern und Lücken im Vertrag, sprich mit Programmcode der „buggy“ ist. Schließlich stellt der Code die Bedingungen dar, auf die sich alle beteiligten Parteien geeinigt haben. Wir ziehen zum Vergleich traditionelle Verträge heran. Hier findet man am Ende des Vertragswerks häufig eine Klausel zur Fehlerbehandlung, die an einen Exception-Handler erinnert:

Sollte eine Bestimmung dieses Vertrags ganz oder teilweise nichtig sein oder sollte sich eine Lücke ergeben, wird dadurch die Wirksamkeit der übrigen Bestimmungen nicht berührt. An Stelle der nichtigen Bestimmung oder zur Ausfüllung der Lücke gilt diejenige wirksame und durchführbare Regelung als vereinbart, die rechtlich und wirtschaftlich dem Ziel des Vertrags am nächsten kommt.”

Die Klausel wird wirksam, sobald eine andere Klausel nicht korrekt prozessiert werden kann. Sie ist so allgemein gefasst, dass sie auf jede andere Klausel anwendbar ist. Dadurch öffnete sie aber auch breite Interpretationsspielräume. Im Streitfall bedarf es also einer dritten übergeordnete Instanz, konkret eines Gerichts, um den Wortlaut im jeweiligen Kontext zu interpretieren.

Die Grundidee von Smart-Contract-Plattformen wie Ethereum ist es jedoch, ohne eine übergeordnete Instanz auszukommen. Dafür muss der Programmcode als unveränderbare Wahrheit akzeptiert werden, inklusive aller Fehler und unbeachteter Grenzfälle. In der Praxis kann dieser Ansatz schwerwiegende Konsequenzen haben.

Bending the law

Das eindrucksvollste Beispiel für das Dilemma ist eine Kette von Ereignissen, die unter dem Namen DAO-Wars bekannt wurde und zur Spaltung der Community der Smart-Contract-Plattform Ethereum führte. Ethereum ist aktuell die am weitesten entwickelte und breitesten unterstützte Plattform für Smart Contracts und wird von uns daher auch im Rahmen des InnoLabs eingesetzt. Sie beinhaltet die Kryptowährung Ether.

Ethereum wurde im Juli 2015 produktiv gesetzt. Im April 2016 wurde auf Ethereum eine Crowdfunding-Kampagne für die Gründung der “DAO” gestartet. Die DAO (Distributed Autonomous Organization) war eine Investment Organisation, die ausschließlich über Ethereum Smart Contracts definiert war. Investoren konnten Anteile kaufen, statteten so die DAO mit Kapital aus und erhielten entsprechend ihrer Anteile Stimmrechte, um darüber mitzuentscheiden, in welche Projekte das Kapital investiert werden sollte. Die Kampagne erzielte einen sensationellen Erlös von über 150 Millionen USD.

Im Juni 2016 wurde diese DAO über einen Bug im Code “angegriffen”. Ether im Gegenwert von 50 Millionen USD wurden auf einen privaten Ethereum Account übertragen. In der Ethereum Community begann eine Diskussion darüber, ob dieser Vorgang über einen technischen Eingriff rückgängig gemacht werden sollte, oder ob die Transaktion valide war, da der entsprechende Smart Contract sie zugelassen hatte. Die Mehrheit der Community sprach sich für den Eingriff aus. Ein Update für Ethereum, das einen nicht abwärtskompatiblen Zweig der Ethereum-Blockchain erzeugte (Hard-Fork), wurde umgesetzt. 80% der Nodes installierten das Update und etablierten so einen neuen Zustand für Ethereum.

Dezentral und unsterblich

In dieser Situation trat eine wesentliche Eigenschaft eines wahrhaft dezentralen Systems zu Tage: es kann nicht durch eine zentrale Aktion manipuliert werden. Nach einigen Tagen zeigte sich, dass die alte Version von Ethereum nach wie vor von eine kritischen Masse an Nodes unterstützt wurde. Der unveränderte Zweig der Blockchain war aktiv und wuchs weiter um neue Transaktionen. Parallel formierte sich eine Community, die den Grundsatz “Code is Law” verfolgt und den alten Blockchain Zweig unter dem Namen “Ethereum Classic” weiterbetrieb. Zum aktuellen Zeitpunkt ist Ethereum Classic (ETC) im Ranking der Kryptowährungen nach Marktkapitalisierung auf Platz 5 (Bitcoin: Platz 1, Ethereum: Platz 2).

Recht oder Gerechtigkeit

Nachdem sich die Ethereum-Community als regulierende Instanz eingeschaltet hatte und aus moralischen Gründen bestehende Contracts bzw. deren Interpretation durch das System manipulierte, bildete sich also eine Gegenbewegung, die auf der Einhaltung der Contracts beharrt, gleichgültig welche unvorhergesehenen Konsequenzen daraus entstehen. Durch die Robustheit des dezentralen Systems konnte die originale Instanz nicht deaktiviert werden. So zeigt sich der konzeptionelle Unterschied zwischen den beiden Strömungen auch in zwei unterschiedlichen dezentralen Systemen, die parallel zueinander existieren.

Jeder kann heute selbst entscheiden, ob er die eigenen Ether alleine der Rechtsprechung der Smart Contracts unterwerfen möchte, oder ob der Gedanke doch beruhigend wirkt, dass im Ernstfall die Community für Gerechtigkeit sorgt.