¿Cómo funciona exactamente Oracle debajo del capó? [duplicar]

Lo siguiente es lo que dice la documentación de Ethereum de Oraclize :

En primer lugar, en el caso más común, un usuario transmite una transacción que ejecuta una función de un contrato inteligente. La función contiene una instrucción especial que se manifiesta a Oraclize, que está monitoreando constantemente la cadena de bloques de Ethereum en busca de dicha instrucción, una solicitud de datos.

En segundo lugar, de acuerdo con los parámetros de dicha solicitud, Oraclize buscará o calculará un resultado, construirá, firmará y transmitirá la transacción que lleva el resultado. En la configuración predeterminada, dicha transacción ejecutará la función __callback que su desarrollador debe colocar en el contrato inteligente: por esta razón, esta transacción se denomina en la documentación como la transacción de devolución de llamada de Oraclize.

¿Qué tipo de instrucción se ejecuta? ¿Qué mensajes se transmiten al llamar a la oraclize_queryfunción?

¿Es la instrucción "especial" y oraclize_querylo mismo? Según tengo entendido oraclize_queryla solicitud de datos es verdad?

Las otras respuestas, no abordan cuál es la instrucción "especial", etc.

Respuestas (1)

EDITAR: descubrí en los comentarios en la pregunta sugerida por otros que es la original donde las respuestas son que en realidad funciona de la manera que sugerí (la parte de los eventos era de lo que no estaba seguro)

No estoy completamente seguro de esto, pero esta es mi suposición de cómo funcionan las cosas debajo del capó:

  • cuando se invoca oraclize_query, publica un evento con los datos sobre qué tipo de consulta, etc.

  • oraclize monitorea la cadena de bloques y filtra esos eventos

  • después de encontrar la respuesta, la envían al contrato que la solicitó usando la función __callback (implementada por el solicitante)

Esta es la razón por la que se necesitan pocas cuadras para que se entregue la respuesta.

Traté de confirmar esas suposiciones mirando el código , pero me perdí en él.

Un evento son solo datos en la cadena de bloques, ¿verdad? ¿No es una transacción/mensaje?
exactamente. es una forma de registro: solidity.readthedocs.io/en/develop/contracts.html#events
¿Por qué mencionan una instrucción especial (no válida)?
lo siento, no entiendo: ¿quién menciona una instrucción especial o no válida?
La documentación de Oraclize para la API de Ethereum.
¿podría ser más preciso (dar un enlace)? Intenté buscar "instrucción no válida" en los documentos y no encontré nada.
Quise decir "instrucción especial".