Для тех, кто интересуется темой смарт-контрактов, ответ на вопрос, заданный в заголовке, лежит на поверхности: на сегодняшний день контракты не имеют достоверного и полного источника информации о происходящем в реальном мире. Вследствие этого складывается прескверная ситуация: мы можем описать в смарт-контракте сложную логику, а блокчейн обеспечит нам её безоговорочное исполнение. И вот, казалось бы, мы в шаге от того, чтобы избавиться от необходимости в третьей стороне при заключении договоров — именно это имелось в виду под словами «изменить мир» в заголовке. Однако любой логике, описывающей процессы реального мира, нужно знать, что в этом мире происходит. Таким образом, от «революции доверия» нас отделяет последняя преграда в виде отсутствия поставщиков информации или оракулов, как их называют в мире смарт-контрактов. Решение этой задачи дало бы колоссальный импульс распространённости и применимости смарт-контрактов. В противном случае эта технология рискует навсегда остаться лишь площадкой для реализации ICO.
![](https://habrastorage.org/r/w780q1/webt/jb/pq/i5/jbpqi5gccl28z4ywi5lxo86st8o.jpeg)
Способности, не находящие применения, превращаются в ничто.
Стен Надольный
Оракул — это поставщик информации, который по запросу контракта предоставляет из оффчейн мира достоверные данные, необходимые для корректной работы контракта. Основные требования к оракулу — это достоверность и полнота предоставляемой информации. Здесь под достоверностью подразумевается возможность подтвердить/проверить валидность данных, а под полнотой — способность предоставлять данные о широком круге событий из реального мира. Отметим отдельно, что оракул — это не источник информации, это именно её поставщик в блокчейн. Таким образом, выбор источника информации — это один из ключевых параметров оракула, ведь для того, чтобы оракул был достоверным и полным, источник тоже должен быть достоверным и полным (об источниках поговорим в следующем разделе).
![](https://habrastorage.org/r/w780q1/webt/qp/ux/ti/qpuxtimrmzkj0z7ym4ku1sz7xmy.jpeg)
Начнем со свойства достоверности оракула. На сегодняшний день существует два основных подхода к достижению достоверности оракулов. Первый — это консенсус оракулов. Как следует из названия, в этом подходе используется консенсус нескольких независимых валидаторов. Главная проблема этого подхода (с точки зрения достоверности) — в создании сети независимых валидаторов. С одной стороны, если мы будем выбирать/назначать участников консенсуса (оракулов), то они будут зависимы от механизма выбора/назначения. Таким образом, централизация сохранится, хотя, конечно, в меньшей степени и в другом обличии. С другой стороны, если участником консенсуса может стать любой желающий, то система становится уязвимой к Sybil-атаке. Кроме того, существует мнение, что компрометировать (взломать, подкупить) несколько мелких участников консенсуса может быть легче, чем компрометировать одного крупного валидатора, так как у крупного игрока меры безопасности значительно серьезней, а репутационные издержки значительно выше.
Компания Oraclize предоставляет альтернативное консенсусу оракулов решение: пользователь сам выбирает источник информации в сети Internet. А для доказательства корректной работы оракула используются TLSNotary-доказательства. Это криптографические доказательства того, что данные, полученные из выбранного источника, переданы смарт-контракту в неизмененном виде.
![](https://habrastorage.org/r/w780q1/webt/d2/bi/br/d2bibr-en41kmqiyvwega_meej0.jpeg)
На данный момент проверить эти доказательства можно в интернете, используя сетевой монитор для Ethereum (на момент написания статьи работает нестабильно). В будущем планируется реализовать возможность проверки доказательств TLSNotary непосредственно контрактом в сети Ethereum.
Важно отметить, что у обоих подходов есть проблема доверия источнику/-кам информации: оба они в какой-то степени гарантируют нам честность передачи данных от источника к контракту, однако не гарантируют честность источника (даже если мы сами его выбрали).
В начале этого раздела затронем тему полноты предоставляемых оракулом данных. Достижение полноты значит расширение круга источников информации, а это влечет за собой еще большие вопросы к достоверности этих данных. Рассмотрим два простых примера: если вашему контракту необходима информация о текущем курсе ETH/USD, то в качестве источников можно рассматривать крупные криптовалютные биржи, консенсус которых будет достаточно достоверным. А в случае, если контракту необходимо знать, горит ли свет в вашей спальне, найти независимых очевидцев будет крайне сложно. Можно использовать физический источник, например, камеру в спальне, однако при желании её легко обмануть: наденьте на камеру мешок, и в вашей спальне для неё будет всегда темно. Таким образом, при увеличении полноты предоставляемой оракулом информации проблема поиска достоверных источников встает еще более остро.
Самый естественный источник информации — централизованный. К такому подходу мы привыкли в обычной жизни: новости узнаем на любимом сайте, курс доллара — на сайте ЦБ. Большинство из нас слепо верит этим централизованным источникам, и эта вера чаще всего оправдана, ведь репутационные издержки для таких крупных компаний превышают потенциальную выгоду, которую можно извлечь, предоставив вам ложную информацию. Тут есть два «но». Во-первых, достоверность: даже имея дело с надежным централизованным источником, мы все еще оперируем верой, а не знанием. Во-вторых, что более важно, полнота: использование централизованного источника можно считать надежным подходом только для узкого круга резонансных событий.
Первый способ обойти недостатки централизованного источника — использовать консенсус источников. Подобный подход мы уже обсуждали выше, когда говорили о консенсусе оракулов. Как и в случае с оракулами, этот подход улучшает и достоверность, и полноту предоставляемой информации, однако его положительный эффект ограничен и имеет свои недостатки (см. предыдущий раздел).
Еще один подход к решению проблемы источников информации — это косвенный метод. Идея заключается в том, чтобы извлекать информацию об интересующем нас событии из косвенных источников.
![](https://habrastorage.org/r/w780q1/webt/n_/wo/xo/n_woxozjz8uwgxufk1q9pjdfr-s.jpeg)
Эти источники будут разными для каждого вида событий: для температуры в Москве — фото из инстаграма с соответствующей геопозицией и датой, для результата матча — посты в социальных сетях с соответствующими тегами и датой, и т.д. Успехи последних лет в области машинного обучения, вероятно, позволят нам с приемлемой точностью определять исходы прошедших событий по косвенным источникам. Какие модели машинного обучения для этого применимы, какой будет точность, независимы ли косвенные источники — все эти вопросы должны рассматриваться для каждого конкретного события отдельно, а факт их разрешимости и будет критерием применимости косвенного метода для этого события.
Для относительно простых задач, вроде определения результата матча по достаточной выборке постов любителей спорта, эти вопросы кажутся решаемыми. Предполагается, что контракт будет обращаться к узлу, на котором производятся вычисления (извлечение прогноза из косвенных источников). Достоверность вычислений предлагается подтверждать криптографически, как это реализовано, например, в проекте Golem.
![](https://habrastorage.org/r/w780q1/webt/lo/27/m-/lo27m-iwvkfk_iiuz5fclf-pvby.jpeg)
Этот подход — второй шаг в сторону полноты оракулов. Это еще не про свет в спальне, но уже про погоду, про результаты выборов, про успешность запуска Falcon Heavy.
Для полноты картины источников информации затронем тему рынков предсказаний, таких как Augur. Рынок использует «мудрость толпы» для предсказания будущих событий. Пользователи предсказывают возможный исход этих событий, покупая доли вознаграждения за правильно угаданный результат (победители разделят призовой фонд пропорционально размерам своих ставок). Таким образом, этот подход подразумевает экономическую мотивацию для участников предсказания: за правильное предсказание пользователь получает вознаграждение, а в случае неправильного теряет вложенные средства. Прогноз в данном случае — это средневзвешенное ожидание всех пользователей. Использование рынков предсказаний довольно сильно увеличивает полноту предоставляемой информации, ведь предсказывать можно что угодно (если найдется достаточно желающих), а достоверность обеспечивает экономическая мотивация участников предсказания.
Однако не все так радужно, как может показаться на первый взгляд. Во-первых, предсказание — это лишь ожидание участников рынка (можно привести много примеров событий, наступления которых никто не ожидал). Во-вторых, в такой модели возможны манипуляции предсказанием, если издержки на изменение предсказания на ложное меньше, чем прибыль от неправильной работы контракта. Например, если в контракте предполагается крупная выплата в случае события A, а факт происхождения этого события определяет рынок предсказаний с небольшим оборотом средств, то злоумышленник может сфальсифицировать событие А, потратив лишь часть полученной выгоды на манипуляцию предсказанием.
Значимость оракулов для технологии смарт-контрактов трудно переоценить. Оракул служит поставщиком информации от источника к контракту. И если существующие на сегодняшний день решения обеспечивают достаточно надежную передачу этой информации, то проблема с её изначальной достоверностью до сих пор остается нерешённой. Создание/выбор достоверных и полных источников информации – это тот последний рубеж, который отделяет смарт-контракты от повсеместного распространения. Учитывая активное развитие блокчейн-технологий, можно рассчитывать на хотя бы частичное преодоление этого рубежа в ближайшие годы.
![](https://habrastorage.org/webt/jb/pq/i5/jbpqi5gccl28z4ywi5lxo86st8o.jpeg)
Способности, не находящие применения, превращаются в ничто.
Стен Надольный
Оракулы
Оракул — это поставщик информации, который по запросу контракта предоставляет из оффчейн мира достоверные данные, необходимые для корректной работы контракта. Основные требования к оракулу — это достоверность и полнота предоставляемой информации. Здесь под достоверностью подразумевается возможность подтвердить/проверить валидность данных, а под полнотой — способность предоставлять данные о широком круге событий из реального мира. Отметим отдельно, что оракул — это не источник информации, это именно её поставщик в блокчейн. Таким образом, выбор источника информации — это один из ключевых параметров оракула, ведь для того, чтобы оракул был достоверным и полным, источник тоже должен быть достоверным и полным (об источниках поговорим в следующем разделе).
![](https://habrastorage.org/webt/qp/ux/ti/qpuxtimrmzkj0z7ym4ku1sz7xmy.jpeg)
Начнем со свойства достоверности оракула. На сегодняшний день существует два основных подхода к достижению достоверности оракулов. Первый — это консенсус оракулов. Как следует из названия, в этом подходе используется консенсус нескольких независимых валидаторов. Главная проблема этого подхода (с точки зрения достоверности) — в создании сети независимых валидаторов. С одной стороны, если мы будем выбирать/назначать участников консенсуса (оракулов), то они будут зависимы от механизма выбора/назначения. Таким образом, централизация сохранится, хотя, конечно, в меньшей степени и в другом обличии. С другой стороны, если участником консенсуса может стать любой желающий, то система становится уязвимой к Sybil-атаке. Кроме того, существует мнение, что компрометировать (взломать, подкупить) несколько мелких участников консенсуса может быть легче, чем компрометировать одного крупного валидатора, так как у крупного игрока меры безопасности значительно серьезней, а репутационные издержки значительно выше.
Компания Oraclize предоставляет альтернативное консенсусу оракулов решение: пользователь сам выбирает источник информации в сети Internet. А для доказательства корректной работы оракула используются TLSNotary-доказательства. Это криптографические доказательства того, что данные, полученные из выбранного источника, переданы смарт-контракту в неизмененном виде.
![](https://habrastorage.org/webt/d2/bi/br/d2bibr-en41kmqiyvwega_meej0.jpeg)
На данный момент проверить эти доказательства можно в интернете, используя сетевой монитор для Ethereum (на момент написания статьи работает нестабильно). В будущем планируется реализовать возможность проверки доказательств TLSNotary непосредственно контрактом в сети Ethereum.
Важно отметить, что у обоих подходов есть проблема доверия источнику/-кам информации: оба они в какой-то степени гарантируют нам честность передачи данных от источника к контракту, однако не гарантируют честность источника (даже если мы сами его выбрали).
Источники информации
В начале этого раздела затронем тему полноты предоставляемых оракулом данных. Достижение полноты значит расширение круга источников информации, а это влечет за собой еще большие вопросы к достоверности этих данных. Рассмотрим два простых примера: если вашему контракту необходима информация о текущем курсе ETH/USD, то в качестве источников можно рассматривать крупные криптовалютные биржи, консенсус которых будет достаточно достоверным. А в случае, если контракту необходимо знать, горит ли свет в вашей спальне, найти независимых очевидцев будет крайне сложно. Можно использовать физический источник, например, камеру в спальне, однако при желании её легко обмануть: наденьте на камеру мешок, и в вашей спальне для неё будет всегда темно. Таким образом, при увеличении полноты предоставляемой оракулом информации проблема поиска достоверных источников встает еще более остро.
Самый естественный источник информации — централизованный. К такому подходу мы привыкли в обычной жизни: новости узнаем на любимом сайте, курс доллара — на сайте ЦБ. Большинство из нас слепо верит этим централизованным источникам, и эта вера чаще всего оправдана, ведь репутационные издержки для таких крупных компаний превышают потенциальную выгоду, которую можно извлечь, предоставив вам ложную информацию. Тут есть два «но». Во-первых, достоверность: даже имея дело с надежным централизованным источником, мы все еще оперируем верой, а не знанием. Во-вторых, что более важно, полнота: использование централизованного источника можно считать надежным подходом только для узкого круга резонансных событий.
Первый способ обойти недостатки централизованного источника — использовать консенсус источников. Подобный подход мы уже обсуждали выше, когда говорили о консенсусе оракулов. Как и в случае с оракулами, этот подход улучшает и достоверность, и полноту предоставляемой информации, однако его положительный эффект ограничен и имеет свои недостатки (см. предыдущий раздел).
Еще один подход к решению проблемы источников информации — это косвенный метод. Идея заключается в том, чтобы извлекать информацию об интересующем нас событии из косвенных источников.
![](https://habrastorage.org/webt/n_/wo/xo/n_woxozjz8uwgxufk1q9pjdfr-s.jpeg)
Эти источники будут разными для каждого вида событий: для температуры в Москве — фото из инстаграма с соответствующей геопозицией и датой, для результата матча — посты в социальных сетях с соответствующими тегами и датой, и т.д. Успехи последних лет в области машинного обучения, вероятно, позволят нам с приемлемой точностью определять исходы прошедших событий по косвенным источникам. Какие модели машинного обучения для этого применимы, какой будет точность, независимы ли косвенные источники — все эти вопросы должны рассматриваться для каждого конкретного события отдельно, а факт их разрешимости и будет критерием применимости косвенного метода для этого события.
Для относительно простых задач, вроде определения результата матча по достаточной выборке постов любителей спорта, эти вопросы кажутся решаемыми. Предполагается, что контракт будет обращаться к узлу, на котором производятся вычисления (извлечение прогноза из косвенных источников). Достоверность вычислений предлагается подтверждать криптографически, как это реализовано, например, в проекте Golem.
![](https://habrastorage.org/webt/lo/27/m-/lo27m-iwvkfk_iiuz5fclf-pvby.jpeg)
Этот подход — второй шаг в сторону полноты оракулов. Это еще не про свет в спальне, но уже про погоду, про результаты выборов, про успешность запуска Falcon Heavy.
Для полноты картины источников информации затронем тему рынков предсказаний, таких как Augur. Рынок использует «мудрость толпы» для предсказания будущих событий. Пользователи предсказывают возможный исход этих событий, покупая доли вознаграждения за правильно угаданный результат (победители разделят призовой фонд пропорционально размерам своих ставок). Таким образом, этот подход подразумевает экономическую мотивацию для участников предсказания: за правильное предсказание пользователь получает вознаграждение, а в случае неправильного теряет вложенные средства. Прогноз в данном случае — это средневзвешенное ожидание всех пользователей. Использование рынков предсказаний довольно сильно увеличивает полноту предоставляемой информации, ведь предсказывать можно что угодно (если найдется достаточно желающих), а достоверность обеспечивает экономическая мотивация участников предсказания.
Однако не все так радужно, как может показаться на первый взгляд. Во-первых, предсказание — это лишь ожидание участников рынка (можно привести много примеров событий, наступления которых никто не ожидал). Во-вторых, в такой модели возможны манипуляции предсказанием, если издержки на изменение предсказания на ложное меньше, чем прибыль от неправильной работы контракта. Например, если в контракте предполагается крупная выплата в случае события A, а факт происхождения этого события определяет рынок предсказаний с небольшим оборотом средств, то злоумышленник может сфальсифицировать событие А, потратив лишь часть полученной выгоды на манипуляцию предсказанием.
Заключение
Значимость оракулов для технологии смарт-контрактов трудно переоценить. Оракул служит поставщиком информации от источника к контракту. И если существующие на сегодняшний день решения обеспечивают достаточно надежную передачу этой информации, то проблема с её изначальной достоверностью до сих пор остается нерешённой. Создание/выбор достоверных и полных источников информации – это тот последний рубеж, который отделяет смарт-контракты от повсеместного распространения. Учитывая активное развитие блокчейн-технологий, можно рассчитывать на хотя бы частичное преодоление этого рубежа в ближайшие годы.