¿Chainlink almacena la respuesta de Oracle para una transacción en algún lugar de blockchain?

Consideremos un ejemplo del ciclo de vida de una transacción en el que un contrato inteligente utiliza Oracle para obtener datos externos de precios ETH/USD que se modifican en tiempo real.

La transacción se ejecuta durante la minería, por lo que crea una solicitud a los oráculos de Chainlink que devuelven Price1. ¿Está Price1 almacenado/almacenado en caché en algún lugar de la cadena de bloques?

Una vez que se extrae el bloque, el nodo de minería lo envía a otros nodos de Ethereum para validarlo.

Los nodos de validación también ejecutan ese contrato inteligente. ¿Qué pasará con las llamadas posteriores a Oracle para obtener el precio ETH/USD? ¿Oracle devolvería la respuesta Price1 "almacenada en caché" durante la validación del bloque o obtendríamos Price2? ¿Significa que si obtenemos Price2, la validación del bloque falla?

Respuestas (1)

Respuesta corta a su pregunta: Sí, las respuestas de Oracle se almacenan en cadena.

Respuesta larga: puede leer más sobre cómo funciona el modelo de solicitud para Chainlink y cómo obtiene datos en la cadena, pero aquí está la esencia, que ayudará a responder esta pregunta. La forma más sencilla de comprender la arquitectura es comprender cómo funcionan los iniciadores de registros de ejecución .

  1. Un contrato en cadena realiza una solicitud a un oráculo de Chainlink fuera de la cadena mediante la emisión de un evento en el registro de la cadena de bloques. Este evento tiene las instrucciones sobre qué tipo de datos obtener y cómo devolverlos. Los nodos de Chainlink están buscando estos eventos.

  2. Luego, el nodo sigue las instrucciones y, en una transacción que realiza el nodo de enlace de cadena, coloca los datos en la cadena, definidos por el evento. El evento especificará a través de qué función se ejecutarán los datos.

Puede consultar la página de feeds de precios de Chainlink y ver los datos en cadena. Incluso tienen un enlace a etherscan para mostrarle dónde se almacenan el contrato y los datos.

Su pregunta es muy buena, porque es por eso que no es posible tener un sistema Oracle integrado en una cadena de bloques, si la obtención de datos externos fuera parte del proceso de validación, ningún nodo podría llegar a un consenso. Entonces, en cambio, un oráculo de Chainlink coloca los datos en la cadena en una transacción, y luego pasa por el mismo proceso de validación por el que pasan todas las demás transacciones.