Если упрощать, то блокчейн-оракулы – сторонние сервисы, которые предоставляют #смарт-контракты с информацией из внешних источников. Технически – что-то вроде посредника между блокчейном и внешним миром.
В силу своей структуры, децентрализованные сети не могут получать доступ к информации, которую в них не загрузили. Однако очень часто для их эффективной работы эти данные необходимы.
Вот тут и вступают в дело оракулы. Они не предоставляют данные самостоятельно, но могут запрашивать, анализировать, проверять и передавать дальше информацию из внешних источников. Удачной аналогией могут послужить чувствительные рецепторы человеческого тела – они точно также реагируют на внешние раздражители, точно также передают информацию в анализирующий центр и точно также бесполезны в отрыве от него.
Аналогию можно продолжить и дальше, поскольку некоторые оракулы могут отправлять данные во внешнюю среду – как рефлекторную реакцию организма на какое-нибудь воздействие.
Поэтому для эффективной работы сетей #блокчейн, оракулы необходимы. Именно они отвечают за возможность автоматического восприятия изменения каких-нибудь внешних событий и реакции сети на них.
Пример использования оракула
Допустим, некие Семён и Николай поспорили на счёт того, кто станет победителем чемпионата мира по футболу. Они обговаривают все условия пари и фиксируют с помощью смарт-контракта свои средства, которые потом отойдут победителю. Делается это для того, чтобы никто потом не мог односторонне отказаться от выполнения пари. Теоретически, для той же цели можно было использовать доверенное лицо – именно так и работают многие букмекеры, но наши участники решили обойтись без посредников, которым нужно платить комиссию и которым нет особого доверия.
После окончания ЧМ, смарт-контракт посылает запрос на доверенное приложение, которое и сообщает – кто же побелил. И в зависимости от этого результат, средства автоматически отправляются одному из спорщиков.
Виды оракулов
В зависимости от определенных качеств, оракулы делятся на разные категории. Поэтому каждый можно описать несколькими терминами. Чаще всего используются следующие свойства:
- Источник. Информация получается программным или аппаратным путём?
- Направление передачи. Приём, передача, и то, и другое?
- Степень доверия. Доверенное приложение централизованное или децентрализованное?
- Проверка подлинности. Автоматическая или человеческая?
Рассмотрим каждую из этих групп более подобно.
- Программные/аппаратные. Первые взаимодействуют с онлайн-источниками информации. То есть – с сетью Интернет, частными серверами и базами данных, к которым есть доступ. Обычно они взаимодействуют в режиме реального времени. Их целью могут быть курсы валют или актуальные данные об авиарейсах. Вторые получают информацию с аппаратных датчиков и реагируют исключительно на неё. По сути – переводят реальные события или изменения в информационный формат. Работают не постоянно, а по запросу или реагируют на изменение ситуации. Пример – автоматический отчёт о подъезде транспорта, перевозящего товары.
- Входящие/исходящие. Первые получают информацию извне, отчитываясь, например, об изменении температуры. Вторые могут дополнительно передавать данные на внешние источники. Так, например, если на условный счёт переводятся средства, с помощью исходящего оракула можно автоматически разблокировать смарт-замок, блокируемый до перевода этих самых средств.
- Централизованные/децентрализованные. Первые получают информацию из одного доверенного источника. В простых ситуациях, типа реакции на срабатывание датчика, это полезно, но в более сложных – открывает пространство для злоупотребления из-за наличия только одной точки отказа. Вторые используют данные из нескольких источников, выдавая результат на основании определённого алгоритма консенсуса. Этот способ более устойчив к ошибкам и внешним воздействиям, но дороже, медленнее и сложнее. При этом он не устраняет проблему доверия, а просто перераспределяет её между источниками информации.
- Контрактные/человеческие. Первые обеспечивают исключительно программное взаимодействие оракул-смарт-контракт. Как правило, один оракул связан с одним контрактом. Не лучший способ, если необходимо получать информацию из разных источников, однако такое взаимодействие куда проще адаптировать под различные требования ещё на моменте разработки. Вторые позволяют проверять данные посредством человеческих усилий. Доверенное лицо проверяет подлинность данных и переводит их в определённые смарт-контракты. А за счёт того, что доверенное лицо может использовать криптографические способы подтверждения – у мошенников практически нет шансов влиять на эти данные.
Существующие проблемы
- «Проблема Oracle». Если какой-то оракул окажется скомпрометирован, то и связанный с ним смарт-контракт – тоже. Поскольку нет доверия поступающей информации. Однако просто так отключить смарт-контракт – проблематично, если это не предусмотрено на момент его заключения.
- Слабая защита. #Оракулы – внешние алгоритмы, поэтому их не защищает внутренний механизм защиты блокчейна. Поэтому именно их чаще всего и избирают для атак. Особенно «исходящие».
- Атака «Man-in-the-middle». Если злоумышленник получит доступ к каналу данных между оракулом и смарт-контрактом, он может внести в него искажения или полностью их фальсифицировать.
Выводы
Блокчейн-оракулы – необходимый элемент функционирования #децентрализованных сетей, серьёзно расширяющий потенциал их использования. Однако над их безопасностью, надёжностью и отказоустойчивостью ещё стоит поработать. например, создав так называемые «децентрализованные оракулы», обладающие многими свойствами, характерными для блокчейн-сетей.