Способности, не находящие применения, превращаются в ничто.
Стен Надольный
Оракулы
Оракул — это поставщик информации, который по запросу контракта предоставляет из оффчейн мира достоверные данные, необходимые для корректной работы контракта. Основные требования к оракулу — это достоверность и полнота предоставляемой информации. Здесь под достоверностью подразумевается возможность подтвердить/проверить валидность данных, а под полнотой — способность предоставлять данные о широком круге событий из реального мира. Отметим отдельно, что оракул — это не источник информации, это именно её поставщик в блокчейн. Таким образом, выбор источника информации — это один из ключевых параметров оракула, ведь для того, чтобы оракул был достоверным и полным, источник тоже должен быть достоверным и полным (об источниках поговорим в следующем разделе).
Начнем со свойства достоверности оракула. На сегодняшний день существует два основных подхода к достижению достоверности оракулов. Первый — это консенсус оракулов. Как следует из названия, в этом подходе используется консенсус нескольких независимых валидаторов. Главная проблема этого подхода (с точки зрения достоверности) — в создании сети независимых валидаторов. С одной стороны, если мы будем выбирать/назначать участников консенсуса (оракулов), то они будут зависимы от механизма выбора/назначения. Таким образом, централизация сохранится, хотя, конечно, в меньшей степени и в другом обличии. С другой стороны, если участником консенсуса может стать любой желающий, то система становится уязвимой к Sybil-атаке. Кроме того, существует мнение, что компрометировать (взломать, подкупить) несколько мелких участников консенсуса может быть легче, чем компрометировать одного крупного валидатора, так как у крупного игрока меры безопасности значительно серьезней, а репутационные издержки значительно выше.
Компания Oraclize предоставляет альтернативное консенсусу оракулов решение: пользователь сам выбирает источник информации в сети Internet. А для доказательства корректной работы оракула используются TLSNotary-доказательства. Это криптографические доказательства того, что данные, полученные из выбранного источника, переданы смарт-контракту в неизмененном виде.
На данный момент проверить эти доказательства можно в интернете, используя сетевой монитор для Ethereum (на момент написания статьи работает нестабильно). В будущем планируется реализовать возможность проверки доказательств TLSNotary непосредственно контрактом в сети Ethereum.
Важно отметить, что у обоих подходов есть проблема доверия источнику/-кам информации: оба они в какой-то степени гарантируют нам честность передачи данных от источника к контракту, однако не гарантируют честность источника (даже если мы сами его выбрали).
Источники информации
В начале этого раздела затронем тему полноты предоставляемых оракулом данных. Достижение полноты значит расширение круга источников информации, а это влечет за собой еще большие вопросы к достоверности этих данных. Рассмотрим два простых примера: если вашему контракту необходима информация о текущем курсе ETH/USD, то в качестве источников можно рассматривать крупные криптовалютные биржи, консенсус которых будет достаточно достоверным. А в случае, если контракту необходимо знать, горит ли свет в вашей спальне, найти независимых очевидцев будет крайне сложно. Можно использовать физический источник, например, камеру в спальне, однако при желании её легко обмануть: наденьте на камеру мешок, и в вашей спальне для неё будет всегда темно. Таким образом, при увеличении полноты предоставляемой оракулом информации проблема поиска достоверных источников встает еще более остро.
Самый естественный источник информации — централизованный. К такому подходу мы привыкли в обычной жизни: новости узнаем на любимом сайте, курс доллара — на сайте ЦБ. Большинство из нас слепо верит этим централизованным источникам, и эта вера чаще всего оправдана, ведь репутационные издержки для таких крупных компаний превышают потенциальную выгоду, которую можно извлечь, предоставив вам ложную информацию. Тут есть два «но». Во-первых, достоверность: даже имея дело с надежным централизованным источником, мы все еще оперируем верой, а не знанием. Во-вторых, что более важно, полнота: использование централизованного источника можно считать надежным подходом только для узкого круга резонансных событий.
Первый способ обойти недостатки централизованного источника — использовать консенсус источников. Подобный подход мы уже обсуждали выше, когда говорили о консенсусе оракулов. Как и в случае с оракулами, этот подход улучшает и достоверность, и полноту предоставляемой информации, однако его положительный эффект ограничен и имеет свои недостатки (см. предыдущий раздел).
Еще один подход к решению проблемы источников информации — это косвенный метод. Идея заключается в том, чтобы извлекать информацию об интересующем нас событии из косвенных источников.
Эти источники будут разными для каждого вида событий: для температуры в Москве — фото из инстаграма с соответствующей геопозицией и датой, для результата матча — посты в социальных сетях с соответствующими тегами и датой, и т.д. Успехи последних лет в области машинного обучения, вероятно, позволят нам с приемлемой точностью определять исходы прошедших событий по косвенным источникам. Какие модели машинного обучения для этого применимы, какой будет точность, независимы ли косвенные источники — все эти вопросы должны рассматриваться для каждого конкретного события отдельно, а факт их разрешимости и будет критерием применимости косвенного метода для этого события.
Для относительно простых задач, вроде определения результата матча по достаточной выборке постов любителей спорта, эти вопросы кажутся решаемыми. Предполагается, что контракт будет обращаться к узлу, на котором производятся вычисления (извлечение прогноза из косвенных источников). Достоверность вычислений предлагается подтверждать криптографически, как это реализовано, например, в проекте Golem.
Этот подход — второй шаг в сторону полноты оракулов. Это еще не про свет в спальне, но уже про погоду, про результаты выборов, про успешность запуска Falcon Heavy.
Для полноты картины источников информации затронем тему рынков предсказаний, таких как Augur. Рынок использует «мудрость толпы» для предсказания будущих событий. Пользователи предсказывают возможный исход этих событий, покупая доли вознаграждения за правильно угаданный результат (победители разделят призовой фонд пропорционально размерам своих ставок). Таким образом, этот подход подразумевает экономическую мотивацию для участников предсказания: за правильное предсказание пользователь получает вознаграждение, а в случае неправильного теряет вложенные средства. Прогноз в данном случае — это средневзвешенное ожидание всех пользователей. Использование рынков предсказаний довольно сильно увеличивает полноту предоставляемой информации, ведь предсказывать можно что угодно (если найдется достаточно желающих), а достоверность обеспечивает экономическая мотивация участников предсказания.
Однако не все так радужно, как может показаться на первый взгляд. Во-первых, предсказание — это лишь ожидание участников рынка (можно привести много примеров событий, наступления которых никто не ожидал). Во-вторых, в такой модели возможны манипуляции предсказанием, если издержки на изменение предсказания на ложное меньше, чем прибыль от неправильной работы контракта. Например, если в контракте предполагается крупная выплата в случае события A, а факт происхождения этого события определяет рынок предсказаний с небольшим оборотом средств, то злоумышленник может сфальсифицировать событие А, потратив лишь часть полученной выгоды на манипуляцию предсказанием.
Заключение
Значимость оракулов для технологии смарт-контрактов трудно переоценить. Оракул служит поставщиком информации от источника к контракту. И если существующие на сегодняшний день решения обеспечивают достаточно надежную передачу этой информации, то проблема с её изначальной достоверностью до сих пор остается нерешённой. Создание/выбор достоверных и полных источников информации – это тот последний рубеж, который отделяет смарт-контракты от повсеместного распространения. Учитывая активное развитие блокчейн-технологий, можно рассчитывать на хотя бы частичное преодоление этого рубежа в ближайшие годы.
Комментарии (29)
stanislavkulikov
02.08.2018 15:24Создание/выбор достоверных и полных источников информации – это тот последний рубеж, который отделяет смарт-контракты от повсеместного распространения.
Последний рубеж? Да это краеугольный камень. В обычных контрактах и договорах всё держится на нотариусах. А доверие к нотариусам гарантирует судебная система. Так что как ни крути, а от классической централизованной системы пока что никуда не уйти.DryginAlexander Автор
02.08.2018 15:47Здесь, как и всегда, не всё так одназначно: в каких-то вопросах уже удалось уйти (Bitcoin, как успешный пример децентрализации денег), в каких-то возможно будет уйти в будущем (в том числе благодаря развитию оракулов). И в тоже время, есть примеры примеры, в которых отказаться от централизации крайне сложно.
salkat
02.08.2018 17:36Это биткойн-то успешный? В чём же его успехи? Какой процент мировых финансовых транзаций проходит через биткойн? А какой процент из них — не оплата незаконных услуг, а что-то легальное?
DryginAlexander Автор
02.08.2018 18:42На мой взгляд, успешность в том, что это действительно децентрализованная валюта, которая относительно стабильно используется уже 9.5 лет. Абсолютный объём транзакций проходящих через Bitcoin достаточный, чтобы констатировать успешное прохождение проверки массовым использованием. А относительный объём, как и вопрос легальности вообще не хотел бы тут обсуждать — ведь мы говорим о технологии.
supadoctor
02.08.2018 15:50Оракул — это поставщик информации, который по запросу контракта предоставляет из оффчейн мира достоверные данные, необходимые для корректной работы контракта.
Если честно, то не очень понял в чем необходимость таких данных и почему без них никак… А можно какой-то пример/кейс, поясняющий суть отношения информация -> смарт-контракт?DryginAlexander Автор
02.08.2018 16:01+1Примеров можно придумать множество, из того, что сразу приходит в голову: вы заключили пари с товарищем о том, кто выйграет ЧМ2022. Описали соответствующую логику в коде смарт-контракта (победитель пари получит взносы обоих участников). Когда турнир закончится контракт должен выплатить выигрыш угадавшему, но откуда контракт узнает, какая команда на самом деле победила? Т.е. любой логике, описывающей процессы реального мира, нужно знать, что в этом мире происходит.
modestguy
02.08.2018 18:49Вообще технология блокчейна проста как дважды два… почему из неё сделали такой культ пока не совсем понятно. Революция. Но оказывается (в кулуарах айти-сообщества), что на пути ещё преграды в виде оракулов и прочего…
Мне кажется значимость этой технологии пока сильно преувеличина. Практичности, кроме криптокотят, «цифровых денег» и ICO маловато. А если посмотреть интервью того, же Виталика Бутерина, он чуть ли не каждый раз говорит, что это революция, что скоро все бухгалтера, юристы и прочие люди будут ненужны. Я искренне надеюсь, что так и будет. Тогда возможно у нас будет и честно правительство и честные выборы и потребность в третьих лицах в заключении юридических сделок отпадёт… Но пока снова на пути Оракулы) Будем ждать.
willyd
02.08.2018 22:18Сейчас оракул, потом будет еще что-то типа независимого арбитража, тоже на блокчейне.
Вот только дело в том, что если бы был такой оракул, то и блокчейн особо не нужен. Точнее говоря его может заменить любой алгоритм на любой финансовой системе.DryginAlexander Автор
03.08.2018 12:04Считаю, что это всё же разные вещи(одна другую не заменит): допустим есть некий абсолютно честный источник информациии(оракул), теперь на основе этой информации небходимо как-то действовать(перевести кому деньги, дать кому-то права на что-то и т.д.) — именно эту задачу решают смарт-контракты, безоговорочно действуя согласно логике, описанной в них. А «любой алгоритм на любой финансовой системе» не исключает возможность цензурирования информации и даже изменения условий контракта постфактом.
willyd
03.08.2018 12:20Эм. The DAO?!
В существующих онлайн системах, я могу откатить документ, если он был исполнен с ошибкой, будь она человеческой или машинной, без необходимости устраивать голосование всех участников для достижения консенсуса и последующего форка.
Я могу ошибаться, знающие люди пусть меня поправят, но в некоторых продуктах SAP просто невозможно провести изменения созданного документа, для это необходимо создавать новый документ.
Все равно, все в итоге сводится к силе и стабильности правовой системы, те есть стороннего арбитража. И поверьте, вы сами не захотите, чтобы вас судили «12 алгоритмов на блокчейне».DryginAlexander Автор
03.08.2018 13:44Глобальное и повсеместное DAO — это конечно спорный вопрос, да и технически пока не реализуемый(и будет ли реализуем?). Однако сейчас речь о вещах попроще: о одноразовых или ограниченных во времени договорах между контрагентами (выполнение работы, продажи, аренда, пари и т.д.).
willyd
03.08.2018 15:06А это плохо работает сейчас?
Или вы думаете, что блокчейн первый, который обещает навести порядок между контрагентами? Когда палка появилась не было громких заявлений, о том насколько она безопасна и как она поможет продавцам и покупателям?
adictive_max
03.08.2018 12:29не исключает возможность цензурирования информации
А что тут имеется в виду? Любая заинтересованная сторона может проверить информацию у оракула по независимым каналам, и в случае чего обратиться в уже существующие и отлаженные инстанции, кто и что там будет «цензурировать»?
и даже изменения условий контракта постфактом.
Только в мире реального бизнеса весьма востребованный кейс — это изменение и дописывание контракта прямо в процессе его выполнения (с согласия обеих сторон, разумеется). То есть или изначально все места под расширения закладывать в смарт-контракт, или городить кучу контрактов-заплаток.DryginAlexander Автор
03.08.2018 13:29На мой взгляд, идея децентрализации в принципе существует потому, что «существующие и отлаженные инстанции» в той или иной степени подвержены цензуре и не исключают изменения правил игры во время игры.
А что касается изменения и дописывания контракта прямо в процессе его выполнения, то не вижу особой проблемы в том, чтобы заложить соответствующую логику в контракт изначально(это уже сегодня успешно делают).willyd
03.08.2018 15:10Ну так одностороннее изменение договорных условий заложено в сам договор, скажем, продавцом. С чего вы взяли, что такое не заложат в алгоритм? И все опять будет зависить от вашего решения — принимать такой договор или смарт-контракт, или нет.
Ну посмотрите на тот же hashflare, которые тут расписывали, как круты контракты, но при этом в одностороннем порядке изменили условия.DryginAlexander Автор
03.08.2018 16:27все опять будет зависить от вашего решения — принимать такой договор или смарт-контракт, или нет
Это очевидно так, и как может быть по другому? Отличие в том, что смарт-контракт будет выполнен безоговорочно с математическими гарантиями, в то время как выполнение бумажного договора гарантируют «существующие и отлаженные инстанции». Вопрос «кому веры больше?» кажется риторическим…Gryphon88
03.08.2018 16:38Можете крипточайнику пояснить вот этот момент:
смарт-контракт будет выполнен безоговорочно с математическими гарантиями
Допустим, мы с Вами заключили контракт на поставку чего-то: Вы поставили мне товар, а я перепродал, вывел деньги, мило улыбнулся и подал на банкротство или потерялся, ну или просто оказался в момент оплаты без денег, несмотря на хорошую историю. Как в таком случае помогут «математические гарантии»?DryginAlexander Автор
03.08.2018 17:42Все проблемы, вроде
Вы поставили мне товар, а я перепродал, вывел деньги, мило улыбнулся и подал на банкротство или потерялся, ну или просто оказался в момент оплаты без денег, несмотря на хорошую историю.
решаются на этапе состовления контракта. В этом конкретном примере, на момент подписания контракта в нём будут заморожены ваши деньги за чайник, а дальше, в зависимости от того получите вы чайник или нет, они будут выплачены продавцу, или вернутся вам(если чайник не будет доставлен в срок). Математика гарантирует корректное выполнение второго шага(выплата/возврат вознаграждения). Главная проблема тут в том, чтобы контракт узнал, что вы получили чайник(продавец выполнил свои обязательства) — для этого нужны оракулы и об этом собственно статья.Однако любой логике, описывающей процессы реального мира, нужно знать, что в этом мире происходит.
Gryphon88
03.08.2018 17:56Понял. Варианты без заморозки денег существуют? Про подтверждение события это само собой понятно, в статью я полез смотреть как различают надёжный и ненадёжный оракул, есть ли пул оракулов, как проходит арбитраж и консенсус.
willyd
03.08.2018 18:38Ну вы серьезно. Вы же сейчас описали paypal, который я вам приводил в пример.
Так вот вопрос. Зачем тут блокчейн, если та же виза и палка будут иметь эту так необходимую вам информацию?
willyd
03.08.2018 18:46Это слегка наивно.
смарт-контракт будет безоговорочно с математическими гарантиями
Он будет выполнен безоговорочно только при жестком блокировании средств. То есть, это — эскроу сервис. И они уже давно есть.
в то время как выполнение бумажного договора гарантируют «существующие и отлаженные инстанции»
Тем не менее, любой человек, который будет считать, что его обманули по смарт контракту, обратиться в эти самые инстанции.
adictive_max
04.08.2018 04:36Всё таки объясните, пожалуйста, что вы имеете в виду под словом «цензура»?
Исполнитель может «по особенному» воспринять данные от оракула ил в одностороннем порядке изменить договор?
Ну так это подсудное дело, в зависимости от обстоятельств, вплоть до уголовки.
Суд может «по особенному» воспринять данные от оракула?
Так если суд не аффилирован ни с одной из сторон, ему нет резона что-то «цензурировать», это только лишний геморрой на ровном месте, а если аффилирован, то никакие «математические гарантии» вас от беспредела не спасут.
alatushkin
03.08.2018 07:38Смарт-контракты не изменили мир вовсе не по этому, а по целому ряду других причин в комплексе.
Касательно смарт-контрактов и оракулов (пока юристы из Oracle не обратили внимания на этот вопрос): Гики часто делают ставку на полностью и безусловно техническое решение проблемы (это хорошо видно по «наивным» подходам к реализации тех или иных процесов на смарт-контрактах), но в случае с условным Ораклайз — гарантией честности может выступать более простые механизмы: деньги/прибыль + конкуренция.
Если ты сервис который предоставляет данные и зарабатывает на этом, то репутация -твой единственный актив. Если случится что ты умышленно или по просьбе слукавишь в данных — конкуренты сделают это известным рынку и бизнесс исчезнет.
Соответственно -это и будет гарантом твоей «честности». И чем крупнее величина доходов бизнеса -тем в вопросах (контрактах) на более крупные суммы можно тебе доверять.
Ну и +старое как мир страхование рисков.
DryginAlexander Автор
03.08.2018 12:21Не могли бы вы немного раскрыть фразу «по целому ряду других причин в комплексе»?
Репутационные модели консенсуса имеют место быть, однако в конкретных реализациях крайне сложно найти баланс между централизацией и уязвимостью к Sybil-атакам. Об этом вскользь говорится в статье(консенсус оракулов) — спасибо за комментарий, возможно стоит подробно осветить эту тему в отдельной статье.
dempfi
03.08.2018 09:04+1Для тех, кто интересуется темой смарт-контрактов, ответ на вопрос, заданный в заголовке, лежит на поверхности: на сегодняшний день контракты не имеют достоверного и полного источника информации о происходящем в реальном мире.
Я склонен думать что есть более серьезная и ортогональная причина малого распространения смартконтрактов — приватность.
Смартконтракты и данные в них абсолютно публичны что делает невозможным использование чисто смартконтрактов в реальном бизнесе. Для решения проблемы приходится добавлять оффчейн централизованные хранилища или другие централизованные ухищрения, которые, в общем превращают использование смартконтрактов просто в маркетинг.
Правда есть что шанс что секретные контракты энигмы решат таки проблему, но энигма и ее секретные контракты пока очень сырые.
DryginAlexander Автор
03.08.2018 12:40Приватность критически важна во многих случаях, тут спорить глупо. Однако, без источников информации не представляется возможным реализовать даже те случаи, где приватность не так важна. Поэтому я склоняюсь к тому, что приватность всё же проблема второго этапа. Спасибо, что подкинули идею для будущей статьи.
robux
03.08.2018 17:30Во-первых, в смарт-контракте можно прописать сами источники информации (в виде API).
Во-вторых, прописать третьи стороны, подтверждающие этапы и двигающие смарт-контракт на следующие шаги.
Реальный пример:
Покупатель делает заказ ботинок у интернет-продавца, но оплачивает в 3 этапа:
- 10% предоплата, чтобы показать серьезность намерения
- 70% при получении посылки в почтовой службе
- 20% после осмотра ботинок и одобрения заказа в личном кабинете.
Если заказ в течении 3 месяцев не получен на почте — 10% возвращаются покупателю.
Если заказ в течении 2 недель после получения посылки не одобрен и не отвергнут в личном кабинете, то 20% списываются.
Если заказ в течении 2 недель [после получения посылки] отвергнут (например, ботинки не те), то покупатель ставит "нет" в кабинете и управление контрактом переходит в арбитраж — заранее оговорённой третьей стороне, разруливающий конфликт в "ручном" режиме.
Так вот. Получение (или не получение) на почте можно отслеживать по веб-трекеру (или API-трекеру), который предоставляет почта.
Подтверждение отслеживать, либо по галочке в личном кабинете (на третичном узле, чтобы исключить махинации), либо по таймауту. Это тоже просто.
А вот включение "арбитража" и "ручной режим", это уже более сложный случай. Третичный арбитр должен выслушать стороны и проследить, чтобы они договорились (замена товара, возврат товара, возврат денег и т.д.). Также таких арбитров может быть прописано несколько (например, 1 от продавца и 1 от покупателя), и они должны придти к консенсусу. И ещё: арбитры должны получать свой процент за "разруливание", например 3% от сделки со счета продавца, если виновен продавец (прислал не тот товар), или 3% со счета покупателя (клеветал на товар). Кроме получения гешефта, арбитры могут/должны выставлять сторонам оценки, влияющие на их рейтинг.
Оперативную работу на обслуживание "триггеров" активных смарт-контрактов и движению их по шагам возложить на узлы p2p-сети.
Вот как-то так я вижу работу смарт-контрактов. Без третичных сторон (трекера почты, наличие ЭЦП сторон на заданных в контрактах узлах), которых стороны выбирают добровольно и произвольно, смарт-контракты работать не будут.
Ещё считаю, что нельзя вводить каких-то "неполживых" "оракулов", имеющих "сертификаты" "независимых" корпоративных арбитров.
Хотя, похоже, в реальности всё к этому и придёт. И пипл схавает.TimsTims
04.08.2018 01:57Получение (или не получение) на почте можно отслеживать по веб-трекеру (или API-трекеру)
Вся проблема в виртуальных машинах ethereum(evm). Они все работают немного в разное время, и обязательно все должны перепроверить, что действительно посылка была доставлена. Представьте себе, что сайт почты вдруг неработает. Тогда у одних, кто успел получить данные будет ситуация:«посылка доставлена», а у других «посылка недоставлена». Добавьте сюда китайский файрволл, из-за которого недоступна половина интернета и роскомнадзор, и у вас окажется рассинхронизация в данных. А представьте себе, что вдруг не дай бог — почта вдруг изменит API, и тогда все ваши вылизанные смарт-контракты не смогут проверить условия.
Обо всём этом и идет речь в статье — кому верить, где правда. Потому-что блокчейн не может существовать с недомолвками — у одних так, у других так.
Костыльное и пока единственное рабочее решение — это записывать результаты наблюдений обратно в блокчейн, чтобы любая EVM могла полагаться на эти данные в любое время, хоть через 10 лет всё перепроверить.
Но тут уже встает другой вопрос — если кто-то может записывать эти «надёжные» данные, то можно ли ему верить, а не сжульничает ли он в свою пользу?
Третичный арбитр должен выслушать стороны и проследить, чтобы они договорились
Ну это вы вообще реальный мир описали. Банки, суды, законы.
ABy
ChainLink 1000$ EOY?