Ethereum Oracle Contracts: Können wir dem Orakel vertrauen?
Veröffentlicht: 2022-03-11Dieser Artikel ist der letzte Teil einer dreiteiligen Serie über die Verwendung von Ethereum-Orakelverträgen.
- Teil eins war eine Einführung in die Einrichtung, Ausführung und Testbarkeit des Codes mit dem Truffle-Framework.
- Teil zwei hat sich ein wenig mit dem Code befasst und ihn als Ausgangspunkt für Diskussionen über einige der Code- und Designfunktionen von Solidity verwendet.
Nun, in diesem letzten Teil möchte ich die Fragen stellen: Was haben wir gerade getan und warum? Und versuchen Sie, einige hoffentlich zum Nachdenken anregende Denkanstöße zu geben. Die Jury ist sich immer noch sehr darüber im Klaren, wie die Verwendung von Orakeln mit Vertrauenslosigkeit zusammenhängt und was das Wort „Vertrauenslosigkeit“ im Zusammenhang mit Blockchain in der Praxis tatsächlich bedeutet. Wenn wir einige dieser Ideen von ihrer konzeptionellen Form in die praktische Anwendung bringen, werden wir gezwungen sein, mit Fragen wie dieser zu ringen und uns mit ihnen auseinanderzusetzen. Fangen wir also an.
Zusammenfassung: Warum brauchen wir ein Ethereum-Orakel?
Dies bringt die Natur der Ausführung von Code auf der Blockchain auf den Punkt. Um die Anforderungen der Unveränderlichkeit und des Determinismus zu erfüllen und als Artefakt der Art und Weise, wie der Code tatsächlich von Knoten in der Kette ausgeführt wird, kann ein Smart Contract außerhalb der Blockchain nichts direkt erreichen, um etwas zu tun.
Für die meisten Programmierer führt diese Tatsache zu einer sehr unnatürlichen Denkweise. Wenn wir Daten von irgendwoher brauchen, verbinden wir uns normalerweise einfach irgendwo damit und ziehen sie. Ein intelligenter Vertrag, der Wetterberichtsdaten benötigt? Stellen Sie einfach eine Verbindung zu einem Wetter-Feed her. Aber nein; ein Blockchain Smart Contract kann dies absolut nicht; Wenn sich einige Daten nicht bereits in der Blockchain befinden, hat der Vertragscode zum Zeitpunkt der Ausführung keinen Zugriff darauf. Die Lösung besteht also darin, die erforderlichen Daten zum Zeitpunkt der Vertragsabwicklung bereits in der Blockchain zu haben . Dies erfordert externe Maschinen, die Daten nicht in die Kette ziehen, sondern Daten in die Kette schieben, speziell zur Verwendung durch andere Verträge. Diese äußere Maschinerie ist das Orakel. Die Daten, die auf die Kette geschoben werden, werden in einen Oracle-Vertrag geschoben, der dann vermutlich Vorkehrungen getroffen hat, um sie mit anderen Verträgen zu teilen. Ein Beispiel für dieses Setup ist genau das, was wir in den vorherigen zwei Teilen dieser Artikel-Trilogie gebaut und untersucht haben.
Offensichtliche Sicherheitslücken
Für mich ist das zentrale Thema bei allen öffentlichen Blockchains das T-Wort: Vertrauen. In seiner reinsten Form ist das, was diese Systeme tun, ihr Bestes, um zu garantieren (keine perfekte Garantie ist in dieser Welt möglich, aber so nah wie möglich), dass wir keinen Parteien blind vertrauen müssen. Der aufmerksame Leser hat vielleicht bereits einige der eklatanten Sicherheitslücken im Beispiel der Boxwetten in Frage gestellt . Ich möchte mich auf diejenigen konzentrieren, die für unsere Diskussion über Vertrauenslosigkeit und ihre Beziehung zur Verwendung von Orakeln mit intelligenten Verträgen am wichtigsten sind.
1. Der Eigentümer/Verwalter des Wettvertrags kann korrupt sein
Ab Zeile 58 von BoxingBets.sol haben wir die folgende Funktion:
/// @notice sets the address of the boxing oracle contract to use /// @dev setting a wrong address may result in false return value, or error /// @param _oracleAddress the address of the boxing oracle /// @return true if connection to the new oracle address was successful function setOracleAddress(address _oracleAddress) external onlyOwner returns (bool) { boxingOracleAddr = _oracleAddress; boxingOracle = OracleInterface(boxingOracleAddr); return boxingOracle.testConnection(); }
Es sollte ziemlich klar sein, was dies ermöglicht. Der Vertragsinhaber (und nur der Vertragsinhaber) kann jederzeit und ohne Einschränkungen das Orakel ändern, das verwendet wird, um Boxkämpfe auszuliefern und die Gewinner zu ermitteln. Warum ist das ein Problem? Falls es Ihnen nicht ohnehin ersichtlich ist, ermöglicht dies dem Vertragsinhaber, den Vertrag bewusst zu seinem eigenen Vorteil zu missbrauchen.
Beispiel: Der nächste anstehende Boxkampf ist Soda Popinski vs. Glass Joe. Soda ist mit großem Abstand der klare Favorit. Jeder setzt auf Soda. Darauf ruht tonnenweise Geld. Ich, der Vertragsinhaber, beschließe, einen schnellen zu ziehen. Kurz bevor das Spiel entschieden ist, ändere ich das Orakel in mein eigenes bösartiges, das mit dem offiziellen Orakel identisch ist, außer dass es fest codiert ist, Glass Joe zum Gewinner zu erklären. Es erklärt Glass Joe, ich verdiene das ganze Geld, und niemand kann mich aufhalten. Danach wird vielleicht niemand mehr meinem Vertrag vertrauen, aber angenommen, es ist mir egal; vielleicht habe ich den Vertrag nur zu dem Zweck geschrieben und veröffentlicht, diesen Überfall durchzuziehen.
Welche Alternativen gibt es?
1. Lassen Sie nicht zu, dass das Orakel geändert wird
Das Problem, das wir oben identifiziert haben, ergibt sich aus der Tatsache, dass wir zulassen, dass das Orakel vom Vertragsinhaber geändert wird. Angenommen, wir codieren die Orakeladresse einfach fest und lassen nicht zu, dass sie überhaupt geändert wird? Nun, das können wir tatsächlich tun, es ist nicht ausgeschlossen. Aber dann stellt sich die Frage, was ist, wenn dieses Orakel aufhört – aus welchen Gründen auch immer keine Daten mehr liefert? Dann brauchen wir ein neues Orakel. Oder was, wenn sich herausstellt, dass dieses Orakel, dem man zunächst vertraute, korrupt ist und man ihm nicht mehr vertraut? Auch hier werden wir zu einem neuen Orakel wechseln wollen. Wenn wir das Orakel hartcodiert haben, besteht die einzige Möglichkeit, das Orakel zu ändern, darin, einen neuen Vertrag freizugeben, der ein anderes Orakel verwendet. Ok, noch einmal, wir können das tun. Es ist nicht ausgeschlossen. Beachten Sie natürlich, dass Smart Contracts nicht so einfach aktualisiert werden können wie beispielsweise eine Website. Wäre das nicht einfach? Wenn Sie einen Fehler oder eine Sicherheitslücke bemerken, patchen Sie sie einfach und niemand wird klüger. Das Smart-Contract-Bereitstellungsmodell ist dem schrumpfverpackten Softwaremodell etwas näher; Sobald sich die Software in den Händen des Benutzers befindet, ist sie da und Sie können sie nicht mehr reparieren. Sie müssen den Benutzer auffordern, sich selbst manuell zu aktualisieren. Smart Contracts sind ein bisschen ähnlich. Sobald sich dieser Vertrag in der Blockchain befindet, ist er wie der Rest der Blockchain unveränderlich, außer in Teilen, in denen Sie Logik geschrieben haben, um ihn veränderlich zu machen.
Dies ist jedoch nicht unbedingt ein Blocker; Es gibt viele Modelle und Denkschulen, wie man einen Smart Contract modifizierbar machen kann. Dieses Thema würde an und für sich einen anständigen Artikel abgeben, aber jetzt können Sie sich diesen Hackernoon-Artikel sowie diesen Artikel über Smart-Contract-Strategien ansehen.
Wie würde das aus Nutzersicht aussehen? Nehmen wir an, ich erwäge, eine Wette auf das bevorstehende Don Flamenco-Spiel zu platzieren. Ich kann deutlich sehen, dass der Vertrag ein Orakel, das ich bereits kenne und dem ich vertraue, unkompliziert hartcodiert (na ja, genug Vertrauen, um eine Wette einer bestimmten Größe zu platzieren). So, das wars. Ziemlich einfach. Wenn der Vertragsinhaber eine neue Version des Vertrags mit einem neuen Orakel veröffentlicht, habe (sollte) ich immer noch die Freiheit, die alte weiter zu verwenden. Vielleicht. Es hängt davon ab, wie das Upgrade gehandhabt wurde. Wenn der Vertrag deaktiviert oder zerstört wurde, könnte ich Pech haben. Aber im Vanilla-Fall sollte es noch stehen.
2. Sperren Sie das Orakel für die Dauer ein
Wir können dem Code einige Komplikationen hinzufügen (nicht wirklich wünschenswert für ein zu komplexes Beispiel, aber für eine reale Lösung möchten wir vielleicht den Vorteil, den diese Komplexität mit sich bringt), um Spielereien wie die oben beschriebene abzumildern. Ich denke, es wäre sehr vernünftig, Code hinzuzufügen, der das Orakel für die Dauer der Wette „einschließt“. Anders ausgedrückt, die Vertragslogik könnte auf sehr klare und einfache Weise garantieren, dass jedes Orakel, das anwesend war, als ich die Wette abschloss, dasselbe Orakel sein muss, das zur Bestimmung des Gewinners verwendet wird. Also auch wenn sich das Orakel zwischenzeitlich ändert, für andere Matches, für mein Match und für meine Wette muss es immer gleich bleiben. Dies geht Hand in Hand damit, dass der Benutzer wissen kann, wer das Orakel ist.
Lassen Sie uns ein kurzes Beispiel haben, um dies zu veranschaulichen. Ich bin ein Benutzer. Ich erwäge, eine Wette auf den bevorstehenden Little-Mac-Kampf abzugeben. Es gibt eine Einrichtung im Vertrag, die es mir erlaubt, das Orakel zu inspizieren, das verwendet wird, um den Gewinner für dieses Match zu ermitteln. Ich bestätige, dass es sich um einen bekannten Vertrag von Nintendo Sports handelt. Ich fühle mich sicher genug in diesem Orakel. (Um die Komplexität etwas zu erhöhen, erlaubt der Vertrag den Benutzern möglicherweise, aus einer Reihe verfügbarer Orakel für eine bestimmte Übereinstimmung auszuwählen). Jetzt kann ich den Code des Orakels untersuchen und sehen, dass die Logik des Orakels garantiert, dass dasselbe Orakel verwendet wird, um das Ergebnis des Spiels zu bestimmen. Also habe ich als Wetter zumindest diese Gewissheit. Es schließt nicht aus, dass mein Orakel schlecht sein könnte (dh korrupt oder nicht vertrauenswürdig), aber es versichert mir zumindest, dass es nicht im Hintergrund geändert werden kann.
Ein Risiko besteht hier darin, dass das Orakel zwischen dem Zeitpunkt, an dem ich die Wette platziere, und der Entscheidung des Spiels „aus dem Geschäft“ geht (nicht mehr gewartet oder aktualisiert wird). Geld könnte in den Vertrag eingeschlossen und unwiederbringlich werden. Dafür könnten wir (vielleicht) eine zeitaktivierte Klausel in den Vertrag aufnehmen, wonach ein Spiel, wenn es bis zu einem bestimmten Zeitpunkt oder Datum unentschieden ist (könnte Teil der Spieldefinition sein), als „tot“ gilt und das gesamte Geld darin eingeschlossen ist wird an die Wettenden zurückgegeben.
3. Lassen Sie das Orakel benutzerdefiniert sein
Noch komplizierter (aber möglicherweise interessanter) wäre es, die Orakeladresse in gewissem Sinne „leer“ zu lassen, damit Benutzer ihre eigenen Orakel angeben und ihre eigenen Wettpools (durch den Vertrag) um diese Orakel herum bilden können. Gruppen von Benutzern, die dasselbe Orakel verwenden, könnten nach der Vertragslogik gemeinsam wetten. Das legt die Pflicht auf den Benutzer, ein Orakel auszuwählen, dem er vertraut, und dieses Orakel mit anderen gleichgesinnten Benutzern zu teilen. Es fragmentiert tatsächlich die Wettgemeinschaft, so dass es nur funktionieren würde, wenn es eine große Benutzerbasis gäbe; Andernfalls wären zu wenige Wetter beteiligt, um das Wetten wirklich interessant und profitabel zu machen. Wenn ich die einzige Person bin, die mit meinem Lieblingsorakel wettet, gibt es da nicht viel Anreiz! Aber auf der anderen Seite übernimmt es die Verantwortung, ein vertrauenswürdiges Orakel vom Vertragsinhaber zu wählen, und er kann sich dessen die Hände reinwaschen. Wenn einige Benutzer ein Orakel nicht vertrauenswürdig finden, werden sie es einfach nicht mehr verwenden und zu einem anderen wechseln, und niemand wird wütend auf den Vertragsinhaber. Er hat lediglich die Wettarena zur Verfügung gestellt und seinen Dienst ehrenhaft verrichtet.
Erschwerend kommt bei dieser Strategie die Tatsache hinzu, dass wir irgendwie eine organische Charge von Orakeln in freier Wildbahn „wachsen“ lassen müssten, und zwar solche, die genau zu dieser Lösung passen. Wir müssten die genaue Schnittstelle, an der sich potenzielle Orakel halten müssen, in die Welt senden und hoffen, dass eine anständige Anzahl von ihnen auftauchen würde, um dem Benutzer tatsächlich eine Auswahl zu geben. Vielleicht könnten wir den Stapel mit ein oder zwei eigenen säen. Wenn es nicht dauert, dann haben wir keine Wett-DApp. Aber wenn doch, muss ich zugeben, dass die Idee von nutzerausgewählten, organisch gezüchteten Orakeln in freier Wildbahn eine interessante und attraktive Lösung ist.
2. Der Eigentümer/Verwalter des Orakels könnte korrupt sein
Korrupt im Sinne von nicht vertrauenswürdig; dass der Eigentümer/Verwalter/Verwalter des Orakels wahrscheinlich ein falsches Ergebnis für ein Match verkündet, um sich zu bereichern.
Beispiel: Ich bin der Eigentümer/Verwalter des eigentlichen Orakels, das Boxdaten in die Blockchain einspeist, damit der Wettvertrag verwendet werden kann. Mein Orakel ist nicht direkt an der Platzierung oder Verwaltung von Wetten beteiligt. Seine Aufgabe ist es, einfach Daten bereitzustellen, die der Wettvertrag (und möglicherweise eine beliebige Anzahl anderer Verträge) verwenden kann. Ich kann jedoch persönlich eine Wette mit dem Wettvertrag platzieren, der wiederum mein Orakel verwendet; Ich bin ohnehin anonym, habe also keine Angst vor Vergeltung. Sobald ich auf einen solchen Kontrakt gewettet habe, besteht ein klarer Interessenkonflikt. Insbesondere die Ehrlichkeit, mit der ich mein Orakel mit wahren und genauen Informationen aktualisiere, kann im Widerspruch zu meinen Wettaktionen stehen.
Nehmen wir also an, dass ich im bevorstehenden Sandman/von Kaiser-Match, in dem von Kaiser der absolute Außenseiter ist, eine massive Wette auf von Kaiser platziere. Als von Kaiser wie erwartet verliert, benutze ich mein Orakel, um ihn stattdessen fälschlicherweise zum Gewinner zu erklären! Der Wettvertrag wird so ausgeführt, wie er sollte (an diesem Punkt gibt es keine Möglichkeit, ihn zu stoppen), ich mache einen Kill mit dem Spiel, es gibt keine Rückgriffsmöglichkeit und keine Möglichkeit, mich zu bestrafen, und das Leben geht weiter. Vielleicht weigern sich die Leute danach, mein Orakel mehr zu benutzen; vielleicht ist es mir egal.
Wie können wir das verhindern?
Jetzt sind wir bei einer viel größeren Frage und einer, die den Kern der sogenannten Vertrauenslosigkeit in Bezug auf Orakel trifft. Dem Orakel wird vertraut, dass es sich um einen neutralen Dritten oder sogar um einen vertrauenswürdigen Dritten handelt. Das Problem ist, dass das Orakel von Menschen betrieben wird. Ein weiteres Problem besteht darin, dass das Orakel eine große Kontrolle darüber ausübt, wie der Client-Vertrag seine Pflichten erfüllt, da es die Daten bereitstellt, auf denen der Vertrag beruht. Wie können wir jemals wissen, dass wir einem bestimmten Orakel vertrauen können?
Warum sollten wir einem Orakel vertrauen?
Wenn die ganze Idee von Blockchain Smart Contracts darin besteht, die Notwendigkeit zu beseitigen, irgendjemandem zu vertrauen, widerspricht dann nicht die Tatsache, dass wir einem Orakel „vertrauen“ müssen, der Vertrauenslosigkeit? Nun, ich würde sagen: Es ist Zeit, erwachsen zu werden, Sohn (oder Tochter)! Reine Vertrauenslosigkeit gibt es nicht, und Blockchain bietet keine vertrauenswürdige Umgebung. Blockchain ist eine Schicht, die menschliche Interaktionen erleichtert. Menschliche Interaktionen sind immer noch das Kern- oder Endergebnis, und menschliche Interaktionen können nicht vertrauenswürdig sein.
Link: Das Orakel-Problem
Die Evolution des Vertrauens
Wie konnte ich zu Anbeginn der Zeit einem anderen Menschen vertrauen? Angenommen, ich jage Mammut und dieser Typ sagt, dass er mir helfen wird, das Mammut zu jagen, im Austausch für die Hälfte des Fleisches? Wie kann er darauf vertrauen, dass ich die Hälfte liefere? Wie kann ich darauf vertrauen, dass mich das nicht am Kopf trifft und das ganze Mammut erbeutet, wenn die Jagd vorbei ist?

Damals war die Androhung von Gewalt wahrscheinlich der Kern vieler Arten von sozioökonomischem Vertrauen. Wenn ich versuche, den Anteil dieses Typen zu stehlen, bin ich mir sicher, dass er versuchen wird, mich anzugreifen, und das bringt ein Risiko für mich mit sich. Selbst wenn ich zuversichtlich bin, dass ich in einem Kampf mit ihm gewinnen würde, weiß ich (als Höhlenmensch) genug über das Kämpfen, um zu wissen, dass alles passieren kann, und ich könnte mir leicht eine lebensbedrohliche Verletzung zuziehen, selbst wenn ich technisch gewinne. Es ist immer ein Risiko und eine Investition von Energie. In dieser Welt könnte das ausreichen, um die Menschen ehrlich zu halten.
Im Allgemeinen werde ich nicht schummeln, weil es nicht in meinem besten Interesse ist, insgesamt und im Durchschnitt, dies zu tun. Mit anderen Worten, das erwartete Ergebnis des Betrugs ist geringer als das erwartete Ergebnis der Zusammenarbeit.
Ist dies nicht der Fall oder nehmen die Akteure wahr, dass dies nicht der Fall ist, werden möglicherweise einer oder mehrere einfach nicht teilnehmen. Wenn ich zum Beispiel sehe, dass der andere Typ ein 9 Fuß großer Riese mit Hörnern und Monsterzähnen ist, entscheide ich mich vielleicht einfach dafür, wegzulaufen und keinen Deal zu machen; Der Typ sieht zu gefährlich für mich aus, er könnte einfach ungestraft stehlen, was ihm gefällt. Wenn wir ungefähr gleich gut zusammenpassen, dann nehmen wir wahr, dass wir uns in einer Situation befinden, in der es im besten Interesse keiner der Parteien ist, zu betrügen, es in unserem beiderseitigen Interesse liegt, zusammenzuarbeiten, und daher, vorausgesetzt, dass beide Parteien vernünftig und vernünftig sind, beide Parteien werden kooperieren.
Mit der Entwicklung der Kultur entwickelten sich auch die menschlichen Interaktionen. Sie wurden weniger gewalttätig, obwohl die implizite Androhung von Gewalt nicht verschwand. Kulturelle Sitten gaben den Menschen einen größeren Anreiz zur Zusammenarbeit und verschiedene Arten von Fehlanreizen zum Betrügen.
Schneller Vorlauf zu einer Zeit der frühen Zivilisation; Ich mache ein Schnäppchen, um 100 Scheffel Weizen zu kaufen. Es ist eine Art primitiver Terminkontrakt; Ich bezahle heute für Getreide, das ich nächsten Monat bei der Ernte erhalte. Ich gebe dem Typen meine Kupfermünze, wir schütteln uns die Hände, teilen ein Glas Gerstenbier und trennen uns bis nächsten Monat zur Vertragsabwicklung. Scheint in Ordnung.
Ich habe mich diesem Typen ausgeliefert; er hat den vollen Betrag meines Geldes, und ich habe noch nichts. Was macht mich also zuversichtlich, dass er den Vertrag einhalten wird? Ein paar Dinge. Er ist ein Geschäftsmann; Er macht regelmäßig Geschäfte mit der lokalen Bevölkerung. Er hat Geschäfte mit Leuten gemacht, die ich kenne, und er hat immer fair und pünktlich geliefert. Er hat einen Ruf für Ehrlichkeit. Außerdem weiß ich, dass er einen abschreckenden Anreiz zum Schummeln hat. Er verdient seinen Lebensunterhalt hauptsächlich damit, dass er als ehrlicher Trader bekannt ist. Wenn er mich betrügen würde, würde ich es alle wissen lassen, und das würde seinem guten Ruf und damit seinem Geschäft schaden. Der Geldbetrag, den er dadurch verdient, dass er mich betrügt, wäre gering im Vergleich zu dem zukünftigen Betrag, den er nicht verdienen könnte, wenn sein Kundenstamm ihn verlassen würde. Ich weiß also, dass es nicht unbedingt in seinem besten Interesse ist, mich zu betrügen.
Das ist toll; die Androhung von Zwang oder Gewalt fehlt in dem obigen Bild. Bis auf zwei Dinge:
- Die Androhung von Gewalt fehlt nicht vollständig. Ein weiterer Hemmschuh für Fremdgehen könnte der Gedanke daran sein, was ein betrogener Typ tun wird. Ich habe Waffen und Freunde, die mir treu ergeben sind. Ich als zorniger Betrogener könnte zu Gewalt greifen. So fangen Clankriege an!
- Es kann auch eine Art Governance-System geben, das die Einzelheiten des Falls bewertet und den Händler möglicherweise mit einer Geldstrafe belegt oder ihn ins Gefängnis steckt. Ihre standardmäßige staatlich unterstützte Abschreckung wird immer durch die Androhung von Gewalt unterstützt, denn die zugrunde liegende Strafe für die Weigerung, die Geldstrafe zu zahlen, die Weigerung, ins Gefängnis zu gehen, die Weigerung, alle Maßnahmen einzuhalten, ist letztendlich Gewalt. Und das zieht sich durch bis in die Gegenwart. Wenn ich mich weigere, eine Geldstrafe zu zahlen, kann ich verhaftet werden. Wenn ich mich weigere, verhaftet zu werden, wird Gewalt gegen mich angewandt, und ich kann gegen meinen Willen ins Gefängnis gesteckt oder sogar getötet werden (wenn mein Widerstand hartnäckig genug ist). Da sehen wir die Androhung von Gewalt nur zwei Schritte entfernt, selbst für einen geringfügigen Verstoß!
Dezentralisiertes Vertrauen heute
Schneller Vorlauf in die Gegenwart. Was sind die abschreckenden Anreize für einen Vertragsbruch? Unterscheiden sie sich stark vom vorherigen Szenario?
Unternehmen X hat einen Mail-In-Rabatt für den Kauf dieses Produkts. Warum vertrauen Sie darauf, dass sie dies erreichen? Wie im vorherigen Beispiel; Das Unternehmen hat wenig zu gewinnen, wenn es um einen kleinen Betrag betrügt, und viel zu verlieren, wenn es seinen Ruf schädigt. Dies ist die Grundlage vieler Vertrauensszenarien und das schon seit langem. Und wieder wird, wie im Beispiel des Getreidehändlers, mit Gewalt gedroht, doch soweit wird es in diesem Fall nicht kommen. Das Unternehmen kann mit einer Geldstrafe belegt oder mit einer Sammelklage bestraft werden, und das Unternehmen muss die Geldbuße zahlen oder mit schlimmeren Strafen rechnen. Diese Bestrafungen werden von einer Regierung unterstützt, die ihrerseits durch die Androhung wirtschaftlicher und militärischer Gewalt unterstützt wird, obwohl wir möglicherweise in Betracht ziehen könnten, dass die Androhung wirtschaftlicher Gewalt wiederum durch militärische Gewalt, dh Gewalt, unterstützt wird.
Traditionelle Systeme
Das Modell von Verträgen, die durch staatlich sanktionierte Anwendung von Gewalt unterstützt werden, hat der Menschheit seit Tausenden von Jahren gute Dienste geleistet? Oder hat es? Nun, das hat es, aber es ist eine natürliche Entwicklung. In Ermangelung einer Regierung bilden Gruppen von Menschen Regierungen. Es scheint fast so, als könne man Menschen nicht davon abhalten, Regierungen zu bilden; sie werden sich bilden.
Was ist also mit Blockchain Smart Contracts? Wie gewährleisten Blockchain und das Smart-Contract-Modell Vertrauenswürdigkeit oder verhindern Betrug? Sagen Sie nicht einfach „Vertrauenslosigkeit“, das ist keine Antwort! In unseren vorherigen Beispielen wird Schummeln in gewisser Weise abgeschreckt.
Schauen wir uns genauer an, wie die Blockchain diese Funktion erfüllt (oder ersetzt).
Blockchain-Systeme: Bitcoin
Um diese große Frage in kleinere Fragen zu unterteilen, fangen wir mit Bitcoin an. Wie verhindert Bitcoin Betrug? Es steht mir frei, jede beliebige Bitcoin-Knotensoftware auszuführen, solange sie den Protokollen des Bitcoin-Netzwerks zu entsprechen scheint. Niemand entmutigt mich, meinen eigenen hausgemachten Bitcoin-Knoten zu betreiben, der tut, was er will, während er sich an die Netzwerkprotokolle hält; Gibt es eine Möglichkeit, wie ich das für illegale Gewinne verwenden kann?
Sicher, ich kann jede Art von Transaktionen zur Genehmigung in das Bitcoin-Netzwerk freigeben. Ich kann eine Transaktion freigeben, die all Ihre Bitcoins an mich sendet, sie in das Netzwerk freigeben, darauf warten, dass sie zu einem Block hinzugefügt werden, und wow, jetzt gehören alle Ihre Bitcoins mir ? Nein, wegen der Verschlüsselung.
Ich habe Ihren privaten Schlüssel nicht und eine solche Transaktion muss mit Ihrem privaten Schlüssel signiert werden. Also bin ich dort durch Kryptografie blockiert. Oder bin ich? Wer sagt, dass eine solche Transaktion unterzeichnet werden muss? Was passiert, wenn ich es versuche? Nun, was natürlich passieren wird, ist, dass das gesamte Bitcoin-Netzwerk meine Transaktion ablehnen wird. Warum sollte es jemand akzeptieren? Abgesehen von der Tatsache, dass sie alle Standardknoten ausführen, die sie sofort ablehnen, warum sollten sie mir beim Schummeln helfen? Dies wird sicherlich die Integrität des Bitcoin-Netzwerks untergraben und damit ihren eigenen Krypto-Reichtum untergraben. Es macht also keinen Sinn, dass sie mir, einem anonymen Fremden, helfen, einen anderen anonymen Fremden zu betrügen. Selbst wenn ein irrationaler Akteur irgendwie meine ungültige Transaktion akzeptiert, wird die überwiegende Mehrheit des Bitcoin-Netzwerks sie ablehnen, und sie hat keine Chance. Es wird erneut geschlagen, diesmal von schieren Zahlen.
Was aber, wenn ich ein mächtiger Bergbaubetrieb bin? Sicherlich habe ich jetzt mehr Macht, Dinge zu meinem Vorteil zu manipulieren. Das tue ich, aber es gibt mir immer noch nicht annähernd absolute Macht. Selbst als mächtiger Miner kann ich nicht viel tun, wenn ich weniger als 50 % des Netzwerks kontrolliere. Ich habe eine gewisse Macht, die Reihenfolge zu wählen, in der Transaktionen zu Blöcken hinzugefügt werden, aber das ist kaum die Macht, Coins zu prägen oder zu stehlen. Selbst wenn ich mehr als 50 % des Netzwerks kontrolliere (unter der Annahme, dass dem Leser die bekannte 51-%-Attacke in Bezug auf Proof-of-Work wie bei Bitcoin bekannt ist), wäre meine Hauptmacht das doppelte Ausgeben. Obwohl es eine ziemlich coole Macht ist, ist es sehr fraglich, ob es in meinem besten Interesse wäre, dies zu tun, da es die Integrität von Bitcoin untergraben würde. Es scheint wahrscheinlich, dass ich besser dran wäre, meine Kontrolle zu nutzen, um alle Münzen abzubauen, so mehr Geld zu verdienen und den Boden zu wahren, auf dem dieser Reichtum steht. Daher werde ich nicht geschlagen, aber mein Impuls zu betrügen wird durch eine Abschreckung behindert, die organisch in das Protokoll eingebaut ist. Und diese Abschreckung wird im Wesentlichen durch die Stärke der Zahlen gestützt; der überwältigende Konsens der Teilnehmer im Bitcoin-Netzwerk.
Blockchain Smart Contracts und Oracle Contracts
Was sind intelligente Verträge? Angenommen, ich habe einen irreführenden Vertrag eingesetzt, um Leute dazu zu bringen, mir ihr Geld zu schicken? Oder angenommen, ich hätte einen Wettvertrag eingesetzt und einen der zuvor beschriebenen Angriffe (wenn man sie so nennen kann) eingesetzt? Ich kann das tun, es könnte einige Leute täuschen; Ich als unehrlicher Schauspieler könnte aus einem solchen Unterfangen einen kleinen Gewinn ziehen. Die Verteidigung dagegen wäre, dass jeder Teilnehmer den Vertrag, an dem er beteiligt ist, und die möglichen Möglichkeiten, wie er missbraucht werden kann, sorgfältig abwägt (wie man es bei jedem Vertrag tun sollte). Sie sollten auch die Quelle berücksichtigen – was sie, wenn überhaupt, über die Partei wissen, die den Vertrag und alle damit verbundenen Orakel oder damit verbundenen Verträge veröffentlicht und pflegt. Man würde hoffen, dass ein unehrlicher Vertrag nicht lange andauern würde, bevor das Netzwerk ihn informell als unehrlich kennzeichnet, was die Teilnehmer dazu veranlasst, ihn freiwillig zu vermeiden und ihn abzubrechen. Das Netzwerk ist groß und es spricht sich schnell herum.
Nur dass man irgendwann einem Menschen vertrauen muss. Die Daten zum Wettvertrag werden von einem Orakel bereitgestellt. Das Orakel wird von einem Menschen gepflegt. Egal, wie viele Ebenen Sie hinzufügen, um das Netzwerk ehrlich zu halten, es kommt immer noch irgendwann auf einen Menschen zurück. Welchem Orakeltyp würden Sie also angesichts unseres Wettbeispiels vertrauen? Ich würde einem Orakel vertrauen, das durch Betrug mehr zu verlieren als zu gewinnen hätte. Beispiel: Stellen Sie sich vor, ESPN oder ein ähnliches Netzwerk wären die Sponsoren des Orakels. Sie würden mehr als alle anderen erwarten, dass sie ehrliche Daten liefern, da der unerlaubte Gewinn eines kleinen Betrags bei einer Boxwette vom daraus resultierenden Reputationsverlust überschattet würde. In diesem Fall ist Ihr Vertrauen aus dem gleichen Grund angebracht, aus dem wir dem ehrlichen Getreidehändler vertrauen. Diese Art von Treuhandvereinbarungen ist uralt und gut etabliert.
Was haben wir also durch den Einsatz von Smart Contracts gewonnen? Wie unterscheiden sich Smart Contracts von Governance oder früheren Methoden zur Aufrechterhaltung von Verträgen?
Einpacken
Nur um einen Punkt hervorzuheben, um zum Nachdenken und zur Diskussion anzuregen und um meinen Artikel abzuschließen, werde ich anstelle harter Schlussfolgerungen ein paar einfache Beobachtungen präsentieren. Denn bei einem Thema dieser Komplexität fühlt sich eine prägnante Schlussfolgerung wie eine Art bloße Geschichte und eine übermäßige Vereinfachung an. Die Beobachtungen, die ich vorbringen werde (und bitte zögern Sie nicht, sie zu diskutieren/zu widerlegen/zu widerlegen), sind folgende:
- Vertrauen, das auf der Annahme beruht, dass der andere von einer Zusammenarbeit mehr zu profitieren hat als von einem Betrug, ist uralt, funktioniert in praktischen Situationen und ist nicht verschwunden. Es ist in bestimmten Fällen in der Blockchain-Welt immer noch inhärent, obwohl es in vielen Fällen vielleicht eliminiert wurde. Im Fall unseres Orakelbeispiels lebt es immer noch und es geht ihm gut.
- Vertrauen, das auf der Androhung von Gewalt oder Gewalt basiert, ist seit jeher in der menschlichen Gesellschaft verankert, fehlt jedoch bemerkenswerterweise in unserem intelligenten Vertragsmodell und wurde durch Durchsetzung durch clevere Kombinationen aus Verschlüsselung und Konsens in großen Zahlen ersetzt.
Ich fordere andere Ethereum-Entwickler auf, zwei Dinge zu tun:
- Denken Sie an irgendeinen Weg in den Systemen öffentlicher Blockchains (wie Bitcoin oder Ethereum), in denen alles entweder durch die implizite oder explizite Androhung von Gewalt erzwungen wird.
- Denken Sie an irgendein wichtiges Regelsystem im modernen Vertrags- oder Finanzrecht, das nicht in irgendeiner Weise durch die explizite oder implizite Androhung von Gewalt durchgesetzt wird.
Etwas Altes, etwas Neues
Und ich denke, hier sind wir beim Hauptunterschied angelangt, und in der Tat beim wahren Grund, warum wir sagen, dass Blockchain-Systeme im Vergleich zu den Systemen der Vergangenheit „revolutionär“ sind. In meinen Augen ist es überhaupt keine Vertrauenslosigkeit, sondern eine stabilere Plattform für Vertrauen und vor allem eine, die überhaupt nicht auf die Androhung von Gewalt oder Gewalt angewiesen ist.
Auf der einen Seite haben wir die alte und bewährte Versicherung des gegenseitigen Nutzens in Situationen, in denen der Anreiz zum Schummeln fehlt. Das ist nichts Neues. Neu ist die Einführung des verschlüsselungsgestützten Konsenses, der dazu beiträgt, Betrug zu verhindern und das System ehrlich zu halten. Und die Synthese dieser beiden Elemente hat etwas wirklich Bemerkenswertes hervorgebracht, das zum ersten Mal in der Menschheitsgeschichte möglich ist: ein System, das für große, anonyme Gruppen nutzbar ist, in dem nirgends die explizite oder implizite Androhung von Gewalt als Abschreckung oder Bestrafung zu finden ist . Und das ist, glaube ich, das wirklich Erstaunliche. Wenn dieser Aspekt übersehen wird, haben wir eine raffinierte neue Technologie (die, wie ich zugebe, schon cool genug ist). Aber wenn man diesen Aspekt betrachtet, ist es offensichtlich, dass wir in eine neue Ära der Regierungsführung eingetreten sind.