Оракул — поставщик данных из внешнего мира в блокчейн.
Программные оракулы обрабатывают данные из Интернета. Например, температура воздуха, стоимость продуктов и товаров, задержки рейсов или поездов и т.д. Информация поступает из онлайн-источников, например API. Оракул извлекает необходимые данные и помещает их в блокчейн.
Аппаратные оракулы отслеживают объекты реального мира с помощью устройств и датчиков. Например, видеокамера с заданной аналитикой на пересечение линии отслеживает автомобиль, въезжающий в определенную зону. Если событие произошло, то оракул фиксирует его в блокчейне. Исходя из данных такого оракула может инициироваться какое-либо событие. В данном случае, например, выписка штрафа и списание токенов с аккаунта владельца автомобиля. Но это делает уже не оракул, а скрипт, который ориентируется на данные такого оракула.
Человеческие оракулы подразумевают, что данные вводит человек.
Оракул можно рассматривать как способ связи блокчейна с реальным миром.
Основная проблема, которая решается с помощью оракулов, заключается в том, что блокчейны могут получить доступ только к данным внутри себя, это важно, чтобы децентрализованные приложения имели доступ только к тем данным, которые хранятся в цепочке блоков, так, чтобы каждое выполнение скрипта приводило к одному и тому же результату во времени. Поэтому децентрализованным приложениям не позволено получать доступ к данным, поступающим из-за пределов блокчейна, например, через веб-сервисы или другие внешние источники данных.
Тем не менее, многим интересным приложениям необходим доступ к внешним данным, например, децентрализованные приложения для страхования, децентрализованные букмекерские системы, финансовые сервисы и прочие.
Решение достаточно простое: если для выполнения децентрализованного приложения необходимы внешние данные, то они должны храниться в блокчейне. Для этого создаются небольшие программы, которые получают доступ к необходимым данным и записывают их в блокчейн. Эти маленькие программы называются оракулами.
Один источник информации может быть небезопасным, если он не имеет должный авторитет или высокий рейтинг. Тем не менее, чтобы держаться подальше от контроля информации и иметь большую безопасность, можно использовать несколько оракулов. Например, получать информацию от десяти оракулов и только если данные 6 из 10 оракулов совпадают, то принимать их. Это и есть консенсус оракулов.