Получение внешних данных смарт-контрактом

Оракулы Техническая статья Продвинутый
6/5/2022
167
Avatar
Автор
Oracle Labs

Изучение компонентов, помогающих вашему смарт-контракту получить доступ к миру вне блокчейн.

Существует несколько частей архитектуры Chainlink, которые помогают вашему смарт-контракту выйти за пределы блокчейн и получить данные из API внешних систем или взаимодействовать с ним.

Расскажем про:

  • Умные контакты
  • Задания
  • Внешние адаптеры
  • Мосты
  • Узлы Chainlink
  • Операторы узлов
  • Оракулы
  • Децентрализованные сети оракулов (DONs)

Нужны ли вам все эти компоненты и как они работают?

Какой минимум необходим для получения данных вне блокчейн сети?

Основные компоненты, необходимые для того, чтобы смарт-контракт мог получить данные офф-чейн, например, из REST API, следующие:

  • ваш смарт-контракт, работающий на EVM-совместимом блокчейне
  • оракул, в частности, контракт оракула
  • узел Chainlink
  • задание на этом узле.

Смарт-контракт — это фрагмент кода, работающий на блокчейне. 

Контракт оракула — это другой смарт-контракт на том же блокчейне, с меньшими задачами, чем ваш контракт, который выступает в качестве промежуточного звена для узла, который вы собираетесь использовать для получения внешних данных.

Узел Chainlink — это сервер где-то в публичном Интернете, который общается с блокчейном и слушает, что нужно сделать. Вам, как разработчику смарт-контрактов, не нужно управлять своим собственным узлом. Другие люди, фактически целые команды, призваны выполнять эту роль. Вы найдете операторов узлов, которые помогут вам, например, в канале operator-requests на Discord компании Chainlink.

Я упомянул о том, что нужно делать... Это так называемые задания, которые выполняются на узле Chainlink. Оператор узла настраивает свой узел на выполнение целого ряда различных заданий:

  • получение данных из JSON API
  • отправлять данные в JSON API
  • запустить задание cron
  • получить цену ETH/USD
  • перенести дорогостоящие вычисления за пределы сети
  • получить голоса DAO за вне блокчейн

Если на узле нет нужного задания, которое вы ищете, оператор узла поможет вам его создать. Посмотрите на сайте https://market.link/, чтобы узнать, что уже предлагается.

Оператор узла публикует свой Oracle ID и Job ID, что позволяет вашему смарт-контракту отправлять запросы на его узел.

В сети вам нужно будет заплатить оператору узла токенами LINK за каждую транзакцию задания. Не забудьте перевести достаточное количество токенов LINK с собственного кошелька на адрес вашего смарт-контракта.

Обращения к контракту оракула являются асинхронными, то есть вы не получите прямого ответа. Через несколько секунд или минут узел напишет ответ через свой контракт оракула вашему вызывающему смарт-контракту. Стоимость этой транзакции "ответа" покрывается оператором узла и оплачивается в собственной валюте блокчейна, например, ETH или MATIC.

Что такое внешние адаптеры?

Внешние адаптеры (EA, external adapters) выполняют сложную тяжелую работу, которую вы не можете выполнить из смарт-контракта простым GET или POST запросом. EA не являются обязательным компонентом, но они очень полезны.

Они помогают выполнить:

  • объединить в цепочку несколько взаимодействий с API JSON
  • преобразование данных в более удобный формат для смарт-контракта
  • сокрытие ключей API, используемых для доступа к удаленным API JSON

Внешние адаптеры обычно размещаются в виде облачных функций или запускаются из контейнера Docker. Их может написать любой человек с традиционными навыками разработки API.

Чтобы настроить использование внешнего адаптера, оператор узла должен выполнить два шага:

  • Настроить мост от своего узла к внешнему адаптеру
  • Указать ссылку на мост в файле конфигурации задания

Децентрализованные сети оракулов (DONs) - последний недостающий кусочек в пазле массовой адаптации блокчейн.

До сих пор мы обсуждали все компоненты, необходимые для выхода за пределы сети блокчейн. Архитектура Chainlink предлагает последний компонент, который обеспечивает более высокую степень децентрализации.

Используя вышеупомянутые компоненты, вы могли бы создать ценовой фид, объединяющий данные из нескольких высококачественных надежных источников. Вы бы создали задание, которое запрашивало API многочисленных источников с помощью внешних адаптеров и вычисляло среднее значение полученных ответов.

Однако ваш единственный оракул может восприниматься как единственный источник истины и, следовательно, быть слабым местом в определенных сценариях.

Для критически важных сценариев, таких как ценовые каналы, которые лежат в основе всего DeFi, Chainlink позволяет операторам узлов объединить усилия в децентрализованную сеть оракулов DON. Сети объединяют множество оракулов - часто 30 или более, управляемых независимыми высококвалифицированными командами, чтобы определить ответы на поставленные вопросы - например, какова цена ETH/USD?


Время чтения: 7 минут
Поделитесь в соц. сетях:
Наверх