Chainlink доставляет внешние данные в смарт-контракт не одним запросом, а согласованным отчётом сети независимых узлов. Каждый узел берёт значение у своих источников, подписывает его, узлы обмениваются наблюдениями между собой и сводят их к медиане. На блокчейн уходит одна транзакция с подписями участников, и контракт-агрегатор хранит результат как ответ с номером раунда и отметкой времени. Смарт-контракт читает готовое число из этого хранилища.
Почему смарт-контракт не может сходить за данными сам
Виртуальная машина блокчейна детерминирована. Один и тот же вызов обязан дать один и тот же результат на любом узле, иначе узлы не договорятся о состоянии. Запрос к внешнему сайту этому требованию противоречит: два узла, обратившись к серверу с разницей в секунду, получат разные ответы, и консенсус развалится.
Отсюда конструкция оракула. Данные приносят снаружи, записывают на цепь отдельной транзакцией и только затем читают из контракта. Чтение детерминировано, потому что читается уже сохранённое значение. Вопрос смещается с «как получить данные» на «кому верить при записи» — и дальше вся инженерия посвящена этому второму вопросу.
Разница принципиальная. Запрос даёт мнение одного сервера в один момент. Оракульная сеть даёт значение, которое подписали несколько независимых операторов, а подписи проверяются на цепи при приёме отчёта. Испортить результат одним взломанным сервером нельзя, испортить сговором большинства операторов — можно, и это честное описание модели доверия.
Chainlink (LINK): как протокол поставляет данные в смарт-контракты по шагам
- Операторы узлов получают значение у своих источников. Состав источников у разных операторов не совпадает.
- Каждый узел подписывает собственное наблюдение криптографической подписью.
- Ведущий узел раунда запрашивает у остальных свежие подписанные наблюдения и собирает из них отчёт.
- Отчёт рассылается обратно участникам. Кворум подписывает его и возвращает ведущему.
- Ведущий отправляет одну транзакцию с итоговым отчётом и подписями кворума.
- Контракт-агрегатор проверяет подписи на цепи и сохраняет медиану как ответ с номером раунда.
Эта схема описана в документации протокола как протокол внецепочечной отчётности. В описании децентрализованной модели данных Chainlink, прочитанном 16 октября 2026 года, указано и ограничение приёмки: контракт-агрегатор обязан получить ответы от минимального числа оракулов, иначе последнее значение не обновится. Пропущенный раунд не подменяется догадкой — на цепи остаётся прежняя запись с прежней отметкой времени.

Агрегация: почему медиана, а не среднее
Итоговым ответом служит медиана наблюдений. Выбор не случаен. Среднее сдвигается от одного выброса, потому что узел, чей источник отдал ноль или задвоенную цену, тянет результат за собой, а медиана к такому выбросу нечувствительна, пока испорчено меньше половины наблюдений.
Второй выигрыш — стоимость записи. Если бы каждый оператор публиковал своё значение отдельной транзакцией, сеть платила бы комиссию за каждого участника раунда. Согласование вне цепи сводит раунд к одной транзакции, а проверка подписей кворума уже на цепи сохраняет свойство недоверия к отдельному участнику. Операторы при этом тратят на комиссии заметно меньше.
Доверие здесь смещается к составу операторов и к их источникам. Узел — не абстракция: это программа на Go из открытого репозитория реализации узла Chainlink, которая, судя по требованиям сборки на 16 октября 2026 года, работает в связке с клиентом блокчейна через вебсокет и с базой PostgreSQL версии 15 и выше, а к внешним интерфейсам ходит через адаптеры по REST. Качество данных определяют эти адаптеры, а не сам протокол согласования.
Когда значение обновляется
Раунд запускается по двум условиям. Достаточно любого из них. Первое — порог отклонения: узел видит, что значение вне цепи разошлось с записанным на цепи сильнее заданной величины. Второе — периодичность: с последнего обновления прошло отведённое время.
Следствие для потребителя данных неочевидное. Между обновлениями на цепи лежит старое число, и это нормальное состояние, а не сбой. Контракт, который принимает решение по такой записи, обязан сам проверять свежесть: сравнить отметку времени последнего обновления с текущей и отказаться от действия, если запись устарела. Документация прямо рекомендует закладывать проверки свежести, границы допустимых значений, предохранители и поведение по умолчанию при отказе источника.
Что лежит в ответе контракта
| Поле или метод | Что содержит | Зачем смотреть |
|---|---|---|
| answer | Само значение — цена актива, объём резервов или иные данные конкретной ленты | Основной результат; интерпретируется только вместе с числом знаков после запятой |
| roundId | Номер раунда, в котором записано значение | Позволяет отличить новое обновление от повторного чтения прежнего |
| startedAt | Отметка времени начала раунда | Показывает, когда узлы начали собирать наблюдения для этой записи |
| updatedAt | Отметка времени последнего обновления записи | Ключевое поле для проверки свежести данных перед использованием |
| answeredInRound | Номер раунда, в котором получен ответ; в документации помечен как устаревший | В новых интеграциях на него не опираются |
| decimals() | Число десятичных знаков в ответе ленты | Без него значение читается с ошибкой на порядки |
| description() | Текстовое описание агрегатора, на который указывает прокси | Проверка, что контракт читает ту ленту, которая предполагалась |
Что протокол не гарантирует
Ленты различаются по качеству. Документация признаёт это открыто. Она делит их по уровню рыночного риска — от низкого до наивысшего, отдельно помечая новые токены без истории и нестандартные ленты, у которых методика расчёта отличается от обычной рыночной цены. Отдельно оговорены ленты с единственным источником: перед использованием такой ленты требуется оценить, подходит ли она под задачу.
Ответственность документация возлагает на интегратора прямым текстом: за способ использования сети отвечает тот, кто её использует, а протокол доставляет лишь согласованное значение и не обещает, что оно верное по существу, если источники ошиблись одинаково.
Практический вывод для трейдера. Цена, по которой считается принудительное закрытие позиции на площадке, часто берётся из такой ленты, а не из стакана самой площадки. Отсюда расхождения между графиком и расчётом: как устроена эта связка, разобрано в материале о том, как открыть первую позицию по бессрочному контракту. Тот же источник цены участвует и в выборе схемы обеспечения — сравнение двух схем дано в разборе о том, как выбрать между изолированной и кросс-маржой.
Роль токена LINK
LINK — служебный токен сети стандарта ERC-677, который расширяет привычный ERC-20 возможностью передавать данные вместе с переводом. Наименьшая единица называется джоуль: в одном LINK их 10 в восемнадцатой степени. Токеном оплачивают доступ к сервисам сети и вознаграждают операторов узлов за обслуживание запросов, он же используется в механизмах стейкинга.
Это описание функции. Не оценка актива. Редакция не разбирает здесь ни курс токена, ни целесообразность его покупки: предмет статьи — устройство доставки данных.
Итог: что проверить перед опорой на ленту данных
- Адрес ленты сверен с официальным реестром сети, а не взят из чужого кода.
- Число десятичных знаков прочитано методом decimals, а не предположено.
- Поле updatedAt проверяется при каждом чтении, порог устаревания задан явно.
- Известны порог отклонения и периодичность обновления конкретной ленты.
- Расписание работы ленты совпадает с расписанием задачи.
- Категория риска ленты и число источников посмотрены до интеграции.
- Предусмотрено поведение контракта при отсутствии свежего значения.
Для трейдера аналог этого чек-листа — сверка собственных расчётов с отчётом площадки, где цена ликвидации и плата за удержание считаются по внешней ленте. Методика сверки описана в материалах о том, как проверить корректность расчёта прибыли и убытка и как оценить стоимость удержания короткой позиции.
- Как открыть первую позицию по бессрочному контракту — где в расчёте позиции участвует внешняя цена.
- Как выбрать между изолированной и кросс-маржой — как схема обеспечения меняет чувствительность к источнику цены.
- Как проверить корректность расчёта прибыли и убытка — сверка собственного расчёта с отчётом площадки.
- Как оценить стоимость удержания короткой позиции — плата за время, считаемая по внешнему источнику цены.
Частые вопросы
Чем оракул отличается от обычного запроса к сайту?
Числом независимых подписей под результатом. Запрос к сайту возвращает мнение одного сервера, и проверить его на цепи нельзя. Оракульная сеть собирает наблюдения нескольких операторов, сводит их к медиане и записывает отчёт с подписями, которые контракт проверяет самостоятельно при приёме.
Что происходит, если источники разошлись между собой?
Итогом раунда становится медиана наблюдений, поэтому одиночный выброс на результат не влияет. Если ответов пришло меньше минимального числа, запись на цепи не обновляется вовсе: остаётся прежнее значение с прежней отметкой времени, и контракт-потребитель обязан это состояние распознавать сам.
Почему цена в ленте отличается от цены на бирже прямо сейчас?
Потому что лента обновляется по двум правилам: при отклонении сверх заданного порога и по истечении отведённого времени. Между обновлениями на цепи лежит прежнее число. Это штатное поведение, и рассчитано оно на баланс между свежестью данных и стоимостью записи.
Можно ли узнать, когда значение записано?
Да, для этого в ответе есть отметка времени последнего обновления и номер раунда. Их читают вместе со значением и сравнивают с текущим временем блока. Если разрыв больше допустимого для задачи, корректное поведение — отказаться от действия, а не использовать устаревшее число.
Вердикт
Протокол решает узкую задачу: превратить недетерминированное внешнее значение в запись, которую все узлы сети прочитают одинаково. Сильная часть конструкции — медиана подписанных наблюдений и проверка подписей на цепи. Слабая — зависимость от состава источников, которую протокол не устраняет и не скрывает. Разбирая любой контракт с внешней ценой, начинайте с вопроса, какая лента под ним и как часто она обновляется.
Разборы протоколов и инфраструктуры выходят в нашем Telegram-канале Cryptium.
Обсуждение
Добавить комментарий