Ораклы
Сегодня мы поверхностно пробежимся по ораклам!
Перевод данной статьи - ТЫК (+ небольшие комментарии)
Начнем
Ораклы — это потоки данных, которые соединяют Ethereum с реальной информацией вне сети, чтобы вы могли запрашивать данные в своих смарт-контрактах
А теперь простыми словами. Блокчейн - изолированная от всего мира структура, соответсвенно засунуть в него инфу из реального мира (например прогноз погоды, сам блокчейн же не знает такой информации изначально) нам и помогают эти ораклы, который являются неким мостом между жизнью и блокчейном
Ораклы работают как сетевые API, которые вы можете запрашивать, чтобы получить информацию в свои смарт-контракты. Это может быть что угодно, от информации о ценах до сводок погоды. Оракулы также могут быть двунаправленными и использоваться для «отправки» данных в реальный мир
Пример
Самый простой пример - веб3 казино. Суть проблемы в том, что в блокчейне не может быть случайных значений (если бы они были - система была бы не безопасна). Поэтому чтобы добиться действительно случайных чисел прибегают к ораклам, которые и передают эти случайные числа из реальной жизни
Проблема ораклов
Как мы уже упоминали, транзакции Ethereum не могут напрямую обращаться к данным вне сети. В то же время полагаться на единственный источник достоверной информации для предоставления данных небезопасно и делает децентрализацию смарт-контракта недействительной. Это известно как проблема оракула
Мы можем избежать проблемы с оракулом, используя децентрализованный оракул, который получает данные из нескольких источников; если один источник данных взломан или выйдет из строя, смарт-контракт по-прежнему будет функционировать по назначению
Безопасность
Оракул безопасен настолько, насколько безопасен его источник(и) данных. Если децентрализованное приложение использует Uniswap в качестве оракула для ценового потока ETH/DAI, злоумышленник может изменить цену на Uniswap, чтобы манипулировать пониманием децентрализованного приложения текущей цены. Примером того, как бороться с этим, является система фидов, подобная той, что используется MakerDAO, которая сопоставляет данные о ценах из множества внешних ценовых фидов, а не просто полагается на один источник
Простейший пример архитектуры ораклов
- Делаем Emit в нашем контракте
- Off-chain программа подписывается (обычно с помощью команды JSON-RPC eth_subscribe) на эти конкретные логи
- Off-chain программа продолжает выполнять некоторые задачи, указанные в логах
- Off-chain программа отвечает данными, запрошенными во вторичной транзакции, смарт-контракту
Это способ получения данных 1 к 1, однако для повышения безопасности вы можете децентрализовать способ сбора данных вне сети
Следующим шагом может быть создание сети из этих узлов, выполняющих эти вызовы к различным API и источникам и собирающих данные on-chain