Перевод статьи Thomas Bertani из блога компании Oraclize.
Этот пост дискуссия о том, чем на самом деле являются оракулы, так же мы расскажем о некоторых распространенных заблуждениях по этому вопросу.
Оракул — это третья сторона, вы общаетесь с оракулом когда вам нужны данные, которые вы не хотите (или не можете) извлекать самостоятельно. Причин для этого может быть много.
С одной стороны, вы можете не доверять отдельному объекту при подписании multi-signature транзакции Bitcoin. Например, вы хотите чтобы некоторые средства были перемещены только при определенных условиях. Вместо того, чтобы делать это самостоятельно (что не дает никаких гарантий внешним сторонам) или делегировать это третьей стороне (которой вы не хотите доверять, поскольку она может вести себя некорректно), вы разделяете процесс подтверждения транзакции различным сторонам (оракулам) через multi-signature транзакцию.
Путь с использованием N-of-M multi-signature транзакций заключается в том, что каждый оракул имеет только один закрытый ключ, и может поставить только одну подпись в тот момент когда он сочтет это нужным, но сама транзакция будет действительна одна и N-of-M оракулы будут иметь консенсус относительно того, какая транзакция должна пройти. Это намного правильней, чем доверять одной из внешних сторон, поскольку выбранные оракулы могут конкурировать и вы получаете низкую вероятность мошенничества.
Идея иметь распределенную oracles network существует уже несколько лет, однако найти консенсус по протоколу связи между оракулами (Orisi пыталась) сложно. Поиск сторон готовых присоединиться к oracles network, еще сложнее, так как необходим хороший процесс стимулирования, а так же простой и понятный дизайн с возможностью легко взаимодействовать и в этом пока консенсуса нет. Помимо всего этого существенным ограничением могут быть источники, которые вы хотите использовать для получения данных, так как некоторые из них могут быть недоступны без разрешения внешних сторон (подробнее об этом мы поговорим немного позже).
Если мы говорим о смарт-контрактах (Ethereum), то здесь совершенно по другому, логика подтверждения транзакций обеспечивается сетью через ваш собственный код смарт-контракта. Это означает, что оракул не ставит подпись после проверки некоторых условий, вместо этого он предоставляет вам данные, которые вы просили — условия могут быть проверены на вашей стороне напрямую, вы можете сами инициировать транзакцию или изменение статуса. Тем не менее вы не можете полагаться на распределенную сеть для получения внешних данных, так как приложения / сервисы, выполняемые в цепочках, живут в собственной замкнутой среде, и именно поэтому вам нужны оракулы для ввода внешних данных.
Растущие потребности в данных — это результат быстро растущих индустрий и соответственно находить данные, правильно их вытаскивать из реального мира становится все сложнее и сложнее. Однако, часто неправильное представление использования оракулов вызвано слабым пониманием того, какие данные вы хотели бы получать от оракулов.
Например, рынки предсказаний, такие как Augur или Gnosis, призваны дать хороший и надежный индикатор эволюционирующих настроений (или знаний) толпы вокруг фактов которые произойдут в будущем. Рынки предсказаний часто упоминаются как оракулы, но в более широком и совершенно другом смысле, чем мы обсуждали выше.
Еще один момент, который стоит обсудить, заключается в следующем: хотим ли мы назвать оракулом, только то что является например потоком котировок? Это всего лишь источник данных, и в большинстве случаев он не будет иметь никаких связей с блокченом. Финансовые учреждения часто считают «Bloomberg» или «Reuters» в качестве оракулов, но на самом деле используют их как источник данных. Быть оракулом, это значит взять на себя все сложности взаимодействия с блокчейном, а они не заинтересованы делать это, так как это требует дополнительных затрат и ресурсов. Тем не менее, оракул может предоставить доступ к данным Bloomberg, после того как выберет подходящий источник и правильную форму данных. Ссылаться на тех, кто представляется как «оракул» но на самом деле является «источником данных», это еще одно неправильное использованием этого термина.
Чтобы более глубоко понять это, мы можем определить 3 объекта:
Что касается источника данных — это источник информации, которую вы ищете, это может быть что угодно в зависимости от вашего фактического запроса, например это может быть Augur (при рассмотрении будущих событий/фактов), “Bloomberg” (при поиске финансовых данных), «Bitcoin blockchain» (при поиске address balance, данных транзакции OP_RETURN или любых других данных блокчена), «WolframAlpha» (при поиске ответа на заданный запрос в Wolfram Alpha) или… “Web”? Получение веб-данных или данных с API является самым простым и распространенным местом, с которого вы можете получать данные.
Запрос — это алгоритм, который может понять выбранный вами источник данных, чтобы предоставить вам нужные данные.
Оракул/Сеть оракулов — это сторона которая отвечает за подключение к источнику данных. Здесь нужно обсудить два вопроса:
Подход Oraclize в качестве оракула отличается.
Вы можете рассматривать это как нечто среднее между оракулом и расширенной сетью оракулов. Oraclize потенциально может вернуть вам ответ, но не может изменять данные, поступающие из выбранного вами источника данных.
Вот почему мы относимся к сервису Oraclize как «доказуемо-честному». Это возможно благодаря TLSNotary/pagesigner. Это модификация TLS, которая используется службой oracle для предоставления криптографических доказательств, показывающих, что данные, которые вам предоставили, были действительно теми, которые данный сервер дал нам в определенное время. Помимо предоставления этого доказательства, Oraclize распространяет доказательство и через постоянную сеть Будучи также частью консорциума IPFS persistence consortium , наши доказательства имеют хорошие шансы быть доступными даже если наша система недоступна (по какой-либо причине).
Мы предоставляем инструменты для проверки нашей честности с помощью которых вы можете сделать эту проверку самостоятельно. Здесь, например, наш сетевой монитор для Ethereum который подключается на вашей, клиентской стороне (вот почему это так тяжело) с публичными нодами Ethereum и шлюзом IPFS (или с вами сами, если хотите), чтобы вы смогли находить транзакции Oraclize и доказать правдивость верифицировав их. При том вы можете легко контролировать сеть самостоятельно, чтобы гарантировать, что Oraclize ведет себя честно, и мы действительно хотим побудить вас сделать это!
Что это значит на практике? Если мы изменим ваши данные, любой может проверить это в любое время, автоматически и в одно мгновение и наша репутация будет потеряна. Если вам кажется, что наши ответы по-прежнему звучат слишком рискованно, вы, вероятно, захотите дождаться, когда мы выпустим релиз с открытым кодом для Ethereum, над которым мы работаем. Это означает, что ваш код смарт-контракта может получать доказательство в TLSNotary самостоятельно, и если данные недействительны то вы можете отбросить данные Oraclize.
По нашему мнению, сервис Oraclize является хорошим компромиссом для решения «проблемы оракулов» который сегодня работая таким образом подходит блокчейну и смарт-контрактам. Наличие сети оракулов поможет решить проблему «цензуры/простоя», но риски, связанные с использованием единственного оракула, резко сокращаются благодаря новому подходу Oraclize.
Этот пост дискуссия о том, чем на самом деле являются оракулы, так же мы расскажем о некоторых распространенных заблуждениях по этому вопросу.
Оракул — это третья сторона, вы общаетесь с оракулом когда вам нужны данные, которые вы не хотите (или не можете) извлекать самостоятельно. Причин для этого может быть много.
С одной стороны, вы можете не доверять отдельному объекту при подписании multi-signature транзакции Bitcoin. Например, вы хотите чтобы некоторые средства были перемещены только при определенных условиях. Вместо того, чтобы делать это самостоятельно (что не дает никаких гарантий внешним сторонам) или делегировать это третьей стороне (которой вы не хотите доверять, поскольку она может вести себя некорректно), вы разделяете процесс подтверждения транзакции различным сторонам (оракулам) через multi-signature транзакцию.
Путь с использованием N-of-M multi-signature транзакций заключается в том, что каждый оракул имеет только один закрытый ключ, и может поставить только одну подпись в тот момент когда он сочтет это нужным, но сама транзакция будет действительна одна и N-of-M оракулы будут иметь консенсус относительно того, какая транзакция должна пройти. Это намного правильней, чем доверять одной из внешних сторон, поскольку выбранные оракулы могут конкурировать и вы получаете низкую вероятность мошенничества.
Идея иметь распределенную oracles network существует уже несколько лет, однако найти консенсус по протоколу связи между оракулами (Orisi пыталась) сложно. Поиск сторон готовых присоединиться к oracles network, еще сложнее, так как необходим хороший процесс стимулирования, а так же простой и понятный дизайн с возможностью легко взаимодействовать и в этом пока консенсуса нет. Помимо всего этого существенным ограничением могут быть источники, которые вы хотите использовать для получения данных, так как некоторые из них могут быть недоступны без разрешения внешних сторон (подробнее об этом мы поговорим немного позже).
Если мы говорим о смарт-контрактах (Ethereum), то здесь совершенно по другому, логика подтверждения транзакций обеспечивается сетью через ваш собственный код смарт-контракта. Это означает, что оракул не ставит подпись после проверки некоторых условий, вместо этого он предоставляет вам данные, которые вы просили — условия могут быть проверены на вашей стороне напрямую, вы можете сами инициировать транзакцию или изменение статуса. Тем не менее вы не можете полагаться на распределенную сеть для получения внешних данных, так как приложения / сервисы, выполняемые в цепочках, живут в собственной замкнутой среде, и именно поэтому вам нужны оракулы для ввода внешних данных.
Растущие потребности в данных — это результат быстро растущих индустрий и соответственно находить данные, правильно их вытаскивать из реального мира становится все сложнее и сложнее. Однако, часто неправильное представление использования оракулов вызвано слабым пониманием того, какие данные вы хотели бы получать от оракулов.
Например, рынки предсказаний, такие как Augur или Gnosis, призваны дать хороший и надежный индикатор эволюционирующих настроений (или знаний) толпы вокруг фактов которые произойдут в будущем. Рынки предсказаний часто упоминаются как оракулы, но в более широком и совершенно другом смысле, чем мы обсуждали выше.
Еще один момент, который стоит обсудить, заключается в следующем: хотим ли мы назвать оракулом, только то что является например потоком котировок? Это всего лишь источник данных, и в большинстве случаев он не будет иметь никаких связей с блокченом. Финансовые учреждения часто считают «Bloomberg» или «Reuters» в качестве оракулов, но на самом деле используют их как источник данных. Быть оракулом, это значит взять на себя все сложности взаимодействия с блокчейном, а они не заинтересованы делать это, так как это требует дополнительных затрат и ресурсов. Тем не менее, оракул может предоставить доступ к данным Bloomberg, после того как выберет подходящий источник и правильную форму данных. Ссылаться на тех, кто представляется как «оракул» но на самом деле является «источником данных», это еще одно неправильное использованием этого термина.
Чтобы более глубоко понять это, мы можем определить 3 объекта:
- источник данных
- запрос
- Оракул/Сеть оракулов
Что касается источника данных — это источник информации, которую вы ищете, это может быть что угодно в зависимости от вашего фактического запроса, например это может быть Augur (при рассмотрении будущих событий/фактов), “Bloomberg” (при поиске финансовых данных), «Bitcoin blockchain» (при поиске address balance, данных транзакции OP_RETURN или любых других данных блокчена), «WolframAlpha» (при поиске ответа на заданный запрос в Wolfram Alpha) или… “Web”? Получение веб-данных или данных с API является самым простым и распространенным местом, с которого вы можете получать данные.
Запрос — это алгоритм, который может понять выбранный вами источник данных, чтобы предоставить вам нужные данные.
Оракул/Сеть оракулов — это сторона которая отвечает за подключение к источнику данных. Здесь нужно обсудить два вопроса:
- Почему я должен доверять источнику данных? Большую часть времени вы не должны доверять. Найти консенсус различных источников данных — это хороший способ дать дополнительную надежность, при этом все еще используя «централизованные» данные
- Что, если Оракул/Сеть оракулов вернет мне неправильный результат? И это основной момент, предлагающий использовать консенсус оракулов вместо одного оракула. Но подождите, нет ли другого способа предотвратить возможность того, что бы оракул подделывал данные? Давайте поговорим об этом немного.
Подход Oraclize в качестве оракула отличается.
Вы можете рассматривать это как нечто среднее между оракулом и расширенной сетью оракулов. Oraclize потенциально может вернуть вам ответ, но не может изменять данные, поступающие из выбранного вами источника данных.
Вот почему мы относимся к сервису Oraclize как «доказуемо-честному». Это возможно благодаря TLSNotary/pagesigner. Это модификация TLS, которая используется службой oracle для предоставления криптографических доказательств, показывающих, что данные, которые вам предоставили, были действительно теми, которые данный сервер дал нам в определенное время. Помимо предоставления этого доказательства, Oraclize распространяет доказательство и через постоянную сеть Будучи также частью консорциума IPFS persistence consortium , наши доказательства имеют хорошие шансы быть доступными даже если наша система недоступна (по какой-либо причине).
Мы предоставляем инструменты для проверки нашей честности с помощью которых вы можете сделать эту проверку самостоятельно. Здесь, например, наш сетевой монитор для Ethereum который подключается на вашей, клиентской стороне (вот почему это так тяжело) с публичными нодами Ethereum и шлюзом IPFS (или с вами сами, если хотите), чтобы вы смогли находить транзакции Oraclize и доказать правдивость верифицировав их. При том вы можете легко контролировать сеть самостоятельно, чтобы гарантировать, что Oraclize ведет себя честно, и мы действительно хотим побудить вас сделать это!
Что это значит на практике? Если мы изменим ваши данные, любой может проверить это в любое время, автоматически и в одно мгновение и наша репутация будет потеряна. Если вам кажется, что наши ответы по-прежнему звучат слишком рискованно, вы, вероятно, захотите дождаться, когда мы выпустим релиз с открытым кодом для Ethereum, над которым мы работаем. Это означает, что ваш код смарт-контракта может получать доказательство в TLSNotary самостоятельно, и если данные недействительны то вы можете отбросить данные Oraclize.
По нашему мнению, сервис Oraclize является хорошим компромиссом для решения «проблемы оракулов» который сегодня работая таким образом подходит блокчейну и смарт-контрактам. Наличие сети оракулов поможет решить проблему «цензуры/простоя», но риски, связанные с использованием единственного оракула, резко сокращаются благодаря новому подходу Oraclize.