En el campo de la cadena de bloques, las máquinas oráculo son sistemas que suministran de manera precisa datos del mundo real externo a los contratos inteligentes. Las máquinas oráculo funcionan esencialmente como middleware importante para cerrar la brecha entre la blockchain y la información del mundo real, y constituyen una infraestructura indispensable que respalda el ecosistema de aplicaciones descentralizadas (DApps).
¿Qué son las máquinas oráculo?: Sistema de intermediación de información en blockchain
Al ejecutarse los contratos inteligentes, muchos de ellos requieren acceso a datos externos. Por ejemplo, al construir un contrato inteligente de derivados de futuros de petróleo en la red Ethereum, se necesita información sobre la cantidad de petróleo negociada en una fecha específica. Sin embargo, dado que los contratos inteligentes están limitados a un entorno on-chain, no pueden acceder directamente a esta información off-chain. Aquí es donde entran en juego las máquinas oráculo.
Específicamente, los contratos inteligentes describen en sus registros de eventos las solicitudes de datos necesarios. Luego, un proceso que opera en un entorno off-chain monitorea estos registros de eventos y analiza el contenido de la solicitud. Tras obtener los datos necesarios a través de APIs externas, transmite la transacción para enviar los datos a la cadena y ejecuta la función de callback del contrato inteligente. Este flujo permite que el contrato inteligente acceda a información externa confiable.
La posición de mercado de Chainlink y el token LINK
En el ámbito de las cadenas de bloques, Chainlink domina el mercado de las máquinas oráculo descentralizadas. El papel del proyecto Chainlink es proporcionar datos generados en el mundo real a la blockchain de la manera más segura y confiable posible. A través de mecanismos de incentivos económicos, el proyecto ha construido un ecosistema virtuoso centrado en el token LINK.
Datos actuales del mercado del token LINK (a partir del 21 de enero de 2026):
Precio actual: $12.25
Variación en 24 horas: -2.14%
Volumen de comercio en 24 horas: $4.32M
Capitalización de mercado en circulación: $8.68B
Participación de mercado: 0.38%
Las máquinas oráculo de Chainlink se activan mediante transferencias del token LINK. Este token es un contrato inteligente basado en ERC677 que funciona en la red Ethereum. La funcionalidad de las máquinas oráculo basadas en LINK se clasifica en un modelo típico de solicitud/respuesta.
La innovación introducida por el estándar ERC677
La filosofía de diseño del método transferAndCall
El problema esencial de las máquinas oráculo es que los usuarios deben pagar por los servicios al proveedor (el oráculo). Sin embargo, en el estándar ERC20, que es la norma básica de tokens, solo existe una función de transferencia simple, por lo que no puede cumplir con los requisitos de realizar una solicitud de servicio al mismo tiempo que la transferencia.
Por ello, Chainlink propuso el estándar ERC677. Este estándar añade el método transferAndCall a la norma ERC20, permitiendo realizar una transferencia de tokens y una solicitud de servicio en una sola transacción. Cuando un usuario ejecuta transferAndCall, además de la transferencia normal de ERC20, se verifica si la dirección receptora es un contrato (no una cuenta externa). En caso afirmativo, automáticamente se llama al método onTokenTransfer de ese contrato.
Este diseño integra el pago y la llamada a la función, permitiendo que la lógica de negocio de la máquina oráculo se implemente de manera eficiente.
Estructura de múltiples capas para la verificación de seguridad
Antes de usar un servicio de oráculo, el usuario debe verificar previamente si la máquina oráculo en cuestión es confiable. Chainlink está diseñado para que cualquiera pueda participar como proveedor de servicios oráculo, y esta transparencia y verificabilidad aumentan la fiabilidad del sistema.
Flujo de procesamiento de solicitudes en la cadena
Mecanismo de aceptación de solicitudes en el contrato Oracle
Cuando un consumidor de la máquina oráculo paga la tarifa usando transferAndCall y realiza una solicitud de servicio, la dirección de destino de la solicitud será la dirección del contrato de la máquina oráculo. En el método onTokenTransfer del contrato Oracle, se realizan varias verificaciones en etapas:
Primero, se comprueba que la transferencia proviene del contrato LINK (modificador onlyLINK), verificando que msg.sender coincida con la dirección del contrato LINK. Luego, se verifica que la longitud del payload de datos (_data) no supere un límite establecido. Además, se comprueba que en _data exista un selector de función que comience con “oracleRequest”.
Si estas verificaciones de seguridad son satisfactorias, el contrato Oracle realiza un delegatecall a sí mismo, en realidad ejecutando el método oracleRequest.
Generación y registro del ID de solicitud
Dentro del método oracleRequest, se ejecutan secuencialmente las siguientes acciones:
Se concatena el identificador del oráculo (el usuario que realiza la solicitud) con el nonce enviado por él, y se procesa mediante una función hash para generar un requestId único para esta solicitud. Se verifica que este requestId no exista ya en el mapeo de compromisos (commitment), garantizando que no haya duplicados.
Tras aprobar la verificación, se establece un período de validez (expiration) y se registra en el mapeo de compromisos un valor que concatena _payment, _callbackAddress, _callbackFunctionId y expiration. La etapa más importante es la emisión del evento OracleRequest, que contiene los datos de la solicitud codificados en formato CBOR (Concise Binary Object Representation). Este formato, que puede entenderse como JSON en binario, permite un intercambio de datos ligero y eficiente.
Mecanismo de respuesta de los nodos off-chain
Verificación y ejecución de fulfillOracleRequest
Los nodos Chainlink que operan en off-chain monitorean los eventos OracleRequest. Cuando detectan uno, realizan varias verificaciones importantes antes de devolver los datos a la cadena.
Primero, verifican que el origen de la llamada (msg.sender) sea el propietario del contrato o que esté en la lista de nodos autorizados (modificador onlyAuthorizedNode). Luego, comprueban que el requestId proporcionado exista en el mapeo de compromisos y que los valores _payment, _callbackAddress, _callbackFunctionId y expiration coincidan con los registros previos (isValidRequest).
Si estas verificaciones son satisfactorias, el monto correspondiente a esta solicitud se acumula en drawableTokens, y el requestId se elimina del mapa de compromisos. Finalmente, se verifica que la cantidad de gas restante sea suficiente para ejecutar la función de callback del contrato original que realizó la solicitud (mínimo MINIMUM_CONSUMER_GAS_LIMIT).
Tras pasar todas las verificaciones, se realiza la llamada formal a la función de callback del contrato del solicitante, enviando los datos obtenidos.
Patrones de implementación de funciones de callback
De los eventos OracleRequest, se puede obtener el ID de la función de callback (por ejemplo, 6A9705B4) y la firma correspondiente (por ejemplo, chainlinkCallback(bytes32,int256)). En el contrato consumidor que recibe los datos devueltos por la máquina oráculo, se implementa una función de verificación como validateChainlinkCallback.
Esta función comprueba que el requestId proporcionado en pendingRequests realmente exista y que provenga de la máquina oráculo correspondiente. Si pasa la verificación, se emite el evento ChainlinkFulfilled, y posteriormente se puede procesar aún más la respuesta. Se actualiza el mapeo de respuestas, y en el caso de un oráculo de precios, se asigna el nuevo precio a currentPrice y se ejecuta la lógica de actualización de precios correspondiente.
Patrones de implementación de predictores de precios
Interfaz Aggregator y feed de precios
El proceso descrito anteriormente es el proceso completo de un servicio de máquina oráculo universal. Por otro lado, los predictores de precios ofrecidos por Chainlink proporcionan un patrón de implementación más simple.
Cada par de trading (ETH/USD, BTC/USD, etc.) tiene un feed de precios individual (Aggregator o su versión proxy, AggregatorProxy). Esta interfaz ofrece varios métodos de consulta estandarizados.
Métodos principales de consulta:
decimals() - Número de dígitos que indican la precisión de los datos de precio devueltos (normalmente 8 u 18)
description() - Nombre del par de trading (ejemplo: ETH/USD)
version() - Principalmente para identificar la versión del agregador al que apunta el proxy
getRoundData(_roundId) - Obtener datos de precio para una ronda específica
latestRoundData() - Obtener los datos de precio más recientes
Mejores prácticas en la implementación
En la mayoría de los escenarios de desarrollo de aplicaciones, el contrato solo necesita leer el precio más reciente, por lo que simplemente llama a latestRoundData(). La respuesta incluye la información de precio más actual.
Además, muchas aplicaciones usan el precio en USD como unidad de visualización. En ese caso, la precisión del par en USD generalmente se fija en 8 dígitos, por lo que normalmente no es necesario considerar diferencias de precisión. Incluso si diferentes pares de tokens tienen diferentes precisiones, se puede verificar mediante decimals() para ajustarse correctamente.
De esta forma, la máquina oráculo de Chainlink no solo actúa como intermediario de datos, sino que, a través de patrones de implementación avanzados como los predictores de precios, proporciona una base financiera práctica y confiable en el ecosistema blockchain.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
La máquina de oráculos de Chainlink: un sistema que conecta los contratos inteligentes con el mundo exterior a la cadena de bloques
En el campo de la cadena de bloques, las máquinas oráculo son sistemas que suministran de manera precisa datos del mundo real externo a los contratos inteligentes. Las máquinas oráculo funcionan esencialmente como middleware importante para cerrar la brecha entre la blockchain y la información del mundo real, y constituyen una infraestructura indispensable que respalda el ecosistema de aplicaciones descentralizadas (DApps).
¿Qué son las máquinas oráculo?: Sistema de intermediación de información en blockchain
Al ejecutarse los contratos inteligentes, muchos de ellos requieren acceso a datos externos. Por ejemplo, al construir un contrato inteligente de derivados de futuros de petróleo en la red Ethereum, se necesita información sobre la cantidad de petróleo negociada en una fecha específica. Sin embargo, dado que los contratos inteligentes están limitados a un entorno on-chain, no pueden acceder directamente a esta información off-chain. Aquí es donde entran en juego las máquinas oráculo.
Específicamente, los contratos inteligentes describen en sus registros de eventos las solicitudes de datos necesarios. Luego, un proceso que opera en un entorno off-chain monitorea estos registros de eventos y analiza el contenido de la solicitud. Tras obtener los datos necesarios a través de APIs externas, transmite la transacción para enviar los datos a la cadena y ejecuta la función de callback del contrato inteligente. Este flujo permite que el contrato inteligente acceda a información externa confiable.
La posición de mercado de Chainlink y el token LINK
En el ámbito de las cadenas de bloques, Chainlink domina el mercado de las máquinas oráculo descentralizadas. El papel del proyecto Chainlink es proporcionar datos generados en el mundo real a la blockchain de la manera más segura y confiable posible. A través de mecanismos de incentivos económicos, el proyecto ha construido un ecosistema virtuoso centrado en el token LINK.
Datos actuales del mercado del token LINK (a partir del 21 de enero de 2026):
Las máquinas oráculo de Chainlink se activan mediante transferencias del token LINK. Este token es un contrato inteligente basado en ERC677 que funciona en la red Ethereum. La funcionalidad de las máquinas oráculo basadas en LINK se clasifica en un modelo típico de solicitud/respuesta.
La innovación introducida por el estándar ERC677
La filosofía de diseño del método transferAndCall
El problema esencial de las máquinas oráculo es que los usuarios deben pagar por los servicios al proveedor (el oráculo). Sin embargo, en el estándar ERC20, que es la norma básica de tokens, solo existe una función de transferencia simple, por lo que no puede cumplir con los requisitos de realizar una solicitud de servicio al mismo tiempo que la transferencia.
Por ello, Chainlink propuso el estándar ERC677. Este estándar añade el método transferAndCall a la norma ERC20, permitiendo realizar una transferencia de tokens y una solicitud de servicio en una sola transacción. Cuando un usuario ejecuta transferAndCall, además de la transferencia normal de ERC20, se verifica si la dirección receptora es un contrato (no una cuenta externa). En caso afirmativo, automáticamente se llama al método onTokenTransfer de ese contrato.
Este diseño integra el pago y la llamada a la función, permitiendo que la lógica de negocio de la máquina oráculo se implemente de manera eficiente.
Estructura de múltiples capas para la verificación de seguridad
Antes de usar un servicio de oráculo, el usuario debe verificar previamente si la máquina oráculo en cuestión es confiable. Chainlink está diseñado para que cualquiera pueda participar como proveedor de servicios oráculo, y esta transparencia y verificabilidad aumentan la fiabilidad del sistema.
Flujo de procesamiento de solicitudes en la cadena
Mecanismo de aceptación de solicitudes en el contrato Oracle
Cuando un consumidor de la máquina oráculo paga la tarifa usando transferAndCall y realiza una solicitud de servicio, la dirección de destino de la solicitud será la dirección del contrato de la máquina oráculo. En el método onTokenTransfer del contrato Oracle, se realizan varias verificaciones en etapas:
Primero, se comprueba que la transferencia proviene del contrato LINK (modificador onlyLINK), verificando que msg.sender coincida con la dirección del contrato LINK. Luego, se verifica que la longitud del payload de datos (_data) no supere un límite establecido. Además, se comprueba que en _data exista un selector de función que comience con “oracleRequest”.
Si estas verificaciones de seguridad son satisfactorias, el contrato Oracle realiza un delegatecall a sí mismo, en realidad ejecutando el método oracleRequest.
Generación y registro del ID de solicitud
Dentro del método oracleRequest, se ejecutan secuencialmente las siguientes acciones:
Se concatena el identificador del oráculo (el usuario que realiza la solicitud) con el nonce enviado por él, y se procesa mediante una función hash para generar un requestId único para esta solicitud. Se verifica que este requestId no exista ya en el mapeo de compromisos (commitment), garantizando que no haya duplicados.
Tras aprobar la verificación, se establece un período de validez (expiration) y se registra en el mapeo de compromisos un valor que concatena _payment, _callbackAddress, _callbackFunctionId y expiration. La etapa más importante es la emisión del evento OracleRequest, que contiene los datos de la solicitud codificados en formato CBOR (Concise Binary Object Representation). Este formato, que puede entenderse como JSON en binario, permite un intercambio de datos ligero y eficiente.
Mecanismo de respuesta de los nodos off-chain
Verificación y ejecución de fulfillOracleRequest
Los nodos Chainlink que operan en off-chain monitorean los eventos OracleRequest. Cuando detectan uno, realizan varias verificaciones importantes antes de devolver los datos a la cadena.
Primero, verifican que el origen de la llamada (msg.sender) sea el propietario del contrato o que esté en la lista de nodos autorizados (modificador onlyAuthorizedNode). Luego, comprueban que el requestId proporcionado exista en el mapeo de compromisos y que los valores _payment, _callbackAddress, _callbackFunctionId y expiration coincidan con los registros previos (isValidRequest).
Si estas verificaciones son satisfactorias, el monto correspondiente a esta solicitud se acumula en drawableTokens, y el requestId se elimina del mapa de compromisos. Finalmente, se verifica que la cantidad de gas restante sea suficiente para ejecutar la función de callback del contrato original que realizó la solicitud (mínimo MINIMUM_CONSUMER_GAS_LIMIT).
Tras pasar todas las verificaciones, se realiza la llamada formal a la función de callback del contrato del solicitante, enviando los datos obtenidos.
Patrones de implementación de funciones de callback
De los eventos OracleRequest, se puede obtener el ID de la función de callback (por ejemplo, 6A9705B4) y la firma correspondiente (por ejemplo, chainlinkCallback(bytes32,int256)). En el contrato consumidor que recibe los datos devueltos por la máquina oráculo, se implementa una función de verificación como validateChainlinkCallback.
Esta función comprueba que el requestId proporcionado en pendingRequests realmente exista y que provenga de la máquina oráculo correspondiente. Si pasa la verificación, se emite el evento ChainlinkFulfilled, y posteriormente se puede procesar aún más la respuesta. Se actualiza el mapeo de respuestas, y en el caso de un oráculo de precios, se asigna el nuevo precio a currentPrice y se ejecuta la lógica de actualización de precios correspondiente.
Patrones de implementación de predictores de precios
Interfaz Aggregator y feed de precios
El proceso descrito anteriormente es el proceso completo de un servicio de máquina oráculo universal. Por otro lado, los predictores de precios ofrecidos por Chainlink proporcionan un patrón de implementación más simple.
Cada par de trading (ETH/USD, BTC/USD, etc.) tiene un feed de precios individual (Aggregator o su versión proxy, AggregatorProxy). Esta interfaz ofrece varios métodos de consulta estandarizados.
Métodos principales de consulta:
Mejores prácticas en la implementación
En la mayoría de los escenarios de desarrollo de aplicaciones, el contrato solo necesita leer el precio más reciente, por lo que simplemente llama a latestRoundData(). La respuesta incluye la información de precio más actual.
Además, muchas aplicaciones usan el precio en USD como unidad de visualización. En ese caso, la precisión del par en USD generalmente se fija en 8 dígitos, por lo que normalmente no es necesario considerar diferencias de precisión. Incluso si diferentes pares de tokens tienen diferentes precisiones, se puede verificar mediante decimals() para ajustarse correctamente.
De esta forma, la máquina oráculo de Chainlink no solo actúa como intermediario de datos, sino que, a través de patrones de implementación avanzados como los predictores de precios, proporciona una base financiera práctica y confiable en el ecosistema blockchain.