Первый этап работы системы оракулов — получение необходимых данных из реального мира или интернета. Это могут быть биржевые котировки, индексы финансовых рынков, погодные данные, результаты спортивных событий или информация с IoT-устройств.
На практике оракулы собирают данные сразу из нескольких источников, а не полагаются на один. Это связано с тем, что один источник может содержать ошибки, задерживаться или подвергаться манипуляциям. Использование нескольких источников повышает надежность информации и снижает риски.
Часто используемые источники данных:
Обычно сбор данных осуществляют оракульные ноды. Они работают на специальном программном обеспечении, постоянно отслеживают внешние источники и отправляют актуальную информацию в сеть оракулов для дальнейшей обработки.
Если оракул просто загружает данные в блокчейн, система всё равно уязвима к ошибкам или манипуляциям. Поэтому большинство систем оракулов проводят валидацию и агрегирование данных до их размещения в блокчейне.
Обычно этот процесс реализуется с участием нескольких нод. Разные ноды отправляют собранные данные, которые затем агрегируются с помощью алгоритмов усреднения или вычисления медианы. Даже если некоторые ноды отправят неверные данные, это не повлияет на итоговый результат.
В некоторых сетях оракулов предусмотрены дополнительные меры безопасности, например:
Эти меры позволяют частично предотвращать злонамеренные манипуляции и повышать качество данных в системах оракулов.
После валидации и агрегирования оракульные ноды отправляют итоговые данные в блокчейн и записывают их в определённые смарт-контракты. Этот процесс часто называют “price feed”.
С точки зрения смарт-контрактов, данные от оракулов поступают не напрямую из внешнего мира, а хранятся в специальном контракте данных в блокчейне. Остальным DeFi-протоколам достаточно обратиться к интерфейсу этого контракта, чтобы получить актуальные данные.
Например, когда лендинговый протокол определяет, требуется ли ликвидация аккаунта, он может выполнять следующую логику:
Таким образом, оракулы становятся ключевой точкой входа данных для on-chain-приложений, позволяя смарт-контрактам автоматически выполнять логику на основе информации из реального мира.
В финансовых приложениях крайне важна своевременность данных. Если цены обновляются слишком медленно, это может привести к задержкам ликвидаций, созданию возможностей для арбитража или даже к системным рискам. Поэтому в системах оракулов обычно реализованы специальные механизмы обновления данных.
Для разных сценариев требования к частоте обновлений различаются. Некоторые протоколы требуют почти мгновенного обновления цен, другие делают ставку на стабильность данных. Для баланса между эффективностью и затратами оракулы обычно используют несколько стратегий обновления.
Часто применяемые механизмы:
При проектировании таких механизмов учитываются сетевые издержки, точность данных и волатильность рынка. Слишком частые обновления значительно увеличивают стоимость on-chain-транзакций, а слишком редкие приводят к существенному отставанию цен.
Поиск баланса между эффективностью, затратами и безопасностью — одна из ключевых задач при проектировании систем оракулов.