Блокчейн-оракулы решают проблему доставки в блокчейн информации из внешнего мира. Но нам важно знать, каким из них мы можем доверять.
В статье о запуске каталога Waves Oracles мы писали о важности оракулов для блокчейна.
Децентрализованные приложения не имеют доступа к данным вне блокчейна. Поэтому создаются небольшие программы – оракулы, – которые получают доступ к необходимым данным внешнего мира и записывают их в блокчейн.
По типу источника данных оракулы можно разделить на три категории: программные, аппаратные и человеческие.
Программные оракулы получают и обрабатывают данные из интернета – такие, как температура воздуха, цены на товары, задержки поездов и самолетов. Информация поступает из онлайн-источников, например API, а оракул извлекает ее и помещает в блокчейн. О том, как сделать простой программный оракул читайте здесь.
Аппаратные оракулы отслеживают объекты реального мира с помощью устройств и датчиков. Например, видеокамера, откалиброванная на пересечение линии, снимает автомобили, въезжающие в определенную зону. Оракул фиксирует факт пересечения линии в блокчейне, и на основании этих данных скрипт децентрализованного приложения может, например, инициировать выписку штрафа и списание токенов с аккаунта владельца автомобиля.
Человеческие оракулы используют данные, введенные человеком. Они считаются наиболее прогрессивными из-за независимого взгляда на результат события.
Недавно мы предоставили инструмент, позволяющий записывать в блокчейн данные оракула по заданной спецификации. Он работает крайне просто: нужно лишь зарегистрировать карточку оракула, заполнив спецификацию. После этого можно публиковать транзакции данных согласно этой спецификации через интерфейс Waves Oracles. Читайте подробнее об инструменте в нашей документации.
Такие стандартизированные инструменты и интерфейсы упрощают жизнь как разработчикам, так и пользователям сервисов на блокчейне. Наш инструмент полезен именно для человеческих оракулов и его можно использовать, например, для записи сертификатов или авторских прав на какие-либо объекты.
Но при использовании оракулов встает вопрос доверия к информации, получаемой от них. Достоверен ли источник? Будут ли данные получены вовремя? Кроме того, есть риск, что оракул обманет пользователей, для получения собственной выгоды преднамеренно предоставив неверную информацию.
В качестве примера рассмотрим оракул, предоставляющий информацию о спортивных событиях для децентрализованной биржи ставок.
Событие — главный бой турнира UFC 242, Хабиб Нурмагомедов против Дастина Порье. По оценке букмекеров Нурмагомедов — явный фаворит поединка. Поставить на его победу можно было с коэффициентом 1,24, что соответствует вероятности 76%. Коэффициент на победу Порье составлял 4,26 (22%), а вероятность ничейного исхода букмекеры оценивали коэффициентом 51,0 (2%).
Скрипт принимает ставки пользователей на все три возможных исхода, пока не получит от оракула информацию о фактическом результате боя. Это – единственный критерий для распределения выигрышей.
Сейчас известно, что победу одержал Нурмагомедов. Однако представим себе, что недобросовестный владелец оракула, заранее планируя обман, сделал ставку на исход с самым выгодным коэффициентом — ничью. Когда банк ставок достиг большого объёма, владелец оракула инициирует запись в блокчейн ложной информации о якобы ничейном результате боя. Скрипт децентрализованной биржи не имеет возможности перепроверить достоверность полученных данных и лишь распределяет выигрыши в соответствии с этими данными.
Если потенциальная прибыль от обмана такого рода выше, чем прогнозируемая выручка честного оракула, а при этом риск обращения в суд невысок, вероятность нечестных действий владельца оракула значительно возрастает.
Одно из возможных решений проблемы — запрос данных от нескольких оракулов и приведение полученных значений к консенсусу. Можно выделить несколько типов консенсуса:
- все оракулы предоставили единую информацию
- большинство оракулов предоставило единую информацию (2 из 3, 3 из 4 и т.п.)
- приведение данных оракулов к среднему значению (возможны варианты, при которых предварительно отбрасываются максимальное и минимальное значение)
- все оракулы предоставили единую информацию с заранее оговоренным допустимым отклонением (например, значения финансовых котировок из разных источников могут отличаться на 0,00001, и получение точного совпадения — задача невыполнимая)
- выбрать из полученных данных только уникальные значения
Вернёмся к нашей децентрализованной биржи ставок. При использовании консенсуса “3 из 4”, один оракул, сообщивший о ничейном исходе боя, не смог бы повлиять на выполнение скрипта при условии, что три других оракула выдали бы достоверную информацию.
Но ведь недобросовестный пользователь может владеть и тремя из четырех оракулов, и тогда он сможет обеспечить решающее большинство.
Борясь за честность оракулов, можно ввести для них рейтинг или систему штрафов за недостоверность данных. Можно пойти и по пути «пряника» и предложить вознаграждение за достоверность. Но никакие меры не позволят полностью избежать, например, накрутки рейтинга или недобросовестного большинства.
Так стоит ли изобретать сложные сервисы, или достаточно будет иметь инструмент для консенсуса, который позволит, как на полке супермаркета, выбрать, например, пять оракулов, предоставляющих нужные данные, задать тип консенсуса и получить результат?
Например, децентрализованному приложению нужны данные температуры в градусах цельсия. В каталоге оракулов мы находим четыре оракула, которые предоставляют такие данные, задаём тип консенсуса «среднее значение» и делаем запрос.
Предположим, оракулы выдали значения: 18, 17, 19 и 21 градусов. Разница в три градуса может оказаться вполне критичной для выполнения скрипта. Сервис обрабатывает результат и получает среднее значение температуры — 18.75 градусов. Эту цифру получит скрипт децентрализованного приложения и будет с ней работать.
В конечном счете решение остаётся за потребителем: доверять ли одному оракулу и использовать его данные, либо строить консенсус нескольких оракулов, выбранных по своему усмотрению.
В любом случае, оракулы данных – сфера достаточно новая. Она находится на том этапе, где сами пользователи могут определить, в каком направлении ей развиваться. Поэтому мы хотим услышать ваше мнение. Нужен ли вышеописанный инструмент для оракулов? Каким вы видите будущее оракулов данных в принципе? Делитесь своим мнением в комментариях и в нашей официальной группе в Telegram.
Автор: RaIvan