Chainlink — это децентрализованная сеть Oracle, которая позволяет смарт-контрактам безопасно и надежно взаимодействовать с данными вне цепочки. Цель Chainlink — стать мостом между блокчейном и реальным миром, позволяя смарт-контрактам получать доступ к реальным данным, платежным системам, API и т. д., тем самым расширяя сферу их применения.
Вот некоторые из ключевых особенностей Chainlink:
1.Децентрализация:Chainlinkсеть Состоит из нескольких независимо работающих узлов.,Эти узлы предоставляют данные или выполняют вычисления.,Результаты затем передаются в смарт-контракт. Такая конструкция децентрализации может повысить надежность сети и безопасность.,Потому что даже если у некоторых узлов возникнут проблемы или они будут атакованы,Остальные узлы по-прежнему работают нормально。2.Разнообразие источников данных:ChainlinkМожет быть подключен к различнымданныеисточник,Включая, помимо прочего, финансовые рынки.,прогноз погоды,Информация о доставке,социальные сетиданныеждать。Это делаетсмарт-контракт Может использоваться в более широком диапазоне сценариев.。3.Вычисления вне сети:Помимо предоставленияданные,Chainlink также может выполнять Вычисление вне сети. Это означает, что смарт-контракт может делегировать Chainlink некоторые сложные или трудоемкие задачи.,тем самым экономя ончейнизвычислительные ресурсыисточник。4.безопасность:ChainlinkИспользует ряд технологий шифрования и механизмов безопасности.,Например, Соглашение об уровне децентрализованного обслуживания (Соглашение об уровне децентрализованного обслуживания).,dSLA),защищатьданныебезопасность и конфиденциальность。5.Легко интегрировать:ChainlinkПредоставляет полный набор инструментов и документации для разработчиков.,Это позволяет разработчикам легко интегрировать Chainlink в собственный смарт-контракт.
Чтобы внедрить Chainlink в смарт-контракт Solidity и использовать его функционал, необходимо выполнить следующие шаги:
1.Установить звено цепи:первый,Вам нужно в вашем проекте Установить звено цепь. Вы можете использовать npm (Node Package Менеджер) для установки. Откройте терминал в каталоге вашего проекта и выполните следующую команду:
2.Представляем цепочку:в твоемсмарт-контрактсередина,Вам нужно представиться Библиотека цепочки. Вот пример:
В этом примере мы представили
ChainlinkClient
, клиентская библиотека для взаимодействия с сетью Chainlink.
3.Использование Chainlink:Сейчас,Вы можете реализовать функциональность Chainlink в своих контрактах. Например,Вы можете создать функцию для запроса внешних данных:
В этом примере,Создаем запрос Chainlink,Указывается источник данных («http://api.example.com/data») и количество токенов LINK, подлежащих оплате (1 LINK). Затем,Мы отправили этот запрос。4.Обработать возвращенные данные:наконец,Вам необходимо создать функцию для обработки данных, возвращаемых Chainlink:
В этом примере,Мы создалиfulfill
функция,Эта функция будет вызвана, когда Chainlink вернет данные. Вы можете добавить свою собственную логику в эту функцию для Обработки возвращенных данных.
Вышеизложенное представляет собой введение и использование в Solidityсмарт-контракт. Chainlinkосновные шаги。пожалуйста Уведомление,Это просто базовый пример,Фактическое использование может быть более сложным. Вам следует прочитать официальную документацию Chainlink.,Узнайте больше подробностей и расширенных функций.
Проверить текущую цену ETH в смарт-контракте вы можете Сервис оракулов Chainlink. Оракулы Chainlink предоставляют цены в реальном времени на различные криптовалюты, включая ETH. Ниже приводится использование Оракул Chainlink запрашивает цену ETH:
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.7;
import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
contract PriceConsumerV3 {
AggregatorV3Interface internal priceFeed;
/**
* Network: Kovan
* Aggregator: ETH/USD
* Address: 0x9326BFA02ADD2366b30bacB125260Af641031331
*/
constructor() public {
priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);
}
/**
* Returns the latest price
*/
function getLatestPrice() public view returns (int) {
(
uint80 roundID,
int price,
uint startedAt,
uint timeStamp,
uint80 answeredInRound
) = priceFeed.latestRoundData();
return price;
}
}
В этом примере,наспервыйпредставилChainlinkизAggregatorV3Interface
。Затем,мы строимфункциясередина ИнициализировалAggregatorV3Interface
Пример,Укажите адрес оракула ETH/USD в тестовой сети Kovan.
Затем,Мы создалиgetLatestPrice
функция,этотфункция Оракула звалиизlatestRoundData
метод,Возвращены последние данные о ценах. Эта функция возвращает последнюю цену ETH в долларах США.
Уведомление,В этом примере используется адрес оракула в тестовой сети Kovan. в основной сети,Вам нужно использовать другой адрес. Адреса различных оракулов можно найти в документации Chainlink.
также,Цена, возвращаемая этим примером, является целым числом.,Он представляет собой наименьшую единицу цены ETH (то есть «вэй»).
Отказ от ответственности: эта работа распространяется под лицензией Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)[1]. Пожалуйста, укажите источник при ее использовании. Автор: мэнбин[2] блог: мэнбин[3] Гитхаб: mengbin92[4] cnblogs: Непреднамеренно полюбила воду[5] Сообщество разработчиков облачных технологий Tencent: Мюнстер[6]
[1]
С указанием авторства-Некоммерческая-ShareAlike 4.0 интернациональность (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh
[2]
mengbin: mengbin1992@outlook.com
[3]
mengbin: https://mengbin.top
[4]
mengbin92: https://mengbin92.github.io/
[5]
Влюбляюсь в воду нечаянно: https://www.cnblogs.com/lianshuiwuyi/
[6]
Мюнстер: https://cloud.tencent.com/developer/user/6649301