Über die Unveränderlichkeit von Smart Contracts.
Sobald ein Smart Contract auf der Blockchain bereitgestellt ist, kann er nicht mehr verändert werden. Da Software aber selten fehlerfrei ist, ergibt sich daraus für Smart Contracts eine spezielle Herausforderung mit Praxisrelevanz. So wurden in den letzten Jahren bei unzähligen Hacks Werte in Milliardenhöhe über fehlerhafte Smart Contracts unrechtmässig entwendet. Welche Möglichkeiten bestehen, um dieser Problematik zu begegnen?
Haben Sie kürzlich über einen Smart Contract ein kostenloses Streaming-Probeabonnement bestellt und vergessen, das Abonnement innerhalb der Probezeit zu kündigen? Da der Smart Contract unveränderlich ist, gibt es jetzt leider keinen Rückzieher mehr. Nicht nur müssen Sie zähneknirschend die erste Monatsgebühr zahlen, sondern bleiben bis in alle Ewigkeit Abonnent des entsprechenden Angebots.
Dieses fiktive und mit einem Augenzwinkern zu verstehende Szenario zeigt auf, was Unveränderlichkeit bei Verträgen bedeuten könnte. Smart Contracts sind zwar je nach Meinung weder smart, noch Verträge, aber sie sind auf jeden Fall unveränderlich. Diese Unveränderlichkeit ist ein entscheidendes, vertrauensbildendes Merkmal von Blockchains und betrifft sämtliche darin gespeicherten Daten.
Das Dilemma
Smart Contracts bestehen zu 100% aus Programm-Code und sind damit Software, die bekanntlich kaum je fehlerfrei ist. Im Gegenteil sind Bugs ein häufiges und kostspieliges Problem der Softwareindustrie und reichen von kleinen Pannen bis hin zu kritischen Mängeln, die Systemausfälle oder sogar Sicherheitslücken verursachen. Laut Studien kosten Softwarefehler beispielsweise die Wirtschaft der USA jährlich mehrere Dutzend Milliarden Dollar.
Das Dilemma ist offensichtlich: Die in jedem Smart Contract zu vermutenden Fehler können aufgrund der Unveränderlichkeit der Blockchain-Daten nie korrigiert werden. In der Praxis ist dies leider relevant: Nur schon im Betrachtungszeitraum 2021-2022 wurden bei Dutzenden Hacks im De-Fi-Bereich über fehlerhafte Smart Contracts Werte von über 2 Milliarden Dollar unrechtmässig entwendet, davon beispielsweise 611 Millionen Dollar alleine beim Poly Network Exploit.
Präventive Massnahmen
Wie können fehlerhafte Smart Contracts von Anfang an vermieden werden? Dabei stehen in erster Linie klassische Qualitätssicherungs-Methoden von Software zur Verfügung: Extensives Testing inkl. Review-Phasen, Analyse-Tools, Audits etc.
Reaktive Massnahmen
Und wenn trotz aller Vorsichtmassnahmen in einem produktiven Smart Contract ein Fehler entdeckt wird? Bei schwerwiegenden Fehlern oder wenn die Zeit drängt, können Mechanismen wie selfdestruct() (zerstört den Smart Contracts und sendet sämtliche noch vorhandene Liquidität an eine bestimmte Adresse) oder „Kill Switch“ (technisch gesehen handelt es sich um eine Pausierung) die weitere Ausführung eines Smart Contracts sofort stoppen. Vorausgesetzt natürlich, dass diese Mechanismen im betreffenden Smart Contract vorgesehen wurden.
Upgradeable Smart Contracts bieten einen gewissen Spielraum für Anpassungen. „Upgradeable“ bedeutet aber nicht etwa „frei veränderbar“. Es geht dabei um Konzepte, mit Separierungen oder zusätzlichen Komponenten den fehlerhaften Smart Contract zu umgehen. Eine Variante davon ist das Proxy Pattern (im Beispiel von Ethereum), bei der dem Smart Contract eine zusätzliche Komponente – Proxy genannt – vorgelagert wird. Die Clients kommunizieren weiterhin mit demselben Proxy, der aber im Hintergrund so angepasst wird, dass er auf einen neuen, korrigierten Smart Contract zeigt. Es handelt sich dabei also um einen Austausch von Smart Contracts, wobei der alte für immer bestehen bleibt.
Fazit
Fehler in Smart Contracts können gravierende Folgen nach sich ziehen. Demgegenüber stellt die Unveränderlichkeit der Smart Contracts eine spezielle Herausforderung dar. Es existieren aber Möglichkeiten, mit diesen Risiken verantwortlich umzugehen. Trotzdem ist es vielleicht noch zu früh, Ihren nächsten Arbeitsvertrag per Smart Contract abzuschliessen…
Weiterführende Themen