Wie genau funktioniert Oraclize unter der Haube? [Duplikat]

Folgendes sagt die Ethereum-Dokumentation von Oraclize :

Erstens wird im häufigsten Fall eine Transaktion, die eine Funktion eines Smart Contracts ausführt, von einem Benutzer übertragen. Die Funktion enthält eine spezielle Anweisung, die Oraclize, die die Ethereum-Blockchain ständig auf eine solche Anweisung überwacht, eine Datenanforderung anzeigt.

Zweitens wird Oraclize gemäß den Parametern einer solchen Anfrage ein Ergebnis abrufen oder berechnen, die Transaktion mit dem Ergebnis erstellen, signieren und senden. In der Standardkonfiguration führt eine solche Transaktion die __callback-Funktion aus, die von ihrem Entwickler in den Smart Contract eingefügt werden sollte: Aus diesem Grund wird diese Transaktion in der Dokumentation als Oraclize-Callback-Transaktion bezeichnet.

Welche Art von Befehl wird ausgeführt? Welche Nachrichten werden beim Aufrufen der oraclize_queryFunktion herumgereicht?

Ist die "besondere" Anweisung und oraclize_querydasselbe? Soweit ich verstehe, oraclize_queryist die Anfrage nach Daten richtig?

Die anderen Antworten gehen nicht darauf ein, was die "spezielle" Anweisung ist usw.

Antworten (1)

BEARBEITEN: Ich habe in den Kommentaren zu der von anderen vorgeschlagenen Frage herausgefunden, dass es sich um die ursprüngliche Frage handelt, bei der die Antworten lauten, dass es tatsächlich so funktioniert, wie ich es vorgeschlagen habe (der Ereignisteil war das, worüber ich mir nicht sicher war).

Ich bin mir da nicht ganz sicher, aber das ist meine Vermutung, wie die Dinge unter der Haube funktionieren:

  • Wenn oraclize_query aufgerufen wird, veröffentlicht es ein Ereignis mit den Daten darüber, welche Art von Abfrage usw.

  • oraclize überwacht die Blockchain und filtert diese Ereignisse

  • Nachdem sie die Antwort herausgefunden haben, senden sie sie mit der __callback-Funktion (implementiert vom Anforderer) an den Vertrag, der sie angefordert hat.

Aus diesem Grund dauert es einige Blöcke, bis die Antwort geliefert wird.

Ich versuchte, diese Annahmen zu bestätigen, indem ich mir den Code ansah, verlor mich aber darin.

Ein Ereignis sind nur Daten in der Blockchain, richtig? Es ist keine Transaktion/Nachricht?
exakt. es ist eine Art der Protokollierung - solidity.readthedocs.io/en/develop/contracts.html#events
Warum erwähnen sie eine spezielle (ungültige) Anweisung?
Entschuldigung, ich verstehe nicht: Wer erwähnt eine spezielle oder ungültige Anweisung?
Die Oraclize-Dokumentation für die Ethereum-API.
könnten Sie genauer sein (Link geben)? Ich habe versucht, in den Dokumenten nach "ungültiger Anweisung" zu suchen, und nichts gefunden
Ich meinte "Sonderunterricht".