为Hyperledger作曲者构建Oracle

时间:2019-05-14 13:48:18

标签: oracle hyperledger-fabric hyperledger hyperledger-composer

根据项目主管的建议,我刚刚从为ETH构建DAPP切换为Hyperledger。我是Hyperledger的新手,正在使用Composed。在我以前的DAPP中,我研究了如何建立一个必须用于更新黄金价格或汇率(变化的东西并且必须快速更新的预言)的预言机。我一直在寻找有关如何在Hyperledger上构建Oracle的教程,但没有成功。在遵循here中提出的教程之后,我试图考虑如何构建它,但是我真的无法确定必须如何构建。谁能告诉我是否可以构建它们,以及我应该如何构建这样的Oracle?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果我很了解,您想在区块链中使用外部数据。

首先,与您的问题无关,但是作为我个人经验的建议,如果您想深入了解Fabric,请不要使用Composer。根据我的理解和测试,作曲家被视为测试对象。如果要访问所有结构元素,请不要使用它。

此外,Composer现在刚刚更新为适合新版本的Fabric。它不会得到任何重大更新。这实际上不是一个活跃的项目。 (在他们的一个论坛上有来自开发人员的完整帖子)


返回您的问题

您的链码是用Node.js编写的。因此,您可以访问所有的node.js软件包(使用composer时我有疑问,如果我做错了,请纠正我)。 然后,您可以将HTTP请求发送到链的外部。

请注意,Fabric允许将CouchDB数据库用作世界状态。我不知道您是需要存储自己的数据还是需要特定的外部数据,但是您可以使用它代替查询互联网。


不要使用不确定性元素

不建议“使用”您不管理的外部元素。 原因是,创建区块的算法(共识)具有(并且必须是)确定性的,这与以太坊/比特币的概率更高相反。

由于采用了认可机制,您的链码模拟必须与每个认可对等方完全相同。

例如,假设您查询某个API上某个地方的温度。您的第一个对等点可能会获得10°c的温度,因为它在时间t询问了温度,但是另一个对等点在t + 1时收到了交易建议,因此温度发生了变化,从而达到了10.01°c。结果是,模拟很可能不会在两个同位体上给出相同的结果,然后交易将无效。

答案 1 :(得分:0)

我建议您从Oraclize的方法中获得一些启发。它们与Hyperledger Fabric的集成是完全开源的。他们的方法描述如下:https://docs.oraclize.it/#fabric

源代码记录在Github上: