Was ist ein Smart Contract?
Was ein Smart Contract ist, wofür er genutzt wird, Anwendungsbeispiele und die Risiken in seinem Code.
Ratgeber lesen
Sprachen
Smart Contracts gehören zu den wichtigsten Anwendungen der Blockchain-Technologie, weil sie es ermöglichen, Anweisungen automatisch innerhalb eines dezentralen Netzwerks auszuführen. Ihr Betrieb verbindet Programmierung, Kryptografie, Konsensmechanismen und verteilte Register, um festzulegen, was geschieht, wenn eine Transaktion zuvor definierte Bedingungen erfüllt. Obwohl ihr Name auf das traditionelle Konzept eines Vertrags zurückgeht, ist ein Smart Contract nicht zwangsläufig ein digitalisiertes Rechtsdokument. Im Kern handelt es sich um ein Computerprogramm, das Regeln speichern, Anweisungen empfangen, Bedingungen prüfen und den Zustand einer Blockchain nach der in seinem Code eingebetteten Logik verändern kann.
Um zu verstehen, wie sie funktionieren, muss zunächst die Umgebung betrachtet werden, in der sie betrieben werden. Eine Blockchain stellt ein gemeinsames Register zwischen mehreren Teilnehmern bereit, die eine Kopie des Netzwerkzustands verwalten und über einen Konsensmechanismus bestimmen, welche Vorgänge gültig sind. Auf einigen dieser Netzwerke können Programme bereitgestellt werden und mit einer bestimmten Adresse verbunden bleiben, wobei sie mit von Nutzern gesendeten Transaktionen interagieren. Ethereum machte dieses Modell bekannt, indem es eine virtuelle Maschine integrierte, die programmierbaren Code innerhalb des Netzwerks selbst ausführen kann. Aus dieser Architektur entstand ein Ökosystem dezentraler Anwendungen, das Smart Contracts als seine wichtigste Infrastruktur nutzt.
Der Betrieb beginnt, wenn der Contract erstellt und auf der Blockchain bereitgestellt wird. Zuvor wurde sein Code von Programmierern entwickelt und anschließend in eine Form kompiliert, die von der entsprechenden virtuellen Maschine interpretiert werden kann. Durch die Bereitstellung erhält das Programm eine Identität innerhalb des Netzwerks und kann Interaktionen empfangen. Auf bestimmten Blockchains kann der veröffentlichte Code öffentlich untersucht werden, doch sichtbarer Code garantiert nicht automatisch, dass sich alle wirtschaftlichen oder technischen Auswirkungen leicht erkennen lassen.
Nach der Bereitstellung kann der Contract inaktiv bleiben, bis er eine Transaktion erhält oder ein anderer Mechanismus des Netzwerks seine Ausführung auslöst. Die Interaktion beginnt üblicherweise damit, dass ein Nutzer eine Transaktion mit seinem privaten Schlüssel kryptografisch signiert und an die Blockchain sendet. Der Vorgang legt fest, welcher Contract ihn empfangen und welche Funktion ausgeführt werden soll. Die Nodes des Netzwerks prüfen, ob die Transaktion gültig ist, ob die Signatur dem ausstellenden Konto entspricht und ob die notwendigen Ressourcen für ihre Verarbeitung verfügbar sind.
Wenn der Vorgang die Ausführungsumgebung erreicht, verarbeitet die virtuelle Maschine die Anweisungen des Contracts. Das Programm kann den auf der Blockchain aufgezeichneten Zustand abfragen, Bedingungen prüfen und Berechnungen durchführen. Sind die Regeln erfüllt, kann es den mit dem Contract verbundenen Speicher verändern, bestimmte digitale Vermögenswerte übertragen oder Informationen aktualisieren, die von anderen Funktionen verwendet werden. Wird eine wesentliche Bedingung nicht erfüllt, kann die Ausführung zurückgesetzt werden. In diesem Fall werden die von dem Vorgang abhängigen Zustandsänderungen nicht festgeschrieben, obwohl bestimmte Verarbeitungskosten weiterhin anfallen können.
Eines der wichtigsten Elemente zum Verständnis dieses Prozesses ist, dass der Contract nicht nach einem eigenen Willen handelt. Er trifft keine Entscheidungen im menschlichen Sinne und interpretiert keine mehrdeutigen Situationen. Er führt Anweisungen entsprechend den programmierten Regeln aus. Diese Eigenschaft erklärt sowohl seinen Nutzen als auch seine Grenzen. Ein Contract, der einen Vermögenswert übertragen soll, wenn eine bestimmte Bedingung erfüllt ist, kann dies automatisch tun, aber er kann diese Bedingung nur genau so bewerten, wie sie programmiert wurde.
Das Konzept des Gas ist auf Netzwerken wie Ethereum grundlegend. Die Ausführung eines Contracts verbraucht Rechenressourcen, und diese Ressourcen müssen erfasst werden. Gas dient als Einheit, mit der sich die für die Verarbeitung eines Vorgangs erforderliche Arbeit messen lässt. Jede Anweisung hat damit verbundene Kosten, und eine Transaktion legt ein Gas-Limit fest, das bestimmt, wie weit die Ausführung fortgesetzt werden kann. Dieser Mechanismus erfüllt auch eine Sicherheitsfunktion, weil es dadurch schwieriger wird, unbegrenzt Rechenkapazität des Netzwerks zu nutzen, ohne Kosten zu tragen.
Die Ausführung eines Smart Contracts erzeugt Änderungen, die vom Netzwerk akzeptiert werden müssen. Auf einer dezentralen Blockchain reicht es nicht aus, dass ein einzelner Computer einen Vorgang als gültig betrachtet. Die Teilnehmer, die Transaktionen validieren oder ausführen, müssen den gemeinsamen Regeln des Protokolls folgen. Wenn der Konsens den neuen Zustand bestätigt, werden die Auswirkungen des Vorgangs Teil der gemeinsamen Historie. Auf diese Weise arbeiten die Logik des Contracts und der Konsensmechanismus zusammen. Erstere bestimmt, welche Vorgänge gemäß dem Code gültig sind, während Letzterer es dem Netzwerk ermöglicht, sich auf den daraus resultierenden Zustand zu einigen.
Eine besonders wichtige Eigenschaft ist die Fähigkeit von Contracts, miteinander zu interagieren. Ein Contract kann einen anderen aufrufen und dessen Funktionen oder die von ihm verwalteten Daten verwenden. Dadurch lassen sich komplexe Systeme aus verschiedenen miteinander verbundenen Komponenten aufbauen. In der dezentralen Finanzwelt kann ein Protokoll beispielsweise Contracts für Einlagen, Kredite, Sicherheiten oder den Austausch kombinieren. Das Ergebnis ähnelt weniger einer isolierten Anwendung als einer Infrastruktur aus verschiedenen Programmen, die innerhalb desselben Netzwerks zusammenarbeiten.
Smart Contracts können jedoch nicht direkt alles wissen, was außerhalb der Blockchain geschieht. Ein dezentrales Netzwerk kann seine eigenen Aufzeichnungen überprüfen, aber nicht selbstständig feststellen, wie hoch der Preis einer Aktie ist, ob ein Flug ausgefallen ist oder welche Temperatur in einer Stadt herrscht. Oracles werden verwendet, um externe Informationen einzubringen. Diese Systeme übertragen Daten aus externen Quellen an die Blockchain und ermöglichen einem Contract, sie bei seinen Entscheidungen zu verwenden. Das Problem besteht darin, dass der Contract dadurch von der Zuverlässigkeit des Mechanismus abhängt, der die Informationen bereitstellt.
Diese Abhängigkeit ist einer der Gründe dafür, dass die Sicherheit eines Smart Contracts nicht darauf reduziert werden kann, zu prüfen, ob der Code korrekt erscheint. Es muss auch analysiert werden, wie der Contract Informationen erhält, wie er Berechtigungen kontrolliert, welche Vermögenswerte er verwaltet und wie er auf Ausnahmefälle reagiert. Ein logischer Fehler kann unerwartete Ergebnisse hervorbringen, selbst wenn das Programm exakt so funktioniert, wie es geschrieben wurde. In einem traditionellen System kann eine zentrale Instanz unter Umständen eingreifen, um einen Fehler zu korrigieren. Auf einer Blockchain hängt die Möglichkeit, einen Vorgang rückgängig zu machen, von den Regeln des Protokolls und dem Design des Systems selbst ab.
Schwachstellen in Smart Contracts haben gezeigt, dass Automatisierung nicht automatisch Sicherheit bedeutet. Fehler bei Berechtigungen, Berechnungen, Validierungen oder Interaktionen zwischen Contracts können ausgenutzt werden, um Zustände zu verändern oder Vermögenswerte zu bewegen. Deshalb werden Audits, automatisierte Tests, formale Prüfungen und zusätzliche Schutzmechanismen eingesetzt. Die Komplexität steigt, wenn ein Contract große Vermögenswerte verwaltet oder von anderen Contracts abhängt, die selbst Fehler enthalten können.
Der Betrieb dieser Systeme hat auch eine wichtige Konsequenz für das Vertrauen. Ein Smart Contract kann die Notwendigkeit eines Vermittlers reduzieren, der bestimmte Vorgänge manuell ausführt, beseitigt aber nicht die Notwendigkeit, einer technischen Infrastruktur zu vertrauen. Nutzer müssen dem Design des Protokolls, dem bereitgestellten Code, der Sicherheit der Blockchain und, sofern externe Quellen vorhanden sind, den verwendeten Oracles vertrauen. Vertrauen verschwindet nicht. Es verlagert sich von einer bestimmten Institution auf eine Kombination aus Software, Kryptografie und Konsensmechanismen.
Diese Veränderung erklärt, warum Smart Contracts so wichtig geworden sind. Ihre wichtigste Innovation besteht nicht nur darin, Aufgaben zu automatisieren, die Menschen zuvor manuell erledigt haben, sondern darin, bestimmte Regeln zu einem aktiven Bestandteil der Infrastruktur zu machen, die einen Vorgang ausführt. Wenn ein Programm einen digitalen Vermögenswert direkt kontrolliert und das Netzwerk garantiert, dass seine Anweisungen gemäß gemeinsamen Regeln ausgeführt werden, ist der Code nicht mehr nur ein Hilfswerkzeug, sondern übernimmt eine zentrale operative Rolle.
In der Praxis stellen Smart Contracts eine neue Art dar, digitale Dienste auf Blockchain-Netzwerken zu bauen. Sie können Vermögenswerte verwalten, Zustände aufzeichnen, Transaktionen koordinieren und Beziehungen zwischen verschiedenen Teilnehmern herstellen, ohne zwingend von einer Datenbank abhängig zu sein, die von einer einzelnen Organisation verwaltet wird. Ihr Betrieb beruht auf einer Kette von Prozessen, die mit einer signierten Transaktion beginnt, mit der Codeausführung fortgesetzt wird und in einer konsensbasierten Aktualisierung des Netzwerkzustands endet.
Das Verständnis dieses Mechanismus ermöglicht es, sowohl das Potenzial als auch die Grenzen zu erkennen. Ein Smart Contract kann eine Regel mit einer Präzision und Vorhersagbarkeit ausführen, die durch manuelle Prozesse schwer zu erreichen sein kann, aber er kann eine schlecht konzipierte Regel nicht selbst korrigieren und nicht bestimmen, ob von ihm empfangene externe Daten wahr sind. Der tatsächliche Umfang dieser Technologie liegt in der Verbindung ausführbarer Software mit einer dezentralen Infrastruktur, die ihre Auswirkungen aufzeichnen und überprüfen kann. Diese Kombination hat eine neue Kategorie digitaler Systeme geschaffen, deren Entwicklung weiterhin verändert, wie Vermögenswerte ausgetauscht, Vereinbarungen automatisiert und Dienste im Internet aufgebaut werden können.