Перейти к содержанию
Learning Platform
Глоссарий Troubleshooting
Урок 07.06 · 20 мин
Средний
OraclesRedStonePythPrice FeedsDeFiPull Model

Оракулы на TON

Оракулы — это «мосты» между блокчейном и реальным миром, поставляющие данные о ценах, погоде и других off-chain событиях. Без оракулов DeFi-протоколы не могут функционировать: DEX нужны цены для маржинальных позиций, лендинг-протоколам — для определения ликвидаций. На TON тема оракулов особенно актуальна из-за асинхронной модели, которая усложняет обеспечение актуальности данных.

Смарт-контракты на блокчейне живут в изолированном мире: они могут читать данные из блокчейна, но не могут обращаться к внешним источникам — биржевым ценам, погодным данным, курсам валют. Оракулы решают эту проблему, доставляя внешние данные в блокчейн. Без оракулов невозможны lending-протоколы (нужны цены для ликвидации), деривативы, страхование и большинство DeFi-приложений.


Модели архитектуры оракулов

Существуют два основных подхода к доставке данных в блокчейн:

Push-модель

Узлы оракула непрерывно публикуют обновлённые данные в смарт-контракт на блокчейне. Данные всегда доступны on-chain, но каждое обновление стоит газа — даже если никто в данный момент не запрашивает цену.

Pull-модель

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

Push-модель vs Pull-модель оракулов
Push-модель (Chainlink-стиль)
Oracle Nodes
постоянно публикуют
On-chain Contract
Pull-модель (RedStone/Pyth)
Oracle Nodes
хранят данные
Кэш (off-chain)
потребитель прикрепляет к tx
On-chain Contract
ХарактеристикаPush-модельPull-модель
Расход газаВысокий (постоянные обновления)Низкий (только по запросу)
Свежесть данныхВсегда on-chainOn-demand (при использовании)
ЗадержкаМинимальнаяЗависит от потребителя
ПримерChainlink (Ethereum)RedStone, Pyth (TON)

Оракулы на TON преимущественно используют pull-модель — это эффективнее с точки зрения газа и хорошо подходит для асинхронной архитектуры TON.


RedStone на TON

RedStone стал первым оракулом, интегрированным с TON (2024). Его архитектура полностью основана на pull-модели.

Как работает RedStone

Архитектура RedStone (pull-модель)
Data Sources (биржи, API)
подписанные данные
Decentralized Cache Layer
(off-chain)
dApp запрашивает через SDK
Пользователь
прикрепляет данные к вызову
Smart Contract
проверяет подпись и использует данные
  1. Data Sources (биржи, агрегаторы) передают цены узлам RedStone
  2. Узлы подписывают данные криптографически и помещают их в децентрализованный кэш
  3. dApp через SDK извлекает нужные данные из кэша
  4. Пользователь прикрепляет подписанные данные к транзакции
  5. Смарт-контракт проверяет подпись on-chain и использует данные

Типы контрактов RedStone

RedStone предоставляет несколько типов контрактов для разных сценариев:

КонтрактНазначениеКогда использовать
Price ManagerУправление множеством ценовых фидовПротоколы с несколькими активами
Single Feed ManagerОптимизированный контракт для одного фидаМаксимальная газовая эффективность
Price FeedИндивидуальный ценовой фидПростая интеграция одного актива

Два режима работы

  • On-the-fly processing — данные обрабатываются в момент вызова функции, не сохраняются в хранилище контракта. Минимальный расход газа, но данные доступны только в рамках текущей транзакции.
  • Persistent storage — данные записываются в хранилище контракта для последующего чтения другими контрактами. Выше расход газа, но данные доступны между транзакциями.
TIP

RedStone поддерживает основные криптоактивы — BTC, ETH, TON и другие. Для актуального списка поддерживаемых фидов обращайтесь к официальной документации RedStone.


Pyth Network на TON

Pyth Network — кроссчейн-оракул, работающий на множестве блокчейнов, включая TON. В отличие от RedStone, Pyth использует выделенный смарт-контракт на TON для хранения и обновления ценовых данных.

Архитектура Pyth

Поток обновления цены через Pyth
Pyth Publishers
(источники данных)
Hermes API
(off-chain сервер)
TON Pyth Contract
(on-chain)
dApp запрашивает свежие данные
Рассчитать комиссию
+ отправить update tx

Система Price Feed IDs

Каждый актив в Pyth идентифицируется уникальным hex-идентификатором (Price Feed ID). Например, для TON/USD и BTC/USD существуют свои фиксированные идентификаторы, по которым протокол запрашивает цену конкретного актива.

Получение данных

Pyth предлагает два способа чтения цен:

  1. Чтение кэшированных данных — контракт хранит последние обновлённые цены. Быстрый доступ, но данные могут быть не самыми свежими.
  2. Запрос через Hermes — для получения максимально свежих данных dApp обращается к Hermes API, получает подписанное обновление, рассчитывает комиссию за обновление и отправляет транзакцию с новыми данными в контракт Pyth на TON.
WARNING

При чтении кэшированных данных из контракта Pyth всегда проверяйте timestamp — данные могут быть устаревшими. Для критичных операций (ликвидации, крупные сделки) рекомендуется запрашивать свежее обновление через Hermes.


Сравнение оракулов

АспектRedStonePyth
МодельPull (данные прикрепляются к вызову)Pull (Hermes + on-chain контракт)
СвежестьOn-demand (при каждом вызове)On-demand + кэш on-chain
ВерификацияКриптографические подписиКроссчейн-аттестация
ИнтеграцияTypeScript SDKDedicated SDK
On-chain хранениеОпционально (два режима)Да (контракт хранит последние цены)
КроссчейнМультичейн поддержкаНативный кроссчейн (Wormhole)

Оба оракула используют pull-модель и обеспечивают достаточную свежесть данных для DeFi-приложений. Выбор между ними зависит от конкретных потребностей протокола: интеграционного SDK, поддерживаемых фидов и предпочтений по архитектуре.


Оракулы в DeFi-протоколах TON

Оракулы играют ключевую роль в работе DeFi-протоколов на TON:

Lending (EVAA)

Lending-протоколы, такие как EVAA, используют ценовые фиды оракулов для:

  • Расчёта коэффициентов залога — определение стоимости обеспечения в долларах
  • Триггеров ликвидации — если стоимость залога падает ниже порога, позиция ликвидируется
  • Определения максимальной суммы займа — на основе текущих цен активов
TIP

Подробнее о том, как EVAA использует ценовые данные для работы lending-протокола, читайте в уроке о lending и EVAA (M06-L03).

DEX

Децентрализованные биржи могут использовать данные оракулов для:

  • Референсных цен — сравнение текущей цены пула с рыночной
  • Защиты от манипуляций — обнаружение аномальных отклонений от рыночных цен
  • TWAP-оракулов — средневзвешенная по времени цена для уменьшения волатильности

Деривативы и синтетические активы

Протоколы синтетических активов полностью зависят от оракулов для определения цены базового актива, по которой происходят расчёты позиций.

TIP

Общий обзор DeFi-архитектуры и роли оракулов в экосистеме описан в уроке DeFi overview (M06-L01). Связь оракулов с кроссчейн-мостами рассматривается в уроке о мостах (M11-L04).


Безопасность оракулов

Оракулы — критический компонент инфраструктуры, и их безопасность напрямую влияет на безопасность всех зависящих протоколов.

Основные риски

РискОписаниеЗащита
Манипуляция даннымиЗлоумышленник подаёт ложные ценыМульти-источниковая верификация, медианные цены
Устаревание данныхКонтракт использует старую ценуПроверка timestamp, максимальный возраст данных
Single point of failureОдин оракул-провайдер выходит из строяИспользование нескольких оракулов
Flash loan атакиМанипуляция ценой через мгновенные займыTWAP вместо spot-цен, circuit breakers

Рекомендации по безопасности

  1. Проверка свежести — всегда проверяйте timestamp данных оракула и отклоняйте устаревшие обновления
  2. Мульти-источниковая верификация — по возможности используйте данные от нескольких оракулов и сравнивайте значения
  3. Circuit breakers — автоматическое приостановление операций при аномальных отклонениях цены
  4. Ограничение ценового диапазона — отклонение обновлений, выходящих за разумные пределы
WARNING

Безопасность оракулов — одна из самых частых причин эксплойтов в DeFi. Даже надёжный оракул может быть скомпрометирован через манипуляцию источниками данных или задержку обновлений. Всегда закладывайте защитные механизмы в архитектуру протокола.


Ключевые выводы

  1. Оракулы — мост между off-chain данными и смарт-контрактами; без них невозможны lending, деривативы и большинство DeFi-приложений
  2. Оракулы на TON используют pull-модель — данные доставляются по запросу, а не публикуются непрерывно, что экономит газ
  3. RedStone — первый оракул на TON, использует прикрепление подписанных данных к транзакциям с on-chain верификацией подписей
  4. Pyth Network — кроссчейн-оракул с выделенным контрактом на TON; предлагает как кэшированные, так и свежие данные через Hermes API
  5. Безопасность оракулов критична — проверяйте свежесть данных, используйте несколько источников и внедряйте circuit breakers
  6. DeFi-протоколы (EVAA, DEX) зависят от оракулов для расчёта залогов, ликвидаций и референсных цен

Частые ошибки

  1. Полагаются на единственный источник данных (один оракул) без fallback-механизма: если оракул выйдет из строя, весь протокол остановится.
  2. Не проверяют freshness (свежесть) данных оракула: устаревшая цена может привести к некорректным ликвидациям или арбитражным атакам.
  3. Используют цену из одного DEX-пула как оракул, что уязвимо к манипуляциям через flash-свопы.
  4. Не учитывают задержку асинхронной доставки данных оракула: между запросом и получением ответа цена может значительно измениться.

Проверка знанийKnowledge check
Почему оракулы на TON преимущественно используют pull-модель, а не push-модель? Какие преимущества это даёт?
ОтветAnswer
Pull-модель означает, что данные хранятся вне блокчейна (в децентрализованном кэше) и доставляются on-chain только по запросу -- потребитель прикрепляет подписанные данные к своей транзакции. Преимущества: (1) экономия газа -- данные записываются on-chain только при реальном использовании, а не при каждом обновлении; (2) on-demand свежесть -- потребитель получает актуальные данные в момент запроса; (3) хорошо подходит для асинхронной архитектуры TON. В push-модели оракул непрерывно публикует обновления on-chain, что расходует газ даже если данные никто не запрашивает.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 6