预言机详解系列之Chainlink(上)

Odaily星球日报Опубликовано 2025-04-15Обновлено 2025-04-15

Введение

在区块链领域中,预言机是一种能够为链上智能合约提供外部信息的系统。作为连接智能合约和区块链以外世界的中间件,预言机扮演着极其关键的基础设施角色,它的主要功能是为区块链中的智能合约提供数据。

在区块链领域中,预言机是一种能够为链上智能合约提供外部信息的系统。作为连接智能合约和区块链以外世界的中间件,预言机扮演着极其关键的基础设施角色,它的主要功能是为区块链中的智能合约提供数据。

例如,如果我们在以太坊网络上创建一个智能合约,而这个合约需要访问原油某天的交易量数据。然而智能合约本身无法获取这种链下的现实世界数据,因此需要通过预言机来实现。在这种情况下,智能合约会将所需日期的原油交易量写入事件日志,然后,链下会启动一个进程来监控并订阅这个事件日志,当监听到交易中的请求时,该进程会通过提交链上交易,调用合约的相关方法,把指定日期的原油交易量信息上传到智能合约中。

预言机详解系列之Chainlink(上)

数据源自 https://defillama.com/oracles

Chainlink

在区块链中,市场占有率最大的莫过于 Chainlink 预言机。Chainlink 是一个去中心化的预言机项目,它的作用就是以最安全的方式向区块链提供现实世界中产生的数据。Chainlink 在基本的预言机原理的实现方式之上,围绕 LINK token 通过经济激励建立了一个良性循环的生态系统。Chainlink 预言机需要通过 LINK token 的转账来实现触发。而 LINK 则是以太坊网络上的 ERC 677 合约。而基于 LINK ERC 677 token 完成的预言机功能,属于其中的请求 / 响应模式。

ERC 677 代币中的 transferAndCall

预言机详解系列之Chainlink(上)

预言机实质上是提供服务的一方,ChainLink 在设计预言机框架的时候首先想到的是预言机的用户如何向提供服务的预言机支付服务费用。但由于标准的同质化 Token 合约 ERC 20 无法满足支付后提供服务这样的一个需求,因此 ChainLink 自己提出了一个适用于预言机服务场景的标准——ERC 677 。

从上面的代码中可以看到,ERC 677 其实只是在标准 ERC 20 的基础上增加了一个 transferAndCall 方法。该方法将支付和服务请求合二为一,满足了预言机业务场景的需求。

预言机详解系列之Chainlink(上)

当用户进行 transferAndCall 进行转账时,除了 ERC 20 的转账以外,还会判断 to 地址是否为一个合约地址,如果是,则调用该 to 地址的 onTokenTransfer 方法。(这里 ERC 677 Receiver 里面只有一个方法:onTokenTransfer)

我们也可以去到 Etherscan 上查看 LINK 代币的合约源码:https://etherscan.io/address/0x514910771af9ca656af840dff83e8264ecf986ca#code

预言机详解系列之Chainlink(上)

可以看到 LINK Token 在实现的时候除了多对 _to 地址进行了校验以外,都是实实在在继承了 ERC 677 的 transferAndCall 方法。注意:在请求预言机服务之前,要先确定该预言机是否可信,因为预言机为消费者提供服务之前需要先付款。(人人都能提供预言机服务)

预言机详解系列之Chainlink(上)

预言机可信度划分

链上 oracle 请求

下面来看看 oracle 合约的 onTokenTransfer 方法是如何实现的:

预言机详解系列之Chainlink(上)

当预言机的消费者使用 transferAndCall 方法支付费用并请求预言机的服务,这里这个 to 地址就是被请求的预言机的地址了。预言机中的 onTokenTransfer 方法首先会校验转账是否为 LINK 代币(onlyLINK),其实就是判断 msg.sender 是否为 Link 代币合约的地址。然后会判断 _data 的长度有没有超过最大限度。最后会判断_data 中是不是以“oracleRequest”开头的 function selector。当然这里的 function selector 可以根据预言机所提供的服务进行定制,不一定非要是“oracleRequest”,具体看这个预言机对外暴露什么样的接口了。

当这些 modifier 都判断通过后,再检查当前的函数调用者和转账金额是否跟 _data 中的相同。这一些列的安全检查都通过后,才通过一个 delegatecall 来 call 当前这个 oracle 合约。当然,因为已经检查过 _data 中的 function selector 了,所以其实是 call 的 oracleRequest 方法。

预言机详解系列之Chainlink(上)

首先,将 oracle 请求者和他发送过来的 nonce 拼接然后进行哈希,作为本次请求的 requestId,并通过查检查 commitments 映射看是否是唯一的 id。检查没问题的话,就设置一个过期时间,并将 requestId 添加到 commitments 中去,并将 _payment、_callbackAddress、_callbackFunctionId 和 expiration 进行拼接作为 value。最重要的是,发出一个 OracleRequest 事件,该事件中包含了请求数据 _data,是一种 Concise Binary Object Representation(CBOR) 数据。该编码格式轻量简洁,可以简单理解为二进制形式 JSON 格式。这个数据可以是各种各样的形式,看链下节点是如何设计的了。

例如:一个 Chainlink: ETH/USD Aggregator,有一笔交易包含了 OracleRequest 事件:

预言机详解系列之Chainlink(上)

OracleRequest 事件示例

该事件可以看出,是 0xF79D6aFBb6dA890132F9D7c355e3015f15F3406F 这个 ETH/USD 价格聚合器向 oracle:0x7e94a8a23687d8c7058ba5625db2ce358bcbd244 发出的价格数据请求。如果 oracle 返回请求数据的话,可以从这里面知道返回的合约地址:0xF79D6aFBb6dA890132F9D7c355e3015f15F3406F,需要调用的方法 ID: 6 A 9705 B 4 ,以及过期时间: 1618185924 。

链下节点回应

3.1 链下调用 fulfillOracleRequest

预言机详解系列之Chainlink(上)

首先进行检查:

  • onlyAuthorizedNode:函数调用者 (msg.sender) 必须是合约的 owner 或在授权的列表内;

  • isValidRequest:依旧去 commitments 映射中检查是否存在该 requestId;

  • 将 payment、callbackAddress、_callbackFunctionId 和 expiration 进行拼接,检查是否是该 requestId 在 commitments 映射中对应的值。

如果这些检查都通过了的话,那么将这次的请求的花费累加到 withdrawableTokens 中,记录可以取款的数额。之后将该 _requestId 从 commitments 映射中删除。最后计算一下剩余的 gas 量,看是否大于 MINIMUM_CONSUMER_GAS_LIMIT,即回调发出请求的合约的回调函数执行最小需要的 gas 量。

如果上述检查都通过了,那么可以用 call 的形式正式调用请求者合约的回调函数。

回应 request 应该尽量迅速,因此这里推荐使用 ZAN 的节点服务(https://zan.top/home/node-service?chInfo=ch_WZ)来提高响应速度。可以在节点服务控制台找到获取对应的 RPC 链接以提高链下发送交易的速度。

预言机详解系列之Chainlink(上)

3.2 回调函数

之前我们从 oracleRequest 中知道了回调函数的 id 是 6 A 9705 B 4 ,查询得到该方法为「 chainlinkCallback(bytes 32, int 256 」

预言机详解系列之Chainlink(上)

预言机详解系列之Chainlink(上)

validateChainlinkCallback 是一个可以自定义的函数,这里有一个 modifier:

预言机详解系列之Chainlink(上)

在 pendingRequests 里面检查该 _requestId 对应请求的 oracle 是否匹配。并发出事件 ChainlinkFulfilled:

预言机详解系列之Chainlink(上)

如果校验都通过了的话,那么就可以对 responds 做进一步的处理了,这里是对 answers 映射进行更新。那么如果是价格预言机的话,则是将回应的价格数据赋给 currentPrice 做相应的价格更新:

预言机详解系列之Chainlink(上)

以上是通用预言机服务的完整流程。

我们以 Chainlink 提供的「 TestnetConsumer 」合约中的一个「 requestEthereumPrice 」方法为例来简单讲一下价格预言机请求响应的流程。这个函数定义如下:

预言机详解系列之Chainlink(上)

它所实现的功能就是从指定的 API(cryptocompare) 获取 ETH/USD 的交易价格。函数传入的参数是指定的 oracle 地址和 jobId。将一些列的请求参数组好后,调用「 sendChainlinkRequestTo 」方法将请求发出。「 sendChainlinkRequestTo 」是定义在 Chainlink 提供的库中的一个接口方法,定义如下:

预言机详解系列之Chainlink(上)

Oracle 合约在收到转账之后,会触发「 onTokenTransfer 」方法,该方法会检查转账的有效性,并通过发出「 OracleRequest 」事件记录更为详细的数据信息。

这个日志会在 oracle 合约的日志中找到。链下的节点会订阅该主题的日志,在获取到记录的日志信息之后,节点会解析出请求的具体信息,通过网络的 API 调用,获取到请求的结果。之后通过提交事务的方式,调用 Oracle 合约中的「 fulfillOracleRequest 」方法,将数据提交到链上。

这个方法会在进行一系列的检验之后,会将结果通过之前记录的回调地址与回调函数,返回给消费者合约。

那我作为开发者我只想要用已有的币对价格,而不需要自己指定这些 url 可不可以呢?

答案是可以。第一种使用方式,官方给的示例代码是这样的:

预言机详解系列之Chainlink(上)

首先,每个交易对都有一个单独的 Price Feed,也叫 Aggregator,其实就是一个个 AggregatorProxy,像下面这样:

预言机详解系列之Chainlink(上)

具体这个 interface 实现比较简单,可以参考 AAVE/ETH 这个 pair:https://etherscan.io/address/0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012#code

总共有 5 个查询方法:

  • decimals():返回的价格数据的精度位数,一般为 8 或 18 

  • description():一般为交易对名称,比如 ETH / USD

  • version():主要用来标识 Proxy 所指向的 Aggregator 类型

  • getRoundData(_roundId):根据 round ID 获取当时的价格数据

  • latestRoundData():获取最新的价格数据

大部分应用场景下,合约可能只需要读取最新价格,即调用最后一个方法,其返回参数中,answer 就是最新价格。

另外,大部分应用读取 token 的价格都是统一以 USD 为计价单位的,若如此,你会发现,以 USD 为计价单位的 Pair,精度位数都是统一为 8 位的,所以一般情况下也无需根据不同 token 处理不同精度的问题。

本文由 ZAN Team(X 账号 @zan_team) 的 XiG(X 账号 @SHXiGi)撰写。

Трендовые криптовалюты

Похожее

MORPHO вырос на 14% после прогноза Standard Chartered в $60 – Что дальше?

Криптовалютный токен MORPHO вырос на 14% после того, как Standard Chartered установил для него долгосрочный ценовой ориентир в $60 к 2030 году. Отчёт банка подчеркнул роль протокола Morpho в развитии инфраструктуры децентрализованных финансов (DeFi) и токенизированных активов, что вызвало оживление на рынке. Объём торгов резко увеличился на 315%, а открытый интерес (OI) на фьючерсном рынке вырос на 19%, что указывает на приток нового капитала, а не просто на перераспределение существующих позиций. При этом чистый отток токенов с бирж был незначительным, что говорит об отсутствии активной распродажи и сохранении интереса со стороны инвесторов. С технической точки зрения, цена MORPHO сформировала разворотную модель «двойное дно» около уровня поддержки $1.64 и приблизилась к ключевому сопротивлению в районе $2.24. Показатели индикатора MACD подтверждают усиление бычьих настроений. Преодоление сопротивления $2.24 может открыть путь к цели в $3.00. Таким образом, текущий рост основан на укреплении долгосрочных ожиданий институционального внедрения, а не на спекуляциях на немедленное многократное повышение стоимости.

ambcrypto9 мин. назад

MORPHO вырос на 14% после прогноза Standard Chartered в $60 – Что дальше?

ambcrypto9 мин. назад

В США запущен первый комплаенс-токенизированный акции: Ondo выводит на блокчейн ETF S&P 500 и акции Micron

2 июля Ondo Finance объявила о выпуске токенизированных версий биржевого фонда BlackRock S&P 500 ETF (IVV) и акций Micron Technology (MU) в сети Ethereum. Это первый практический случай применения модели «третьей стороны-хранителя» («third-party custody model»), предложенной сотрудниками SEC в январе этого года. Базовые активы остаются в традиционной системе хранения под регулированием, а токены, выпущенные в соотношении 1:1, предоставляют держателям такие же права, как и у обычных акционеров, включая возможность голосования через платформу Broadridge. Ondo выбрала для запуска два популярных актива: широкий индексный ETF и акции технологической компании. Это отличается от синтетических моделей (как у Robinhood), где токены лишь отражают цену без предоставления прав собственности. В данном случае токены представляют собой реальные ценные бумаги. Продукт пока не доступен для инвесторов из США, а заявление сотрудников SEC не является формальным правилом, что оставляет некоторую регуляторную неопределенность. Тем не менее, участие традиционной инфраструктуры, такой как Broadridge, указывает на растущий интерес Уолл-Стрит к токенизации. На рынке наблюдается активность: Robinhood, DTCC, Nasdaq и NYSE также разрабатывают свои решения в этой области.

marsbit1 ч. назад

В США запущен первый комплаенс-токенизированный акции: Ondo выводит на блокчейн ETF S&P 500 и акции Micron

marsbit1 ч. назад

Сигнализирует ли ротация капитала из CeFi в DeFi о дне крипторынка в третьем квартале? Данные говорят...

Во втором квартале крипторынок пережил сильную волну страха и неопределенности (FUD) после масштабного оттока средств (TVL) из DeFi-протоколов, вызванного серией взломов на сумму более $600 млн. За квартал из Deфи вывели свыше $20 млрд, а общий TVL упал примерно с $150 млрд до $70 млрд, что стало самым резким квартальным снижением с 2021 года. Ярким примером стал протокол Aave, TVL которого за сутки упал на 18%. Однако в третьем квартале наметились признаки разворота тренда. Aave зафиксировал максимальный прирост новых кошельков с октября 2021 года. Важным индикатором возвращения аппетита к риску стали растущие потоки стейблкоинов в сетях Solana, Stellar и Cardano. Параллельно, по данным CryptoQuant, объём кредитования на централизованных платформах (CeFi) впервые с третьего квартала 2024 года сократился на 6%. В совокупности эти данные указывают на возможный ротационный сдвиг капитала из CeFi обратно в DeFi. Это может быть ранним признаком ослабления настроений избегания риска, наблюдавшихся во втором квартале, и потенциальным сигналом формирования дна перед восстановлением рынка в третьем квартале.

ambcrypto1 ч. назад

Сигнализирует ли ротация капитала из CeFi в DeFi о дне крипторынка в третьем квартале? Данные говорят...

ambcrypto1 ч. назад

Создав USDC, почему Coinbase поддержала конкурента OUSD?

Рождение проекта Open USD (OUSD), поддерживаемого альянсом из более чем 140 компаний, включая Coinbase, Visa и BlackRock, бросает вызов традиционной модели стейблкоинов, где эмитенты, такие как Circle, получают весь доход от резервов. Новая модель OUSD направлена на передачу большей части этого дохода партнерам-распространителям, которые привлекают пользователей. Это представляет прямую угрозу для Circle, создателя USDC, особенно потому, что ее ключевой партнер по дистрибуции, Coinbase, присоединился к альянсу OUSD. Coinbase, на которую приходится более 25% циркулирующего USDC, стремится к увеличению своей доли доходов. Этот шаг усиливает ее переговорные позиции перед истечением контракта с Circle в 2026 году. Генеральный директор Circle Джереми Аллер защищает модель USDC, указывая на ее непревзойденную ликвидность и глубокую интеграцию в глобальную финансовую экосистему, построенную за десятилетие. Он скептически относится к эффективности крупных альянсов и модели OUSD с нулевой комиссией, утверждая, что для поддержания инфраструктуры и соответствия требованиям необходимы устойчивые доходы. Аналитики указывают на серьезные проблемы для OUSD: трудности с «холодным стартом» на рынке с доминированием USDT и USDC, потенциальные проблемы с регулированием и антимонопольным законодательством, а также сложности в управлении и координации такого разнородного альянса, что может замедлить принятие решений. Появление OUSD сигнализирует о растущем расколе в отрасли стейблкоинов, где распределительные платформы оспаривают контроль эмитентов над потоками доходов, смещая конкуренцию в сторону борьбы за право распределения прибыли в сети.

Foresight News1 ч. назад

Создав USDC, почему Coinbase поддержала конкурента OUSD?

Foresight News1 ч. назад

Если Strategy действительно продала 491 биткоин, насколько это повлияет на рынок?

Известный трейдер Lightcrypto сообщил, что компания MicroStrategy, крупнейший корпоративный холдер биткойна, возможно, начала продажу монет, продав 491 BTC на сумму около 30 млн долларов. Хотя эта сумма незначительна на фоне общего портфеля MicroStrategy в 847 000 BTC (около 0,058%), это событие имеет символический характер. Недавно MicroStrategy утвердила «Рамочную программу цифрового капитала», разрешающую продажу BTC на сумму до 12,5 млрд долларов для пополнения долларовых резервов, выплаты дивидендов по привилегированным акциям (STRC) и процентов по долгу. Продажа 491 BTC, если она подтвердится, может стать первым шагом в рамках этой программы. Основная причина потенциальных продаж — необходимость управления обязательствами, в частности, поддержания выплат по привилегированным акциям STRC, цена которых упала ниже номинала, что вынудило компанию повысить их дивидендную доходность до 12%. Годовые расходы компании на выплаты по ценным бумагам составляют около 1,76 млрд долларов. Для акций MSTR (MicroStrategy) новость может быть неоднозначной. Краткосрочно рынок воспринял ясность планов компании позитивно. Однако в среднесрочной перспективе это меняет нарратив: MicroStrategy перестает быть исключительно «маржинальным покупателем» и становится компанией, которой также иногда нужно продавать BTC для управления капиталом. Это может оказать давление на премию к чистой стоимости активов (mNAV), которой пользуются акции MSTR. Для рынка BTC непосредственное влияние 491 монеты на спрос и предложение ничтожно. Однако психологически это меняет восприятие: MicroStrategy больше не рассматривается как безусловный конечный покупатель. Если продажи в рамках новой программы продолжатся, рынку придется привыкать к тому, что даже крупнейший холдер может стать источником продаж для покрытия операционных расходов.

marsbit1 ч. назад

Если Strategy действительно продала 491 биткоин, насколько это повлияет на рынок?

marsbit1 ч. назад

Торговля

Спот

Популярные статьи

Как купить LINK

Добро пожаловать на HTX.com! Мы сделали приобретение ChainLink (LINK) простым и удобным. Следуйте нашему пошаговому руководству и отправляйтесь в свое крипто-путешествие.Шаг 1: Создайте аккаунт на HTXИспользуйте свой адрес электронной почты или номер телефона, чтобы зарегистрироваться и бесплатно создать аккаунт на HTX. Пройдите удобную регистрацию и откройте для себя весь функционал.Создать аккаунтШаг 2: Перейдите в Купить криптовалюту и выберите свой способ оплатыКредитная/Дебетовая Карта: Используйте свою карту Visa или Mastercard для мгновенной покупки ChainLink (LINK).Баланс: Используйте средства с баланса вашего аккаунта HTX для простой торговли.Третьи Лица: Мы добавили популярные способы оплаты, такие как Google Pay и Apple Pay, для повышения удобства.P2P: Торгуйте напрямую с другими пользователями на HTX.Внебиржевая Торговля (OTC): Мы предлагаем индивидуальные услуги и конкурентоспособные обменные курсы для трейдеров.Шаг 3: Хранение ChainLink (LINK)После приобретения вами ChainLink (LINK) храните их в своем аккаунте на HTX. В качестве альтернативы вы можете отправить их куда-либо с помощью перевода в блокчейне или использовать для торговли с другими криптовалютами.Шаг 4: Торговля ChainLink (LINK)С легкостью торгуйте ChainLink (LINK) на спотовом рынке HTX. Просто зайдите в свой аккаунт, выберите торговую пару, совершайте сделки и следите за ними в режиме реального времени. Мы предлагаем удобный интерфейс как для начинающих, так и для опытных трейдеров.

1.7k просмотров всегоОпубликовано 2024.03.29Обновлено 2026.06.02

Как купить LINK

Обсуждения

Добро пожаловать в Сообщество HTX. Здесь вы сможете быть в курсе последних новостей о развитии платформы и получить доступ к профессиональной аналитической информации о рынке. Мнения пользователей о цене на LINK (LINK) представлены ниже.

活动图片