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