Passen Sie auf den unmöglichen intelligenten Vertrag auf

Quellknoten: 1576899

Die drei häufigsten Missverständnisse bei intelligenten Verträgen

Als Entwickler einer beliebten Blockchain-Plattform werden wir manchmal gefragt, ob Ethereum-ähnliche Smart-Verträge auf dem Markt sind Multichain Roadmap. Die Antwort, die ich immer gebe, lautet: nein oder zumindest noch nicht.

Aber in der hype-gefüllten Welt der Blockchains sind intelligente Verträge der letzte Schrei. Warum also nicht? Nun, das Problem ist, dass wir zwar drei wichtige Anwendungsfälle für genehmigte Blockchains im Bitcoin-Stil kennen (Herkunft, unternehmensübergreifende Aufzeichnungen und leichte Finanzierungen), aber noch nicht das Äquivalent für intelligente Verträge im Ethereum-Stil gefunden haben.

Es ist nicht so, dass den Menschen Ideen fehlen, was sie von intelligenten Verträgen erwarten. Es sind vielmehr so ​​viele dieser Ideen sind einfach unmöglich. Sie sehen, wenn kluge Leute den Begriff „kluge Verträge“ hören, neigen ihre Vorstellungen dazu, wild zu werden. Sie zaubern Träume von autonomer intelligenter Software, gehen in die Welt und nehmen ihre Daten für die Fahrt mit.

Leider ist die Realität intelligenter Verträge weitaus banaler als all das:

Ein intelligenter Vertrag ist ein Code, der in einer Blockchain gespeichert ist, durch Blockchain-Transaktionen ausgelöst wird und Daten in die Datenbank dieser Blockchain liest und schreibt.

Das ist es. Ja wirklich. Ein intelligenter Vertrag ist nur ein ausgefallener Name für Code, der in einer Blockchain ausgeführt wird und mit dem Status dieser Blockchain interagiert. Und was is Code? Es ist Pascal, es ist Python, es ist PHP. Es ist Java, es ist Fortran, es ist C ++. Wenn wir über Datenbanken sprechen, ist es Gespeicherte Prozeduren geschrieben in einer Erweiterung von SQL. Alle diese Sprachen sind grundsätzlich gleichwertig und lösen die gleichen Probleme auf die gleichen Arten. Natürlich hat jeder seine Stärken und Schwächen - Sie wären verrückt, eine Website in C zu erstellen oder HD-Videos in Ruby zu komprimieren. Aber zumindest im Prinzip könnten Sie, wenn Sie wollten. Sie würden nur einen hohen Preis in Bezug auf Bequemlichkeit, Leistung und höchstwahrscheinlich Ihre Haare zahlen.

Das Problem bei intelligenten Verträgen besteht nicht nur darin, dass die Erwartungen der Menschen übertroffen werden. Es ist so, dass diese Erwartungen viele dazu veranlassen, Zeit und Geld für Ideen aufzuwenden, die unmöglich umgesetzt werden können. Es scheint, dass große Unternehmen über ausreichende Ressourcen verfügen, um einen langen Weg zurückzulegen - von dem Moment an, in dem die Geschäftsleitung auf eine neue Technologie stößt, bis zu dem Zeitpunkt, an dem die Vor- und Nachteile dieser Technologie wirklich verstanden werden. Vielleicht kann unsere eigene Erfahrung helfen, diese Zeit zu verkürzen.

In den letzten neun Monaten wurden uns viele Anwendungsfälle für intelligente Verträge vorgestellt, und wir haben immer wieder darauf reagiert, dass dies einfach nicht möglich ist. Infolgedessen haben wir die drei häufigsten Missverständnisse bei intelligenten Verträgen identifiziert. Diese Ideen sind nicht falsch, weil die Technologie noch nicht ausgereift ist oder die Tools noch nicht verfügbar sind. Vielmehr missverstehen sie das Grundlegende Eigenschaften von Code, der in einer Datenbank gespeichert ist und dezentral ausgeführt wird.

Kontaktaufnahme mit externen Diensten

Oft ist der erste vorgeschlagene Anwendungsfall ein intelligenter Vertrag, der sein Verhalten als Reaktion auf ein externes Ereignis ändert. Zum Beispiel eine Agrarversicherung, die sich bedingt nach der Niederschlagsmenge in einem bestimmten Monat auszahlt. Der vorgestellte Prozess sieht ungefähr so ​​aus: Der Smart-Vertrag wartet bis zur festgelegten Zeit, ruft den Wetterbericht von einem externen Dienst ab und verhält sich basierend auf den empfangenen Daten angemessen.

Das klingt alles einfach genug, ist aber auch unmöglich. Warum? Da eine Blockchain ein konsensbasiertes System ist, funktioniert sie nur, wenn jeder Knoten nach der Verarbeitung jeder Transaktion und jedes Blocks einen identischen Status erreicht. Alles, was in einer Blockchain stattfindet, muss vollständig deterministisch sein, ohne dass sich Unterschiede einschleichen können. In dem Moment, in dem sich zwei ehrliche Knoten über den Zustand der Kette nicht einig sind, wird das gesamte System wertlos.

Denken Sie nun daran, dass intelligente Verträge von jedem Knoten in einer Kette unabhängig ausgeführt werden. Wenn ein intelligenter Vertrag einige Informationen von einer externen Quelle abruft, wird dieser Abruf daher von jedem Knoten wiederholt und separat durchgeführt. Aber weil diese Quelle außerhalb der Blockchain liegt, Es gibt keine Garantie dafür, dass jeder Knoten dieselbe Antwort erhält. Möglicherweise ändert die Quelle ihre Antwort in der Zeit zwischen Anforderungen von verschiedenen Knoten, oder sie ist vorübergehend nicht mehr verfügbar. In jedem Fall wird der Konsens gebrochen und die gesamte Blockchain stirbt.

Was ist die Problemumgehung? Eigentlich ist es ziemlich einfach. Anstelle eines intelligenten Vertrags, der das Abrufen externer Daten initiiert, erstellen eine oder mehrere vertrauenswürdige Parteien („Orakel“) eine Transaktion, die diese Daten in die Kette einbettet. Jeder Knoten verfügt über eine identische Kopie dieser Daten, sodass sie sicher für eine intelligente Vertragsberechnung verwendet werden können. Mit anderen Worten, ein Orakel schiebt die Daten auf die Blockchain anstatt eines intelligenten Vertrags Ziehen es in.

Bei intelligenten Verträgen, die Ereignisse in der Außenwelt verursachen, tritt ein ähnliches Problem auf. Zum Beispiel mögen viele die Idee eines intelligenten Vertrags, der die API einer Bank aufruft, um Geld zu überweisen. Aber wenn jeder Knoten den Code in der Kette unabhängig ausführt, wer ist dann für den Aufruf dieser API verantwortlich? Wenn die Antwort nur ein Knoten ist, was passiert, wenn dieser bestimmte Knoten absichtlich oder nicht funktioniert? Und wenn die Antwort jeder Knoten ist, können wir jedem Knoten das Passwort dieser API anvertrauen? Und wollen wir wirklich, dass die API hunderte Male aufgerufen wird? Schlimmer noch, wenn der Smart-Vertrag wissen muss, ob der API-Aufruf erfolgreich war, sind wir gleich wieder bei dem Problem, von externen Daten abhängig zu sein.

Nach wie vor steht eine einfache Problemumgehung zur Verfügung. Anstelle des intelligenten Vertrags, der eine externe API aufruft, verwenden wir einen vertrauenswürdigen Dienst, der den Status der Blockchain überwacht und als Reaktion darauf bestimmte Aktionen ausführt. Beispielsweise könnte eine Bank eine Blockchain proaktiv überwachen und Geldtransfers durchführen, die die Transaktionen in der Kette widerspiegeln. Dies stellt kein Risiko für den Konsens der Blockchain dar, da die Kette eine völlig passive Rolle spielt.

Wenn wir uns diese beiden Problemumgehungen ansehen, können wir einige Beobachtungen machen. Erstens benötigen beide eine vertrauenswürdige Entität, um die Interaktionen zwischen der Blockchain und der Außenwelt zu verwalten. Dies ist zwar technisch möglich, untergräbt jedoch das Ziel eines dezentralen Systems. Zweitens sind die in diesen Problemumgehungen verwendeten Mechanismen einfache Beispiele dafür Lesen und Schreiben einer Datenbank. Ein Orakel, das externe Informationen liefert, schreibt diese Informationen einfach in die Kette. Und ein Dienst, der den Zustand der Blockchain in der realen Welt widerspiegelt, macht nichts weiter als das Lesen aus dieser Kette. Mit anderen Worten, jede Interaktion zwischen einer Blockchain und der Außenwelt ist auf reguläre Datenbankoperationen beschränkt. Wir werden später mehr darüber sprechen.

Durchsetzung von Zahlungen in der Kette

Hier ist ein weiterer Vorschlag, den wir häufig hören: Verwendung eines intelligenten Vertrags zur Automatisierung der Zahlung von Gutscheinen für eine sogenannte „intelligente Anleihe“. Die Idee ist, dass der intelligente Vertragscode die Zahlungen automatisch zu den entsprechenden Zeiten initiiert, manuelle Prozesse vermeidet und garantiert, dass der Emittent nicht in Verzug geraten kann.

Damit dies funktioniert, müssen die für die Zahlungen verwendeten Mittel natürlich auch innerhalb der Blockchain leben, da sonst ein intelligenter Vertrag möglicherweise ihre Zahlung nicht garantieren kann. Denken Sie jetzt daran, dass eine Blockchain nur eine Datenbank ist, in diesem Fall ein Finanzbuch, das die ausgegebene Anleihe und etwas Bargeld enthält. Wenn wir also über Couponzahlungen sprechen, sprechen wir tatsächlich von Datenbankoperationen, die automatisch zu einem vereinbarten Zeitpunkt stattfinden.

Diese Automatisierung ist zwar technisch machbar, weist jedoch finanzielle Schwierigkeiten auf. Wenn die für Couponzahlungen verwendeten Mittel durch den Smart-Vertrag der Anleihe kontrolliert werden, können diese Zahlungen tatsächlich garantiert werden. Das bedeutet aber auch diese Mittel kann vom Anleiheemittenten nicht für andere Zwecke verwendet werden. Und wenn diese Mittel sind nicht dann unter der Kontrolle des Smart Contract Es gibt keine Möglichkeit, die Zahlung zu garantieren.

Mit anderen Worten, eine intelligente Anleihe ist entweder für den Emittenten oder für den Anleger sinnlos. Und wenn Sie darüber nachdenken, ist dies ein völlig offensichtliches Ergebnis. Aus Anlegersicht ist der springende Punkt einer Anleihe ihre attraktive Rendite auf Kosten eines gewissen Ausfallrisikos. Für den Emittenten besteht der Zweck einer Anleihe darin, Mittel für eine produktive, aber etwas riskante Aktivität wie den Bau einer neuen Fabrik zu beschaffen. Es gibt keine Möglichkeit für den Anleiheemittenten, die eingeworbenen Mittel zu nutzen und gleichzeitig die Rückzahlung des Anlegers zu gewährleisten. Es sollte nicht überraschen, dass Der Zusammenhang zwischen Risiko und Rendite ist kein Problem, das Blockchains lösen können.

Vertrauliche Daten verstecken

So wie ich zuvor geschriebenDie größte Herausforderung beim Einsatz von Blockchains ist die radikale Transparenz, die sie bieten. Wenn beispielsweise zehn Banken zusammen eine Blockchain einrichten und zwei eine bilaterale Transaktion durchführen, ist dies für die anderen acht sofort sichtbar. Es gibt zwar verschiedene Strategien zur Minderung dieses Problems, aber keine übertrifft die Einfachheit und Effizienz einer zentralisierten Datenbank, in der ein vertrauenswürdiger Administrator die volle Kontrolle darüber hat, wer was sehen kann.

Einige Leute denken, dass intelligente Verträge dieses Problem lösen können. Sie beginnen mit der Tatsache, dass jeder intelligente Vertrag eine eigene Miniaturdatenbank enthält, über die er die volle Kontrolle hat. Alle Lese- und Schreibvorgänge in dieser Datenbank werden durch den Code des Vertrags vermittelt, sodass ein Vertrag die Daten eines anderen Vertrags nicht direkt lesen kann. (Diese enge Kopplung zwischen Daten und Code wird als Kapselung bezeichnet und ist die Grundlage des Volkes Objekt orientierte Programmierung Paradigma.)

Wenn ein intelligenter Vertrag nicht auf die Daten eines anderen zugreifen kann, haben wir dann das Problem der Blockchain-Vertraulichkeit gelöst? Ist es sinnvoll, davon zu sprechen, Informationen in einem intelligenten Vertrag zu verstecken? Leider lautet die Antwort nein. Denn selbst wenn ein intelligenter Vertrag die Daten eines anderen nicht lesen kann, werden diese Daten dennoch auf jedem einzelnen Knoten in der Kette gespeichert. Für jeden Blockchain-Teilnehmer befindet es sich im Speicher oder auf der Festplatte eines System, das dieser Teilnehmer vollständig kontrolliert. Und nichts hindert sie daran, die Informationen aus ihrem eigenen System zu lesen, wenn und wann sie sich dazu entschließen.

Das Ausblenden von Daten in einem intelligenten Vertrag ist ungefähr so ​​sicher wie das Ausblenden im HTML-Code einer Webseite. Sicher, normale Webbenutzer sehen es nicht, weil es nicht in ihrem Browserfenster angezeigt wird. Ein Webbrowser muss jedoch nur eine Funktion zum Anzeigen der Quelle hinzufügen (wie alle), und die verborgenen Informationen werden allgemein sichtbar. In ähnlicher Weise muss für Daten, die in intelligenten Verträgen versteckt sind, lediglich jemand seine Blockchain-Software ändern, um den vollständigen Status des Vertrags anzuzeigen, und jeglicher Anschein von Geheimhaltung geht verloren. Ein halbwegs anständiger Programmierer könnte das in ungefähr einer Stunde tun.

Wofür intelligente Verträge sind

Bei so vielen Dingen, die intelligente Verträge nicht können, könnte man sich fragen, wofür sie eigentlich sind. Um diese Frage zu beantworten, müssen wir jedoch zu den Grundlagen der Blockchains selbst zurückkehren. Zusammenfassend lässt sich sagen, dass eine Blockchain die direkte und sichere Freigabe einer Datenbank durch Entitäten ermöglicht, die sich nicht vertrauen, ohne dass ein zentraler Administrator erforderlich ist. Blockchains ermöglichen die Disintermediation von Daten, was zu erheblichen Einsparungen bei Komplexität und Kosten führen kann.

Jede Datenbank wird über „Transaktionen“ geändert, die eine Reihe von Änderungen an dieser Datenbank enthalten, die insgesamt erfolgreich sein oder fehlschlagen müssen. In einem Finanzbuch wird beispielsweise eine Zahlung von Alice an Bob durch eine Transaktion dargestellt, die (a) prüft, ob Alice über ausreichende Mittel verfügt, (b) eine Menge von Alices Konto abzieht und (c) dieselbe Menge zu Bobs hinzufügt .

In einer regulären zentralisierten Datenbank werden diese Transaktionen von einer einzigen vertrauenswürdigen Stelle erstellt. Im Gegensatz dazu können in einer Blockchain-gesteuerten gemeinsam genutzten Datenbank Transaktionen von jedem Benutzer dieser Blockchain erstellt werden. Und da diese Benutzer sich nicht vollständig vertrauen, muss die Datenbank Regeln enthalten, die die durchgeführten Transaktionen einschränken. Beispielsweise muss in einem Peer-to-Peer-Finanzbuch bei jeder Transaktion die Gesamtmenge an Geldern erhalten bleiben, andernfalls können sich die Teilnehmer frei so viel Geld geben, wie sie möchten.

Man kann sich verschiedene Arten vorstellen, diese Regeln auszudrücken, aber im Moment gibt es zwei vorherrschende Paradigmen, die von Bitcoin bzw. Ethereum inspiriert sind. Die Bitcoin-Methode, die wir als "Transaktionsbeschränkungen" bezeichnen könnten, bewertet jede Transaktion im Hinblick auf: (a) die von dieser Transaktion gelöschten Datenbankeinträge und (b) die erstellten Einträge. In einem Finanzbuch besagt die Regel, dass die Gesamtmenge der Mittel in den gelöschten Einträgen mit der Summe der erstellten Einträge übereinstimmen muss. (Wir betrachten die Änderung eines vorhandenen Eintrags als gleichbedeutend mit dem Löschen dieses Eintrags und dem Erstellen eines neuen Eintrags an seiner Stelle.)

Das zweite Paradigma, das von Ethereum stammt, sind intelligente Verträge. Dies besagt, dass alle Änderungen an den Daten eines Vertrags durch seinen Code durchgeführt werden müssen. (Im Kontext traditioneller Datenbanken können wir uns dies als eine vorstellen erzwungen gespeicherte Prozedur.) Um die Daten eines Vertrags zu ändern, senden Blockchain-Benutzer Zugriffe zu seinem Code, der bestimmt, ob und wie diese Anforderungen zu erfüllen sind. Wie in Dieses BeispielDer intelligente Vertrag für ein Finanzbuch führt dieselben drei Aufgaben aus wie der Administrator einer zentralisierten Datenbank: Überprüfung auf ausreichende Mittel, Abzug von einem Konto und Hinzufügen zu einem anderen.

Beide Paradigmen sind effektiv und jedes hat seine Vor- und Nachteile, wie ich es getan habe zuvor ausführlich besprochen. Zusammenfassend lässt sich sagen, dass Transaktionsbeschränkungen im Bitcoin-Stil eine überlegene Parallelität und Leistung bieten, während intelligente Verträge im Ethereum-Stil eine größere Flexibilität bieten. Um auf die Frage zurückzukommen, wofür intelligente Verträge sind:

Intelligente Verträge sind für Blockchain-Anwendungsfälle vorgesehen, die nicht mit Transaktionsbeschränkungen implementiert werden können.

Angesichts dieses Kriteriums für die Verwendung intelligenter Verträge sehe ich noch keinen starken Anwendungsfall für berechtigte Blockchains, der sich qualifiziert. Alle mir bekannten überzeugenden Blockchain-Anwendungen können mit Transaktionen im Bitcoin-Stil implementiert werden, die Berechtigungen und die allgemeine Datenspeicherung sowie die Erstellung, Übertragung, Übertragung, den Austausch und die Zerstörung von Assets übernehmen. Trotzdem tauchen immer noch neue Anwendungsfälle auf, und ich wäre nicht überrascht, wenn einige do erfordern die Kraft intelligenter Verträge. Oder zumindest eine Erweiterung des Bitcoin-Paradigmas.

Was auch immer die Antwort sein mag, der Schlüssel zum Erinnern ist, dass intelligente Verträge einfach eine Methode sind, um die in einer Datenbank durchgeführten Transaktionen einzuschränken. Dies ist zweifellos eine nützliche Sache und wichtig, um diese Datenbank für die gemeinsame Nutzung sicher zu machen. Intelligente Verträge können jedoch nichts anderes tun, und sie können sich den Grenzen der Datenbank, in der sie sich befinden, mit Sicherheit nicht entziehen.

Bitte posten Sie Kommentare bei LinkedIn.

Zeitstempel:

Mehr von Multikette