В области блокчейна оракл-машины — это системы, которые точно поставляют внешние данные реального мира для смарт-контрактов. По сути, оракл-машины выступают важным промежуточным программным обеспечением, заполняющим информационный разрыв между блокчейном и реальным миром, и являются неотъемлемой инфраструктурой, поддерживающей экосистему децентрализованных приложений (DApps).
Что такое оракл-машина: система посредничества информации в блокчейне
При выполнении смарт-контрактов зачастую требуется доступ к внешним данным. Например, при создании деривативного смарт-контракта на нефть на сети Ethereum потребуется данные о объеме торгов нефтью на определённую дату. Однако сам смарт-контракт ограничен средой on-chain и не может напрямую получать оффчейн-информацию. Здесь на помощь приходят оракл-машины.
Конкретно, смарт-контракт описывает запрос нужных данных в виде события (event log). Затем процесс, работающий вне цепочки, следит за этим событием, анализирует его содержимое и через внешние API получает необходимые данные. После этого транзакция с данными транслируется в цепочку, вызывая функцию обратного вызова (callback) смарт-контракта. Таким образом, смарт-контракт получает доступ к надежной внешней информации.
Рыночная позиция Chainlink и токен LINK
В сегменте децентрализованных оракл-машин в блокчейн-индустрии Chainlink занимает доминирующую долю рынка. Проект Chainlink предназначен для безопасной и надежной доставки данных из реального мира в блокчейн. Он создал экосистему, основанную на экономических стимулах, с использованием токена LINK, обеспечивающего взаимовыгодное взаимодействие участников.
Текущие рыночные данные токена LINK (по состоянию на 21 января 2026 года):
Текущая цена: $12.25
Изменение за 24 часа: -2.14%
Объем за 24 часа: $4.32M
Рыночная капитализация: $8.68B
Доля рынка: 0.38%
Оракл-машина Chainlink активируется при передаче токенов LINK. Этот токен — смарт-контракт на базе ERC677, работающий на сети Ethereum. Функции оракл-машины, основанные на токенах LINK, классифицируются как модель запрос/ответ.
Инновации стандарта ERC677
идея метода transferAndCall
Основная проблема оракл-машин — необходимость оплаты услуг пользователем поставщику (ораклу). Стандартный ERC20-токен обеспечивает только простую передачу, что не позволяет одновременно выполнить оплату и запрос услуги.
Решением стала предложенная Chainlink стандартизация ERC677. Она добавила в ERC20 метод transferAndCall, позволяющий реализовать передачу токенов и запрос услуги в рамках одной транзакции. При вызове transferAndCall проверяется, является ли получатель смарт-контрактом (а не внешним аккаунтом). Если да, автоматически вызывается его метод onTokenTransfer.
Это объединяет оплату и вызов функции, делая бизнес-логику оракл-машины более эффективной.
Многоуровневая проверка безопасности
Перед использованием оракл-сервиса пользователь должен убедиться в его надежности. В Chainlink любой может стать поставщиком оракл-услуг, что повышает прозрачность и проверяемость системы.
Процесс обработки запросов on-chain
Механизм приема запросов в Oracle-контракте
При оплате через transferAndCall и запросе услуги адрес назначения — это контракт оракл-машины. В методе onTokenTransfer этого контракта выполняется несколько проверок:
Проверка, что вызов пришел с LINK-контракта (с помощью onlyLINK).
Проверка длины переданных данных (_data) на превышение лимита.
Проверка, что в _data содержится вызов функции, начинающийся с «oracleRequest».
Если все проверки пройдены, вызывается delegatecall к текущему контракту, фактически — вызов метода oracleRequest.
Генерация и запись requestId
Внутри метода oracleRequest происходит:
Создается уникальный requestId, объединяя адрес оракула и nonce, и хешируя их.
Проверяется, что такой requestId еще не существует в карте commitment.
Записывается в commitment: _payment, _callbackAddress, _callbackFunctionId, expiration, а также вызывается событие OracleRequest с CBOR-данными.
CBOR — это компактный бинарный формат JSON, обеспечивающий эффективную передачу данных.
Механизм ответа оффчейн-нодов
Проверка и выполнение fulfillOracleRequest
Chainlink-нод следит за событием OracleRequest. При его обнаружении он выполняет:
Проверку, что вызов пришел от авторизованного узла (onlyAuthorizedNode).
Проверку, что requestId есть в commitment и параметры совпадают (isValidRequest).
Если проверки прошли успешно, сумма за запрос (drawableTokens) увеличивается, requestId удаляется из commitment. Затем проверяется, что оставшийся газ достаточен для вызова коллбэка (MINIMUM_CONSUMER_GAS_LIMIT). После этого вызывается callback-функция исходного контракта с полученными данными.
Реализация паттернов callback-функций
Из события OracleRequest можно получить ID функции обратного вызова (например, 6A9705B4) и её сигнатуру. В контракте-обработчике реализуется функция validateChainlinkCallback, которая проверяет, что requestId действительно существует и принадлежит этому ораклу. После успешной проверки генерируется событие ChainlinkFulfilled, и можно обработать ответ, обновляя маппинг цен или другие данные.
Реализация ценовых оракулов
( Интерфейс Aggregator и ценовые фиды
Процесс, описанный выше, — универсальный для любого оракл-сервиса. Для ценовых фидов Chainlink реализует более упрощенную модель.
Для каждого торгового пары (ETH/USD, BTC/USD и т.п.) существует отдельный фид (Aggregator или его прокси AggregatorProxy). В интерфейсе есть стандартные методы:
decimals)### — число знаков после запятой (обычно 8 или 18)
description() — название пары (например, ETH/USD)
version() — версия агрегатора или прокси
getRoundData(_roundId) — данные за конкретный раунд
latestRoundData() — последние данные
( Лучшие практики использования
Чаще всего контракт просто вызывает latestRoundData)### для получения актуальной цены. Возвращаемые данные включают цену, время, раунд и т.п.
Многие приложения используют цену в долларах США (USD). В этом случае точность обычно 8 знаков, и необходимости учитывать различия в decimals обычно нет. Если у пары другой точности, можно проверить через decimals() и корректировать.
Таким образом, оракл-машина Chainlink — не только посредник данных, но и мощная платформа для реализации сложных финансовых инструментов, таких как ценовые предсказатели, обеспечивая надежную и практическую инфраструктуру для блокчейн-экосистемы.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Механизм оракулов Chainlink: как связывать смарт-контракты с внешним миром и блокчейном
В области блокчейна оракл-машины — это системы, которые точно поставляют внешние данные реального мира для смарт-контрактов. По сути, оракл-машины выступают важным промежуточным программным обеспечением, заполняющим информационный разрыв между блокчейном и реальным миром, и являются неотъемлемой инфраструктурой, поддерживающей экосистему децентрализованных приложений (DApps).
Что такое оракл-машина: система посредничества информации в блокчейне
При выполнении смарт-контрактов зачастую требуется доступ к внешним данным. Например, при создании деривативного смарт-контракта на нефть на сети Ethereum потребуется данные о объеме торгов нефтью на определённую дату. Однако сам смарт-контракт ограничен средой on-chain и не может напрямую получать оффчейн-информацию. Здесь на помощь приходят оракл-машины.
Конкретно, смарт-контракт описывает запрос нужных данных в виде события (event log). Затем процесс, работающий вне цепочки, следит за этим событием, анализирует его содержимое и через внешние API получает необходимые данные. После этого транзакция с данными транслируется в цепочку, вызывая функцию обратного вызова (callback) смарт-контракта. Таким образом, смарт-контракт получает доступ к надежной внешней информации.
Рыночная позиция Chainlink и токен LINK
В сегменте децентрализованных оракл-машин в блокчейн-индустрии Chainlink занимает доминирующую долю рынка. Проект Chainlink предназначен для безопасной и надежной доставки данных из реального мира в блокчейн. Он создал экосистему, основанную на экономических стимулах, с использованием токена LINK, обеспечивающего взаимовыгодное взаимодействие участников.
Текущие рыночные данные токена LINK (по состоянию на 21 января 2026 года):
Оракл-машина Chainlink активируется при передаче токенов LINK. Этот токен — смарт-контракт на базе ERC677, работающий на сети Ethereum. Функции оракл-машины, основанные на токенах LINK, классифицируются как модель запрос/ответ.
Инновации стандарта ERC677
идея метода transferAndCall
Основная проблема оракл-машин — необходимость оплаты услуг пользователем поставщику (ораклу). Стандартный ERC20-токен обеспечивает только простую передачу, что не позволяет одновременно выполнить оплату и запрос услуги.
Решением стала предложенная Chainlink стандартизация ERC677. Она добавила в ERC20 метод transferAndCall, позволяющий реализовать передачу токенов и запрос услуги в рамках одной транзакции. При вызове transferAndCall проверяется, является ли получатель смарт-контрактом (а не внешним аккаунтом). Если да, автоматически вызывается его метод onTokenTransfer.
Это объединяет оплату и вызов функции, делая бизнес-логику оракл-машины более эффективной.
Многоуровневая проверка безопасности
Перед использованием оракл-сервиса пользователь должен убедиться в его надежности. В Chainlink любой может стать поставщиком оракл-услуг, что повышает прозрачность и проверяемость системы.
Процесс обработки запросов on-chain
Механизм приема запросов в Oracle-контракте
При оплате через transferAndCall и запросе услуги адрес назначения — это контракт оракл-машины. В методе onTokenTransfer этого контракта выполняется несколько проверок:
Если все проверки пройдены, вызывается delegatecall к текущему контракту, фактически — вызов метода oracleRequest.
Генерация и запись requestId
Внутри метода oracleRequest происходит:
CBOR — это компактный бинарный формат JSON, обеспечивающий эффективную передачу данных.
Механизм ответа оффчейн-нодов
Проверка и выполнение fulfillOracleRequest
Chainlink-нод следит за событием OracleRequest. При его обнаружении он выполняет:
Если проверки прошли успешно, сумма за запрос (drawableTokens) увеличивается, requestId удаляется из commitment. Затем проверяется, что оставшийся газ достаточен для вызова коллбэка (MINIMUM_CONSUMER_GAS_LIMIT). После этого вызывается callback-функция исходного контракта с полученными данными.
Реализация паттернов callback-функций
Из события OracleRequest можно получить ID функции обратного вызова (например, 6A9705B4) и её сигнатуру. В контракте-обработчике реализуется функция validateChainlinkCallback, которая проверяет, что requestId действительно существует и принадлежит этому ораклу. После успешной проверки генерируется событие ChainlinkFulfilled, и можно обработать ответ, обновляя маппинг цен или другие данные.
Реализация ценовых оракулов
( Интерфейс Aggregator и ценовые фиды
Процесс, описанный выше, — универсальный для любого оракл-сервиса. Для ценовых фидов Chainlink реализует более упрощенную модель.
Для каждого торгового пары (ETH/USD, BTC/USD и т.п.) существует отдельный фид (Aggregator или его прокси AggregatorProxy). В интерфейсе есть стандартные методы:
( Лучшие практики использования
Чаще всего контракт просто вызывает latestRoundData)### для получения актуальной цены. Возвращаемые данные включают цену, время, раунд и т.п.
Многие приложения используют цену в долларах США (USD). В этом случае точность обычно 8 знаков, и необходимости учитывать различия в decimals обычно нет. Если у пары другой точности, можно проверить через decimals() и корректировать.
Таким образом, оракл-машина Chainlink — не только посредник данных, но и мощная платформа для реализации сложных финансовых инструментов, таких как ценовые предсказатели, обеспечивая надежную и практическую инфраструктуру для блокчейн-экосистемы.