Создание оракулов для композитора Hyperledger - PullRequest
0 голосов
/ 14 мая 2019

Я только что перешел от создания DAPP для ETH к Hyperledger, как было предложено руководителем проекта.Я очень плохо знаком с Hyperledger и использую Composed.В моем предыдущем DAPP я изучал, как создать оракула, который должен был использоваться, чтобы обновить цены на золото или обменный курс (материал, который изменяется и должен быть обновлен быстро).Я искал учебник о том, как построить оракула на Hyperledger без успеха.Я попытался подумать о том, как это можно сделать, следуя инструкциям, предложенным в здесь , но я не могу точно сказать, как это должно быть построено.Кто-нибудь может сказать мне, если они могут быть построены и как я должен структурировать такого оракула?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Если я хорошо понимаю, вы хотите использовать внешние данные в блокчейне.

Во-первых, ничего общего с вашей проблемой, но как совет из моего личного опыта, если вы хотите углубиться в Fabric, не используйте Composer. Исходя из моего понимания и моих тестов, композитор подразумевается как тестовая вещь. Если вы хотите получить доступ ко всем элементам ткани, не используйте его.

Более того, Composer теперь просто обновлен, чтобы соответствовать новой версии Fabric. Это не получит никакого серьезного обновления. Это больше не активный проект. (на одном из их форумов есть сообщение от разработчиков)


Вернуться к вашему вопросу

Ваш цепной код написан на Node.js. Как следствие, у вас есть доступ ко всем пакетам node.js (у меня есть сомнения при использовании composer, исправьте меня, если я ошибаюсь). Тогда вы можете просто отправлять HTTP-запросы за пределы вашей цепочки.

Обратите внимание, что Fabric позволяет использовать базу данных CouchDB в качестве состояния мира. Я не знаю, нужно ли вам хранить свои собственные данные или вам нужны именно внешние данные, но вы могли бы использовать их вместо запросов к Интернету.


Не использовать недетерминированные элементы

Не рекомендуется «использовать» внешний элемент, которым вы не управляете. Причина в том, что алгоритм (консенсус) для создания блока является (и должен быть) чрезвычайно детерминированным, в отличие от эфириума / биткойна, где он является более вероятностным.

Благодаря механизму одобрения симуляция вашего цепного кода должна быть ТОЧНО одинаковой для каждого одобряющего партнера.

Представьте, что вы, например, запрашиваете температуру места в каком-то API. Ваш первый узел может получить 10 ° С, потому что он запросил температуру в момент времени t, но другой узел получил предложение о транзакции в момент времени t + 1, таким образом, температура изменилась, и он получил 10,01 ° С. Следствием этого является то, что симуляция, скорее всего, не даст одинаковый результат обоим партнерам, и тогда транзакция не будет действительной.

0 голосов
/ 05 июня 2019

Я предлагаю вам вдохновиться подходом Ораклиз. Их интеграция с Hyperledger Fabric полностью открыта. Их подход описан здесь: https://docs.oraclize.it/#fabric

Исходный код задокументирован на Github:

...