Kurz erklärt: Ein Upgradeable Contract (aktualisierbarer Smart Contract) ist ein Vertrag, dessen Programmlogik nach der Bereitstellung geändert werden kann, ohne dass der gespeicherte Zustand oder die Vertragsadresse verloren gehen. Umgesetzt wird dies technisch meist über einen Proxy Contract.
Hintergrund
Smart Contracts auf Plattformen wie Ethereum sind standardmäßig unveränderlich. Diese Eigenschaft schafft Vertrauen, erschwert aber die Wartung: Ein entdeckter Programmfehler lässt sich am ursprünglichen Vertrag nicht direkt beheben. Als Antwort darauf entwickelte die Entwicklergemeinde ab etwa 2017 Verfahren, um Verträge nachträglich aktualisierbar zu machen.
Der Begriff beschreibt kein einzelnes Produkt, sondern ein Architekturprinzip. Es wird häufig in dezentralen Finanzanwendungen (DeFi), Stablecoins und Governance-Systemen eingesetzt, bei denen langfristige Weiterentwicklung notwendig ist.
Umsetzungsvarianten
Mehrere technische Ansätze existieren, um Aktualisierbarkeit zu erreichen:
- Proxy-Muster: Der am weitesten verbreitete Ansatz, bei dem ein Proxy per delegatecall auf eine austauschbare Logikadresse verweist.
- Diamond-Standard (EIP-2535): ein modularer Ansatz, bei dem ein Vertrag Funktionalität auf mehrere Logikmodule (Facets) verteilt.
- Migration: Bereitstellung eines neuen Vertrags und freiwillige Übertragung von Nutzern und Daten, ohne echten In-Place-Upgrade.
- Registry-Muster: ein Verweisverzeichnis, das jeweils auf die aktuell gültige Vertragsversion zeigt.
Governance und Vertrauen
Aktualisierbarkeit verlagert Kontrolle: Wer die Upgrade-Berechtigung besitzt, kann das Verhalten eines Vertrags verändern. In der Praxis wird diese Berechtigung häufig an ein Multisignatur-Wallet, einen Zeitverzögerungs-Mechanismus (Timelock) oder eine dezentrale Organisation (DAO) gebunden, um einseitige Änderungen zu erschweren.
Dieser Zielkonflikt zwischen Wartbarkeit und Unveränderlichkeit ist ein wiederkehrendes Diskussionsthema. Kritiker weisen darauf hin, dass ein aktualisierbarer Vertrag streng genommen nicht vollständig vertrauenslos ist. Vor produktivem Einsatz ist ein Smart-Contract-Audit verbreitete Praxis.
Verbindungen zu anderen Technologien
Upgradeable Contracts sind eng mit dem Ökosystem der Ethereum Virtual Machine verbunden und werden auch auf EVM-kompatiblen Netzwerken wie BNB Smart Chain, Polygon oder Arbitrum genutzt. Werkzeuge wie die OpenZeppelin-Bibliothek oder das Entwicklungs-Framework Hardhat bieten standardisierte Unterstützung für das sichere Deployment und die Verwaltung solcher Verträge.
Häufige Fragen
Warum sind Smart Contracts normalerweise nicht aktualisierbar?
Der Bytecode eines bereitgestellten Vertrags ist auf der Blockchain unveränderlich gespeichert. Diese Unveränderlichkeit schafft Verlässlichkeit, verhindert aber nachträgliche Korrekturen ohne besondere Architektur.
Wie werden Verträge trotzdem aktualisierbar gemacht?
Meist über ein Proxy-Muster, bei dem ein fester Proxy-Vertrag auf eine austauschbare Logikadresse verweist. Alternativ existieren der Diamond-Standard oder klassische Migration.
Wer darf einen Upgradeable Contract ändern?
Das legt die Zugriffskontrolle des Vertrags fest. Häufig ist die Upgrade-Berechtigung an ein Multisignatur-Wallet, einen Timelock oder eine DAO gebunden.
Ist ein aktualisierbarer Vertrag weniger vertrauenswürdig?
Er ist nicht vollständig unveränderlich, weshalb Nutzer der Upgrade-Berechtigung vertrauen müssen. Dieser Zielkonflikt zwischen Wartbarkeit und Vertrauenslosigkeit wird kontrovers diskutiert.
Was ist der Diamond-Standard?
EIP-2535 beschreibt einen modularen Ansatz, bei dem ein Vertrag seine Funktionalität auf mehrere austauschbare Logikmodule, sogenannte Facets, verteilt.
Zusammenfassung
Ein Upgradeable Contract ist ein Smart Contract, dessen Logik nach dem Deployment ausgetauscht werden kann, ohne Zustand oder Adresse zu verlieren. Die Umsetzung erfolgt meist über Proxy-Muster oder den Diamond-Standard. Da Aktualisierbarkeit Kontrolle an die Upgrade-Berechtigten verlagert, sind Governance-Mechanismen und Audits gängige Absicherungen.
Weiterführende Quellen
- OpenZeppelin: Writing Upgradeable Contracts: docs.openzeppelin.com
- EIP-2535: Diamonds, Multi-Facet Proxy: eips.ethereum.org