Kurz erklärt: Ein Circuit Breaker (deutsch etwa „Sicherungsschalter“) ist ein Entwurfsmuster in Smart Contracts, das es erlaubt, bestimmte Funktionen im Notfall vorübergehend zu deaktivieren. Es wird auch als Pausable-Muster bezeichnet und dient dazu, im Falle eines erkannten Fehlers oder Angriffs weiteren Schaden zu begrenzen.
Herkunft und Zweck
Der Begriff Circuit Breaker ist der Elektrotechnik entlehnt, wo ein Sicherungsschalter den Stromkreis bei Überlast unterbricht. In der Softwarearchitektur ist das Muster auch aus verteilten Systemen bekannt, wo es Ausfälle einzelner Dienste abfangen soll. In den Bereich der Smart Contracts wurde es ab etwa 2016 übernommen, um auf unvorhergesehene Zustände reagieren zu können.
Der zentrale Zweck besteht darin, bei einem erkannten Problem – etwa einem laufenden Angriff oder einem Fehler in der Vertragslogik – die betroffenen Funktionen anzuhalten, bis eine Lösung gefunden ist.
Technische Umsetzung
In Solidity wird ein Circuit Breaker häufig über einen booleschen Zustand (etwa eine Variable „paused“) und zugehörige Modifier realisiert. Funktionen werden mit Bedingungen versehen, die eine Ausführung nur im nicht pausierten Zustand zulassen:
- whenNotPaused: Funktionen wie Transfers oder Einzahlungen sind nur ausführbar, solange der Vertrag nicht pausiert ist.
- whenPaused: Bestimmte Notfallfunktionen sind nur im pausierten Zustand aufrufbar.
Das Umschalten des Zustands ist typischerweise durch Access Control geschützt und nur berechtigten Rollen (etwa einer „Pauser“-Rolle) vorbehalten. Die OpenZeppelin-Bibliothek stellt hierfür ein standardisiertes Pausable-Modul bereit.
Abgrenzung und Diskussion
Ein Circuit Breaker unterscheidet sich von einem Emergency Shutdown dadurch, dass er in der Regel ein reversibles, vorübergehendes Anhalten einzelner Funktionen bewirkt, während ein Emergency Shutdown ein umfassenderes, oft geordnetes Herunterfahren eines gesamten Protokolls beschreibt.
Kritisch diskutiert wird die Zentralisierung: Wer die Pause-Funktion kontrolliert, kann den Betrieb eines Protokolls einseitig unterbrechen. Dies steht in einem Spannungsverhältnis zum Ideal der Dezentralisierung. Als Kompromiss werden Pause-Rechte häufig an Multi-Signatur-Wallets oder zeitlich verzögerte Governance gebunden. Die Nachprüfbarkeit setzt eine Contract Verification voraus.
Häufige Fragen
Was macht ein Circuit Breaker in einem Smart Contract?
Er erlaubt es, bestimmte Funktionen eines Smart Contracts vorübergehend anzuhalten, etwa bei einem erkannten Fehler oder Angriff, um weiteren Schaden zu begrenzen.
Ist ein Circuit Breaker dasselbe wie ein Pausable-Muster?
Ja, die Begriffe werden weitgehend synonym verwendet. Das Pausable-Muster ist die konkrete technische Umsetzung eines Circuit Breakers in Sprachen wie Solidity.
Wer darf einen Circuit Breaker auslösen?
In der Regel nur berechtigte Adressen oder Rollen, die über Access-Control-Mechanismen definiert sind, häufig eine dedizierte Pauser-Rolle oder eine Multi-Signatur-Wallet.
Worin liegt der Unterschied zum Emergency Shutdown?
Ein Circuit Breaker hält meist einzelne Funktionen reversibel an. Ein Emergency Shutdown beschreibt ein umfassenderes, oft geordnetes Herunterfahren eines gesamten Protokolls.
Welche Kritik gibt es an Circuit Breakern?
Die Kontrolle über die Pause-Funktion stellt eine Zentralisierung dar, da eine berechtigte Instanz den Betrieb einseitig unterbrechen kann. Dies steht im Spannungsverhältnis zur Dezentralisierung.
Zusammenfassung
Der Circuit Breaker ist ein Entwurfsmuster, das das vorübergehende Anhalten von Smart-Contract-Funktionen im Notfall ermöglicht. Technisch wird es meist über einen Pause-Zustand und geschützte Modifier umgesetzt. Es dient der Schadensbegrenzung, wirft aber Fragen zur Zentralisierung der Kontrolle auf.
Weiterführende Quellen
- OpenZeppelin Contracts Dokumentation: Pausable: docs.openzeppelin.com
- ConsenSys: Smart Contract Best Practices (Circuit Breakers): consensys.github.io