TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.47K subscribers
Post #283 129
Chainlink Connect to API. Часть 3

Пройдемся по коду, представленному в актуальной документации chainlink.

В целом код у всех видов запросов очень похож.

В самом начале подключаются два контракта, от которых наследуется наш:

import '@chainlink/contracts/src/v0.8/ChainlinkClient.sol';
import '
@chainlink/contracts/src/v0.8/ConfirmedOwner.sol';

Далее подключается библиотека для запросов:

using Chainlink for Chainlink.Request;

Создаются обязательные переменные jobId и fee, а также пользовательские, где будут храниться данные после запросов.
Определяется событие для учета запросов.

Далее в конструкторе устанавливается владелец, а также передаются контракты токена, оракула, jobId и fee.

Fee - это стоимость выполнения запроса адаптером.
JobId - это уникальный идентификатор узла, по которому он выполняет данный запрос.

Позже я покажу, где их можно найти, и как они появляются.

Так же тут есть одинаковая для всех функция withdrawLink() для возврата неиспользованных Link.

Переходим к интересному.

Функция fulfill(). Она вызывается извне, когда адаптер готов прислать нам ответ на запрос. Типа как fallback функция. Она может принимать различные аргументы на входе для фиксирования событий (event). И возвращает результат запроса в нужном типе данных: uint, int, bool, bytes или string.

Далее функция request(). Более точное название меняется от контракта к контракту, но это скорее сделано, чтобы назвать функцию в зависимости от данных, которая она будет запрашивать.

Идем построчно.

Chainlink.Request memory req = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);

Создаем временную переменную на основе ранее подключенной библиотеки, куда передаем jobId, адрес нашего контракта, а также this.funcName.selector - где funcName - это имя callback функции, которая будет принимать ответ в нашем контракте.

В данных примерах это fulfil, а так может быть любой, как, например, fulfilResult.

req.add('get', 'httpLink');

Здесь указывается API ссылка.

req.add('path', 'name');

Далее указываем ключ в json, значение которого мы хотим получить. Например, в "image: 'http://'", image - это ключ.

sendChainlinkRequest(req, fee);

В конце вызываем функцию из подключенного контракта, куда передаем параметры запроса и fee.

В следующем посте расскажу, где взять jobId, оракул и как работать с предустановленными API на узлах.

#chainlink #api #adapter
More from @solidityset
  1. Oct 15, 2026Немного новостей про Core Solidity Команда Solidity опубликовала обновление о разработке C…
  2. Oct 8, 2026Промо видео для SaaS и других ваших проектов Хочу поделить с вами одним из своих открытий…
  3. Oct 8, 2026video post
  4. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  5. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  6. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →