按照项目主管的建议,我刚从为ETH构建DAPP切换到Hyperledger。我是Hyperledger的新手,我使用的是Composed。在我之前的DAPP中,我学习了如何构建一个必须用来更新黄金价格或汇率(不断变化且必须快速更新的东西)的oracle。我一直在寻找关于如何在Hyperledger上成功构建oracle的教程。在遵循了here中提出的教程之后,我试图思考如何构建它,但我真的不知道该如何构建它。有没有人能告诉我它们是否可以构建,以及我应该如何构建这样的先知?
谢谢!
发布于 2019-05-14 14:18:16
如果我理解得很好,你想在区块链中使用外部数据。
首先,与你的问题无关,但根据我的个人经验,如果你想深入了解Fabric,就不要使用Composer。从我的理解和我的测试来看,composer是一种测试工具。如果您想访问所有fabric元素,请不要使用它。
此外,Composer现在刚刚更新,以适应新版本的Fabric。它不会得到任何重大更新。它不再是一个真正活跃的项目了。(开发者在他们的一个论坛上有一整篇关于它的帖子)
返回您的问题
你的链码是用Node.js写的。因此,您可以访问所有的node.js包(我在使用composer时有疑问,如果我错了,请纠正我)。然后,您可以只将HTTP请求发送到链的外部。
请注意,Fabric允许将CouchDB数据库用作世界状态。我不知道你是否需要存储自己的数据,或者需要特别的外部数据,但你可以用它来代替查询互联网。
不使用非确定性元素
不建议“使用”您不管理的外部元素。原因是创建区块的算法(共识)是非常确定的(而且必须是),而以太/比特币的概率更高。
由于背书机制,您的链代码的模拟必须与每个背书同级完全相同。
假设您在某个API上查询某个地方的温度。你的第一个对等点可能会得到10°c,因为它在时间t查询温度,但另一个对等点在t+1收到了事务建议,因此温度发生了变化,它得到了10.01°c。结果是,模拟很可能在两个对等点上不会给出相同的结果,然后事务将不会有效。
发布于 2019-06-05 09:27:52
我建议您从Oraclize的方法中获得一些灵感。它们与Hyperledger Fabric的集成是完全开源的。他们的方法在这里描述:https://docs.oraclize.it/#fabric
源代码记录在Github上:
https://github.com/oraclize/fabric-api/blob/master/connector/oraclize-connector.js
https://stackoverflow.com/questions/56132049
复制