Warum können Verträge keine API-Aufrufe tätigen?

Das Modell, dass Verträge nur Daten annehmen und verarbeiten können, anstatt auch Daten aus dem Internet abrufen zu können, erscheint einschränkend (wenn auch nicht, aber weniger direkt). Wenn Sie befürchten, dass Daten oder das Internet unzuverlässig sind, könnte nicht ein Vertrag programmiert werden, um solche Fälle zu handhaben?

Gibt es grundlegende technische Einschränkungen, die dazu geführt haben, dass Ethereum-Verträge nicht direkt „auf das Internet zugreifen“ können?

Antworten (3)

Die Ethereum-Blockchain wurde so konzipiert, dass sie vollständig deterministisch ist. Das heißt, wenn ich den gesamten Verlauf des Netzwerks nehme und ihn dann auf meinem Computer abspiele, sollte ich immer mit dem richtigen Zustand enden.

Da das Internet nicht deterministisch ist und sich im Laufe der Zeit ändert, erhielt ich jedes Mal, wenn ich alle Transaktionen im Netzwerk wiederholte, eine andere Antwort.

Determinismus ist wichtig, damit sich die Knoten einigen können. Wenn es einen Vertrag gäbe, der die Anzahl der Upvotes zu dieser Frage erfordert, könnte der Wert von Zeit zu Zeit oder sogar von Ort zu Ort unterschiedlich sein, wodurch Knoten in der Zukunft oder ohne Zugriff auf diese Website zu unterschiedlichen Schlussfolgerungen über den Zustand des Netzwerks gelangen , wodurch der Konsens gebrochen wird.

Indem wir verlangen, dass jede Dateneingabe durch eine externe Transaktion initiiert wird, können wir sicher sein, dass die Blockchain selbst alle erforderlichen Informationen enthält, um sich selbst zu verifizieren. Dieser Prozess des Sammelns von Off-Chain-Daten und des anschließenden Einfügens in die Blockchain wird als Arbeit mit einem Orakel bezeichnet .

Es gibt mehrere Oracle-Dienste, die es einem Smart Contract ermöglichen, so auszusehen, als würde er einen API-Aufruf tätigen, aber das Orakel führt die API-Aufrufe tatsächlich off-chain durch und veröffentlicht das Ergebnis on-chain, damit Smart Contracts verwendet werden können. Einige davon sind Chainlink , Provable , BandChain und Tellor .

Wie @linagee unten betont hat, ist dies bereits mit Oraclize möglich - es liefert einen TLSNotary- Beweis, um zu zeigen, dass es die von einem bestimmten Server kommenden Daten nicht verändert hat, Beweise können unabhängig mit dem bereitgestellten clientseitigen Netzwerkmonitor ( und Proofs Verifications kommen bald auch onchain!)
Danke, das wollte ich eigentlich verlinken, habe es aber vergessen

Sie können tatsächlich Daten aus dem Internet übernehmen . Sie brauchen nur jemanden, der es Ihrem Vertrag übergibt. Wie kannst du dieser Person vertrauen? Verwenden Sie so etwas wie Provable. https://provable.xyz Dies ist eine Idee, die TLS Notary verwendet, um sicherzustellen, dass die Antwort vom Webserver authentisch ist.

Ich habe es gefunden, weil ich ursprünglich daran gedacht hatte, dasselbe mit TLS Notary zu tun. Ich habe Vitalik am 22. August 2015 auf reddit darüber angeschrieben. Er sagte dies:

Die Verwendung von Ethereum-Verträgen zur Überprüfung von HTTPS-Sitzungen ist theoretisch eine coole Idee; Meine Hauptsorge ist, dass die EVM im Moment möglicherweise zu langsam ist, um sie zu implementieren. Wenn Sie es versuchen möchten, können Sie gerne recherchieren und genau sehen, wie viel Arbeit dafür erforderlich wäre. Vielleicht ist es innerhalb von 3 m Gas möglich, und ich würde die Ergebnisse gerne selbst sehen.

Ich freue mich, dass jemand die gleiche Idee hatte wie ich und sie bereits umgesetzt hat. Wenn nur alle Entwicklungen so einfach wären!

Danke Linagee, dass du so begeistert von der Arbeit bist, die wir bei Oraclize leisten . Ich habe gerade dein Platzhalter-Repository darüber bemerkt, unsere Idee, das TLSNotary-Projekt zu nutzen, wurde das erste Mal im letzten Mai im IRC-Kanal #tlsnotary-chat diskutiert - jedenfalls Es ist immer noch interessant, dass wir unabhängig voneinander auf so ziemlich die gleiche Idee gekommen sind!

Ich glaube, dies wurde als Funktion entwickelt, um die Belastung des Netzwerks zu minimieren und Ressourcen zu reduzieren. Es gibt mehrere Lösungen, wenn Sie einen Vertrag per API aufrufen möchten:

http://www.ethereum-wecker.com/

Quelle: https://forum.ethereum.org/discussion/3571/ethereum-alarm-clock-call-scheduling-for-contracts

pipermerriam Beiträge: 10Mitglied ✭ September 2015 in Allgemeine Projektdiskussion (nicht technisch) Ich bin stolz darauf, den Start des Ethereum-Weckerdienstes bekannt zu geben.

http://www.ethereum-wecker.com/

Der Alarmdienst erleichtert die Planung von Vertragsfunktionsaufrufen für eine bestimmte Blocknummer in der Zukunft. Die aktuelle Version sollte als Alpha-Software betrachtet werden.

Planen Sie Vertragsfunktionsaufrufe so, dass sie in einem bestimmten Block in der Zukunft ausgeführt werden. Vertrauenslos. Keine administrativen APIs oder besonderer Zugriff für irgendjemanden, einschließlich mir selbst. Veröffentlichter überprüfbarer Quellcode. Umfangreiche Dokumentation mit Beispielen. Ich bin sehr daran interessiert, das Feedback der Leute zu hören. Senden Sie mir gerne eine Nachricht an pipermerriam on gitter.

Dies wird aus einer anderen Antwort kopiert.
Wie verknüpfen Sie die Fragen miteinander? Ich habe versucht, beides zu beantworten =/
Wenn die Fragen im Wesentlichen dasselbe fragen, sollte diese als Duplikat markiert werden. Wenn sie andere Dinge fragen, können Sie auf diese Antwort verlinken, aber zusätzlich sollten Sie versuchen, speziell darauf einzugehen, wonach dieser Benutzer gesucht hat.