Ein Zweck von Smart Contracts ist die Automatisierung von Zahlungsvorgängen zwischen Kontrahenten. Unser
Wirech Blockchain-Zahlungsservice funktioniert auch in diesem Markt. Trotz des Versprechens intelligenter Verträge analysiert der Autor des Materials die Mängel dieser Technologie.
Als Entwickler der beliebten Blockchain-Plattform werde ich manchmal gefragt, ob in den Entwicklungsplänen unseres Multichain-Dienstes ein Platz für intelligente Verträge vorhanden ist, ähnlich wie in Ethereum. Die Antwort klingt immer: "Nein oder zumindest jetzt nicht."

Aber in der lauten Hype-Welt der Blockchains gelten intelligente Verträge
als etwas sehr Cooles. Warum gibt es immer keine Antwort? Nun, das Problem ist, dass wenn im Fall von kontrolliertem Bitcoin wie Bitcoin mindestens drei leistungsstarke Szenarien ihrer praktischen Anwendung bekannt sind (Verfolgung der Herkunftsgeschichte, Speicherung von Unternehmensdokumenten, Erleichterung der Organisation von Finanzsystemen), dann für
intelligente On-
Air-Verträge eine gleichwertige Effizienz Fälle existieren einfach nicht.
Es ist nicht so, dass die Leute nicht verstehen, was sie von intelligenten Verträgen erwarten. Das Problem ist vielmehr, dass so viele dieser Ideen einfach nicht realisierbar sind. Wenn kluge Leute den Begriff intelligente Verträge hören, neigen sie dazu, ihrer Fantasie freien Lauf zu lassen. Zeichnen Sie die Kopfbilder von intelligenter eigenständiger Software ein, reiten Sie auf einer Datenwelle und stellen Sie eine Verbindung zur Lösung realer Probleme her. Leider ist das wirkliche Bild, wie intelligente Verträge funktionieren, viel prosaischer.
Ein intelligenter Vertrag ist ein Code, der in der Blockchain gespeichert ist. Es wird von Blockchain-Transaktionen angetrieben und liest aus der Blockchain oder schreibt Daten in diese. Das ist alles. Weder mehr noch weniger.
Ein intelligenter Vertrag ist nur ein klangvoller Name für einen Code, der in der Blockchain funktioniert und mit seinem Status interagiert. Was ist dieser Code? Dies ist Pascal, Python oder PHP. Oder vielleicht Java, Fortran oder C ++. Wenn Sie an das Datenbankformat denken, kann es in Form von Prozeduren dargestellt werden, die in einer SQL-Erweiterung geschrieben sind.
Grundsätzlich sind alle diese Sprachen gleichwertig und lösen dieselben Problemtypen mit denselben Lösungsmethoden. Natürlich hat jeder von ihnen Stärken und Schwächen. Sie wären verrückt, wenn Sie versuchen würden, eine C-Website zu erstellen oder HD-Videos in Ruby zu komprimieren. Aber zumindest theoretisch könnten Sie dies tun, wenn Sie wollten. Sie müssten nur einen hohen Preis in Bezug auf Bequemlichkeit und Leistung zahlen, und es ist sehr wahrscheinlich, dass Sie viele Haare auf Ihrem Kopf verlieren.
Das Problem intelligenter Verträge liegt nicht nur in übermäßig hohen Erwartungen, sondern auch in der Tatsache, dass diese Erwartungen dazu führen, dass eine beträchtliche Anzahl von Menschen Zeit und Geld für Ideen aufwenden, die in der Praxis wahrscheinlich nicht umgesetzt werden.
Die Praxis zeigt, dass große Unternehmen in der Regel über genügend Ressourcen verfügen, um von dem Moment, in dem das Top-Management von einer neuen Technologie erfährt, bis zu dem Moment, in dem ihre Vor- und Nachteile wirklich verstanden werden, einen langen Weg zurückzulegen.
In den letzten neun Monaten haben wir uns viele Fragen zu möglichen Szenarien für den Einsatz intelligenter Verträge angehört, und es ist einfach so passiert, dass wir ihren Autoren immer wieder geantwortet haben, dass diese Ideen im wirklichen Leben einfach nicht verwirklicht werden konnten.
Infolgedessen haben wir die drei häufigsten Missverständnisse zum Thema intelligente Verträge identifiziert. Diese Ideen sind nicht wahr, nicht weil die Technologie noch nicht reif genug ist oder weil wir noch keine Werkzeuge haben.
Stattdessen basieren sie auf einem Missverständnis der grundlegenden Eigenschaften von Code, der in einer Datenbank gespeichert und dezentral verarbeitet wird.
1. Interaktion mit externen Diensten
Oft können Sie das Angebot hören, intelligente Verträge zu verwenden, die ihr Verhalten als Reaktion auf ein externes Ereignis ändern. Zum Beispiel eine Agrarversicherung, die Zahlungen in Abhängigkeit von der Niederschlagsmenge in einem bestimmten Monat leistet.
Nach der Idee der Autoren der Idee läuft der Prozess ungefähr wie folgt ab: Ein intelligenter Vertrag wartet auf eine bestimmte vorgegebene Zeit, erhält einen Wetterbericht von einem externen Dienst und verhält sich gemäß den empfangenen Daten.
Das klingt ziemlich einfach. Einfach und unmöglich zugleich. Warum? Da Blockchain ein konsensbasiertes System ist, funktioniert es nur, wenn jeder Netzwerkknoten nach der Verarbeitung jeder Transaktion und jedes Blocks denselben Status erreicht.
Alle Operationen, die an der Blockchain stattfinden, müssen vollständig bestimmt werden, ohne die geringste Wahrscheinlichkeit, dass sich ein Unterschied in seine Arbeit einschleicht. Sobald zwei ehrliche Knoten unterschiedliche Positionen im Zustand der Kette einnehmen, wird das gesamte System unbrauchbar.
Und jetzt möchte ich Sie daran erinnern, dass jeder Kettenknoten intelligente Verträge unabhängig ausführt. Dies bedeutet, dass jeder Knoten den Vorgang zum unabhängigen Abrufen von Daten wiederholt, wenn ein intelligenter Vertrag Informationen von einer externen Quelle empfängt. Da sich die Quelle jedoch außerhalb der Blockchain befindet, gibt es keine Garantie dafür, dass jeder Knoten dieselbe Antwort erhält.
Möglicherweise ändert die Quelle ihre Antwort zu einem bestimmten Zeitpunkt zwischen Anforderungen von zwei verschiedenen Knoten, oder sie ist vorübergehend nicht mehr verfügbar. Auf die eine oder andere Weise wird kein Konsens erzielt und die gesamte Blockchain funktioniert nicht mehr.
Welcher Ausweg aus der Situation kann gefunden werden? Und die Lösung ist eigentlich sehr einfach. Sie müssen lediglich den Prozess der Kontaktaufnahme eines intelligenten Vertrags mit einer externen Quelle durch eine oder mehrere vertrauenswürdige Parteien (die sogenannten Orakel) ersetzen, um eine Transaktion zu erstellen, die die erforderlichen Daten in die Kette schreibt. Dann hat jeder Knoten eine identische Kopie der Daten und sie können für die Berechnungen des Smart-Vertrags verwendet werden.
Mit anderen Worten, anstelle eines intelligenten Vertrags, der Daten von außen „abruft“, gibt das Orakel dieselben Daten in die Blockchain ein.
Ähnliche Probleme treten bei intelligenten Verträgen auf, die bestimmte Ereignisse in der Außenwelt auslösen. Zum Beispiel mögen viele Menschen die Idee intelligenter Verträge, bei denen die API der Bank zum Überweisen von Geld verwendet wird. Wenn jedoch jeder Knoten den Kettencode unabhängig ausführt, welcher der Knoten ist für den Aufruf der API verantwortlich?
Wenn dies ein Knoten ist, was passiert dann, wenn dieser bestimmte Knoten absichtlich oder unfreiwillig ausfällt? Und wenn alle Knoten kontaktiert werden, können wir jedem Knoten ein API-Passwort anvertrauen? Und ist es gerechtfertigt, Hunderte von Anrufen anstelle von einem zu tätigen? Und noch schlimmer: Wenn ein intelligenter Vertrag den Erfolg eines API-Aufrufs bestimmen muss, stehen wir erneut vor dem Problem der Abhängigkeit von externen Daten.
Und es gibt auch einen einfachen Ausweg. Anstatt einen Smart-Vertrag anzuweisen, auf eine externe API zuzugreifen, können wir einen vertrauenswürdigen Dienst verwenden, der den Status der Blockchain überwacht und bestimmte Aktionen als Reaktion auf die empfangenen Daten ausführt. Beispielsweise könnte eine Bank die Blockchain proaktiv überwachen und Geldtransfers durchführen, die den in der Kette genehmigten Transaktionen entsprechen. Dieser Ansatz birgt keine Risiken für die Erzielung eines Konsenses, da die Kette in diesem Modell eine absolut passive Rolle spielt.
Nachdem wir die vorgeschlagenen Lösungen für die oben beschriebenen Situationen geprüft haben, können wir einige Schlussfolgerungen ziehen.
Erstens erfordern beide Ansätze einen vertrauenswürdigen Dritten, um die Interaktionen zwischen der Blockchain und der Außenwelt zu verwalten. Trotz der theoretischen Möglichkeit, ein solches Modell umzusetzen, verliert jede Dezentralisierung innerhalb ihres Rahmens jede Bedeutung.
Zweitens sind die in diesen Beispielen verwendeten Mechanismen direkte Beispiele für das Lesen und Schreiben in die Datenbank. Das Orakel, das externe Informationen bereitstellt, schreibt sie einfach in die Kette. Ein Dienst, der den Zustand der Blockchain in der realen Welt wiederholt, liest nur aus dieser Kette. Mit anderen Worten, jede Interaktion zwischen der Blockchain und der Außenwelt ist in diesem Fall auf normale Datenbankoperationen zurückzuführen.
Wir werden diese Tatsache später im Material genauer erläutern.
2. Zahlungen innerhalb der Kette ausführen
Ein weiterer Vorschlag, den wir oft hören: die Verwendung intelligenter Verträge zur Automatisierung von Zahlungen auf Coupons sogenannter intelligenter Anleihen. Der Kern der Idee besteht darin, Zahlungen automatisch zu dem vom Smart-Vertrag geforderten Zeitpunkt zu initialisieren. Dies vermeidet die manuelle Verarbeitung der Zahlung und stellt sicher, dass der Emittent nicht in Verzug geraten kann.
Damit diese Idee funktioniert, müssen sich die zur Auszahlung verwendeten Mittel natürlich auch in der Blockchain befinden. Andernfalls kann ein intelligenter Vertrag die Zahlung einfach nicht garantieren.
Denken wir daran, dass Blockchain nur eine Datenbank ist. In unserem Fall ein Finanzregister mit ausgegebenen Anleihen und einer Kasse. Wenn wir also von Couponzahlungen sprechen, sprechen wir tatsächlich von Datenbankoperationen, die automatisch zum vereinbarten Zeitpunkt ausgeführt werden.
Obwohl eine solche Automatisierung aus technischer Sicht möglich ist, treten Schwierigkeiten mit dem finanziellen Aspekt des Modells auf. Wenn die für Couponzahlungen verwendeten Mittel durch einen Smart-Bond-Vertrag kontrolliert werden, können diese Zahlungen wirklich garantiert werden. In diesem Fall kann der Anleiheemittent diese Mittel jedoch nicht für andere Zwecke verwenden. Und der Entzug von Geldern aus der Kontrolle eines intelligenten Vertrags macht jede Garantie für deren Zahlung ungültig.
Mit anderen Worten, eine intelligente Anleihe ist weder für den Emittenten noch für den Anleger bedeutungslos. Wenn Sie über diese Situation nachdenken, wird eine solche Schlussfolgerung völlig offensichtlich.
Aus Sicht des Anlegers besteht der Kern des Kaufs von Anleihen in der Fähigkeit, einen attraktiven Gewinn zu erzielen, wenn ein akzeptables Ausfallrisiko besteht. Für den Emittenten besteht der Zweck der Emission von Anleihen darin, Mittel für eine produktive, aber etwas riskante Aktivität zu beschaffen, beispielsweise für den Bau einer neuen Fabrik.
Es gibt keine Möglichkeit für den Emittenten, Mittel zu beschaffen und gleichzeitig Zahlungen an Anleger eindeutig zu garantieren. Ich denke, niemand wird überrascht sein, dass die Regelmäßigkeit zwischen Risiko und Rentabilität nicht in der Liste der Aufgaben enthalten ist, die Blockchains lösen können.
3. Die Notwendigkeit, sensible Daten zu verbergen
Wie ich bereits geschrieben habe, besteht die größte Herausforderung bei der Bereitstellung von Blockchains in der extremen Transparenz, die sie bieten.
Wenn beispielsweise eine Gruppe von 10 Banken zusammen eine Blockchain erstellen möchte, werden alle bidirektionalen Transaktionen in dieser Blockchain für die anderen acht Teilnehmer sofort sichtbar. Trotz der Existenz verschiedener Strategien, die es ermöglichen, diesen Effekt auszugleichen, kann keine von ihnen die Einfachheit und Effektivität einer zentralisierten Datenbank übertreffen, die von einer bestimmten Person verwaltet wird, die die volle Kontrolle über die Sichtbarkeits- und Zugriffsebenen aller Teilnehmer hat.
Einige Leute glauben, dass intelligente Verträge dieses Problem lösen können. Ihre Argumentation beginnt mit der Tatsache, dass jeder intelligente Vertrag seine eigene Miniaturdatenbank enthält und diese vollständig kontrolliert. Alle Lese- und Schreibvorgänge in dieser Datenbank werden vollständig durch den Vertragscode vermittelt, der die Situation ausschließt, in der ein Vertrag die Daten eines anderen liest. (Diese enge Beziehung zwischen Daten und Code wird als Kapselung bezeichnet. Sie liegt den gängigen Paradigmen der objektorientierten Programmierung zugrunde.)
Kein intelligenter Vertrag kann also auf die Daten anderer intelligenter Kontakte zugreifen. Aber löst dies das Datenschutzproblem innerhalb der Blockchain? Ist es sinnvoll, über das Verstecken von Informationen in einem intelligenten Vertrag zu sprechen? Leider lautet die Antwort nein.
Ja, ein intelligenter Vertrag kann keine Daten aus anderen Verträgen lesen. Diese Kopien dieser Daten befinden sich jedoch weiterhin in jedem einzelnen Netzwerkknoten. Jeder Teilnehmer speichert diese Daten in seinem Speicher oder auf der Festplatte des Systems, das unter seiner vollen Kontrolle steht. Infolgedessen hindert nichts diesen Teilnehmer daran, Informationen in seinem eigenen System zu lesen, wenn und wann er dies tun möchte.
Versuche, Daten in einem intelligenten Vertrag auszublenden, sind in Bezug auf die Sicherheitsstufe vergleichbar mit dem Versuch, sie im HTML-Code einer Webseite auszublenden. Gewöhnliche Webbenutzer sehen solche Informationen natürlich nicht, da sie nicht im Browserfenster angezeigt werden. Für die Offenlegung müssen Sie jedoch nur auf die Schaltfläche klicken, um den "Quellcode" anzuzeigen, der in allen modernen Browsern vorhanden ist, und die Daten werden sofort in Ihre Handfläche gelegt.
In ähnlicher Weise müssen bei Daten, die in einem Smart-Vertrag verborgen sind, lediglich Änderungen an der Software für die Arbeit mit der Blockchain vorgenommen werden, damit der vollständige Status des Vertrags angezeigt wird und der Anschein von Geheimhaltung sofort verschwindet.
Jeder mittelständische Programmierer wird diese Aufgabe in nicht mehr als einer Stunde erledigen.
Was ist der Zweck von intelligenten Verträgen?
Nach alledem stellt sich eine vernünftige Frage: Wo können intelligente Verträge im Allgemeinen Anwendung finden? Um diese Frage zu beantworten, müssen wir jedoch mental zu den Grundkonzepten von Blockchains zurückkehren. Kurz gesagt, die Blockchain ermöglicht es einer Gruppe von Personen, die sich nicht vertrauen, direkt, sicher und direkt mit der Datenbank zu arbeiten, ohne sich an einen bestimmten Hauptadministrator wenden zu müssen, um Hilfe zu erhalten.
Mit Blockchains können Sie die Mediation bei der Arbeit mit Daten abbrechen, was zu einer erheblichen Vereinfachung und geringeren Kosten führen kann.
Um eine Änderung an einer Datenbank vorzunehmen, muss eine sogenannte Transaktion ausgeführt werden, die eine Reihe von Änderungen in der Datenbank enthält, die entweder erfolgreich angewendet oder insgesamt abgelehnt werden. Nehmen Sie zum Beispiel die Situation mit dem Finanzregister, in der Alice eine Zahlung zugunsten von Bob leistet. Die Zahlung wird in Form einer Transaktion dargestellt, die: a) prüft, ob Alice über genügend Guthaben auf dem Konto verfügt, b) den angegebenen Geldbetrag von Alices Konto abzieht und c) den gleichen Betrag auf Bobs Konto hinzufügt.
In einer regulären zentralisierten Datenbank werden diese Transaktionen von einem einzigen vertrauenswürdigen Manager erstellt. Im Gegensatz dazu können in einer öffentlichen Datenbank vom Typ Blockchain Transaktionen von jedem Blockchain-Benutzer erstellt werden. Und da zwischen diesen Benutzern kein absolutes Vertrauen besteht, sollte die Datenbank Regeln enthalten, die die Ausführung von Transaktionen einschränken.
Beispielsweise sollten im Finanzregister, dessen Knoten alle gleich sind, die Parameter jeder Transaktion nicht zu einer Verletzung des allgemeinen Kontostands führen. Andernfalls können die Teilnehmer so viel Geld frei vergeben, wie sie möchten.
Es gibt sehr viele Möglichkeiten, diese Regeln einzuhalten, aber derzeit dominieren zwei Paradigmen, die unter dem Einfluss von Bitcoin und Ethereum vorherrschen. Die Bitcoin-Methode, die auf andere Weise als „Transaktionsbeschränkung“ bezeichnet werden kann, bewertet jede Transaktion unter folgenden Gesichtspunkten: a) Datensätze in der Datenbank, die mit dieser Transaktion gelöscht wurden, und b) erstellte Datensätze.
Die Regel wird im Finanzregister verwendet: Der Gesamtbetrag der Gelder in gelöschten Datensätzen sollte nicht mit dem Gesamtbetrag in den erstellten Datensätzen in Konflikt stehen. (Eine Änderung in einem Datensatz gilt als Löschen dieses Datensatzes und dessen Neuerstellung mit den erforderlichen Werten.)
Das zweite Paradigma, das seinen Ursprung in Ethereum hat, sind intelligente Verträge. Demnach sollten alle Änderungen der Vertragsdaten durch seinen Code durchgeführt werden. (Im Zusammenhang mit herkömmlichen Datenbanken kann davon ausgegangen werden, dass dies eine obligatorische gespeicherte Prozedur ist.) Um die Vertragsdaten zu ändern, senden Benutzer der Blockchain Anforderungen an ihren Code, der bestimmt, ob und wie die Anforderung erfüllt werden soll.
In Anbetracht des obigen Beispiels führt ein intelligenter Vertrag für das Finanzregister dieselben Aufgaben aus wie der Administrator einer zentralisierten Datenbank: Überprüfung der Verfügbarkeit einer ausreichenden Menge an Geldern, Subtrahieren von einem Konto und Hinzufügen zu einem anderen.
Beide Paradigmen arbeiten effizient und jedes hat seine Vor- und Nachteile. Kurz gesagt, durch die Begrenzung von Transaktionen vom Typ Bitcoin können Sie bessere Indikatoren für die gleichzeitige Zugänglichkeit und Leistung erzielen, während Verträge vom Typ Smart Ethereum eine größere Flexibilität ermöglichen.
Zurück zur Frage, wozu intelligente Verträge dienen: Sie werden benötigt, wenn es nicht möglich ist, einen Blockchain-Fall mithilfe von Transaktionsbeschränkungen zu implementieren.
Aber selbst nachdem ich dieses Kriterium für die Verwendung intelligenter Verträge festgelegt habe, fällt es mir immer noch schwer, mindestens ein Szenario für die Verwendung für geschlossene Blockchains zu nennen, bei dem der traditionelle Bitcoin-Ansatz wirklich nicht anwendbar wäre.
Alle wirklich interessanten Blockchain-Projekte, die ich kenne, können mit dem Bitcoin-Ansatz implementiert werden, in dessen Rahmen sowohl die Trennung von Zugriffsrechten und Datenspeicherung als auch die Schaffung von Assets, deren Bewegung, Hinterlegung, Austausch und Zerstörung implementiert werden können. Wie dem auch sei, es erscheinen regelmäßig neue Benutzerfälle, und ich bin nicht überrascht, wenn einige von ihnen wirklich die Leistung intelligenter Verträge erfordern. Oder zumindest eine Erweiterung des Bitcoin-Paradigmas.
Auf die eine oder andere Weise ist die Schlüsselregel in jeder Situation, sich daran zu erinnern, dass intelligente Verträge nur eine der Methoden sind, um die Ausführung von Transaktionen in der Datenbank einzuschränken.
, , . - . , .
