Lessons Learned bei der Entwicklung von Ethereum Smart Contracts
--
Das Konzept von Smart Contracts in einer Blockchain ist bestechend: Beliebiger Programmcode der vertragsähnliche Abläufe dezentral, effizient und sicher ausführt. Die Ethereum Blockchain mit Ihrem Smart Contract Konzept gilt hier als Vorreiter. Die jüngsten Ereignisse rund um das Scheitern der dezentralen Crowdfunding-Plattform The DAO und unsere eigenen Erfahrungen in der Entwicklung von Smart Contracts für oursolargrid.org zeigen, dass die Konzepte und die Technologie noch weiter reifen muss um Ihrem Anspruch wirklich gerecht zu werden.
Der Energiesektor könnte nach dem Finanzbereich der nächste Sektor sein, den die Technologie Blockchain maßgeblich verändert. Auch die ITP Innovative Technologie Projekte GmbH arbeitet an oursolargrid.org, einer Ethereum Blockchain Applikation zur Unterstützung dezentraler Produktion von Solarenergie. Die Idee ist dabei, eine dezentrale Koppelung und eine lokale Vernetzung zwischen lokalen Energiekonsumenten und Solarenergie-Produzenten zu schaffen.
Im ersten Schritt setzt oursolargrid.org auf ein Spendenmodell, in dem lokale Konsumenten Produzenten aus der Nachbarschaft durch Spenden in Kryptowährung unterstützen. Sobald die EEG Einspeisevergütung für Produzenten nicht mehr profitabel ist oder wegfällt, technische und regulatorische Rahmenbedingungen geschaffen sind, plant oursolargrid.org weitere Ausbaustufen, die tiefer in die Bilanzierung des Energieverbrauchs eingreifen sollen und ein dezentraler Stromhandel zwischen lokalem Konsument und Produzent möglich wird. Mehr zu oursolargrid.org finden sich hier.
Im Kern realisiert der Smart Contract von oursoloargrid.org die Auszahlung von Spenden der Konsumenten an die Produzenten, wobei die Produzenten proportional zu Ihrer eingespeisten Energie einen Anteil der Spenden bekommen. Der notwendige Programmcode hat die Komplexität einer Übungsaufgabe eines Anfängerkurses für Programmieren. Dessen Realisierung als Ethereum Smart Contract hat allerdings seine Tücken, zwei Beispiele dazu:
- Das bisherige Fehlen von Gleitkomma-Datentypen in Ethereum’s Smart Contract Programmiersprache Solidity macht die Spendenanteilsbildung umständlich bzw. ungenau.
- Eine Auszahlung der Spenden nach Push-Prinzip (d.h. der Smart Contract von oursolargrid.org pushed Spenden an den Smart Contract des Produzenten) ist unsicher, da das Senden den Smart Contract des Produzenten zur Ausführung bringt, und sich dort beliebiger u.U. fehlerhafter bzw. böswilliger Programmcode verbergen kann (Callstack Tiefe kann überschritten werden oder das Gaslimit überschritten werden). Resultat könnte ein Programmabsturz des oursolagrid.org Smart Contracts sein. Die Empfehlung der Entwickler von Solidity ist, ein Withdrawal-Pattern zu implementieren, in dem der Smart Contract des Produzenten seinen Anteil vom oursolargrid.org Smart Contract abhebt. Dieses Pattern macht den einfachen Auszahlmechanismus allerdings deutlich komplizierter.
Das Scheitern der bis dato größten Crowdfunding-Kampagne The DAO — mehr als 168 Millionen US Dollar kamen zusammen und ein Angreifer konnte mehr als 50 Millionen davon stehlen — zeigt weitere Schwachstellen von Smart Contracts und Blockchain:
- Die Transparenz von Blockchain und den darauf befindlichen Smart Contracts macht es potentiellen Angreifen einfach, Sicherheitslücken im Programmcode von Smart Contracts aufzuspüren und zu Ihrem Vorteil auszunutzen. Besonders Smart Contracts, die wie im Falle von The DAO mehrere Millionen an Wert verwalten, können so zu einem attraktiven Angriffsziel werden.
- Hat der Entwickler eines Smart Contracts wie im Beispiel von The DAO keine Funktion implementiert, die es ermöglicht, einen Smart Contract im Notfall anzuhalten oder zu deaktivieren, dann kann bei böswilligen Angriffen bzw. Zweckentfremdung des Smart Contracts ohne aufwändige Eingriffe in das Verhalten der Blockchain (Soft oder Hard fork) keine schützende Maßnahme ergriffen werden.
- Der The DAO Angreifer hat eine unzureichende interne Zustandsverwaltung der Finanzierungsanteile ausgenutzt, möglich war dies u.a. auch durch das Re-entrancy Problem der Programmiersprache Solidity.
Fazit
Unsere ersten Erfahrungen mit Smart Contracts sowie Beobachtungen des The DAO Debakels zeigen, dass Smart Contracts auf einer Blockchain noch in den Kinderschuhen stecken und das es extrem schwierig ist Smart Contracts sicher auf einer Blockchain zu implementieren. Dennoch hat diese Technologie enormes Potential, brauch aber nach unserer Einschätzung noch Zeit um zu reifen.
Zur ITP
ITP Innovative Technologie Projekte GmbH ist der innovative IT-Dienstleister für Banken. ITP betreibt ein Innovation Lab im Rahmen dessen Ideen mit neuen Technologien prototypisch umgesetzt und verprobt werden. Seien es hochperformante Background Engines oder Smart Contracts auf der Blockchain, ITP führt Forschungsaufträge für seine Kunden oder in eigenem Namen durch. ITP ist mit dem Innovation Lab branchenübergreifend tätig, doch liegt der Schwerpunkt der Aktivitäten im FinTech Bereich.