Oracle 为hyperledger composer构建预言器

Oracle 为hyperledger composer构建预言器,oracle,hyperledger-fabric,hyperledger,hyperledger-composer,Oracle,Hyperledger Fabric,Hyperledger,Hyperledger Composer,根据项目主管的建议,我刚从为ETH构建DAPP切换到Hyperledger。我对Hyperledger非常陌生,我正在使用Composited。在我之前的DAPP中,我研究了如何构建一个oracle,该oracle必须用于更新黄金价格或汇率(需要快速更新的内容)。我一直在寻找一个关于如何在Hyperledger上构建oracle的教程,但没有成功。在遵循了中提出的教程之后,我试图思考如何构建它,但我真的不知道如何构建它。有谁能告诉我它们是否可以建造,我应该如何构造这样的甲骨文 谢谢 如果我理解得

根据项目主管的建议,我刚从为ETH构建DAPP切换到Hyperledger。我对Hyperledger非常陌生,我正在使用Composited。在我之前的DAPP中,我研究了如何构建一个oracle,该oracle必须用于更新黄金价格或汇率(需要快速更新的内容)。我一直在寻找一个关于如何在Hyperledger上构建oracle的教程,但没有成功。在遵循了中提出的教程之后,我试图思考如何构建它,但我真的不知道如何构建它。有谁能告诉我它们是否可以建造,我应该如何构造这样的甲骨文


谢谢

如果我理解得很好,您希望在区块链中使用外部数据

首先,这和你的问题无关,但根据我个人的经验,如果你想深入了解织物,不要使用Composer。从我的理解和我的测试来看,作曲家就是一个测试品。如果要访问所有结构元素,请不要使用它

此外,Composer现在刚刚更新,以适应新版本的Fabric。它不会得到任何重大更新。它不再是一个活跃的项目了。(开发者在他们的一个论坛上发布了一整篇文章)


回到你的问题

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

注意,Fabric允许将CouchDB数据库用作世界状态。我不知道您是否需要存储自己的数据或需要特定的外部数据,但您可以使用它而不是查询internet


不要使用非确定性元素

不建议“使用”您不管理的外部元素。 原因是创建块的算法(一致性)是(而且必须是)非常确定的,与以太坊/比特币相反,以太坊/比特币的概率更大

由于背书机制,您的链码模拟对于每个背书对等方都必须完全相同


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

如果我理解清楚,您希望在区块链中使用外部数据

首先,与您的问题无关,但根据我的个人经验,如果您想深入了解Fabric,请不要使用Composer。根据我的理解和测试,Composer是一种测试工具。如果您想访问所有Fabric元素,请不要使用它

此外,Composer现在刚刚更新,以适应新版本的Fabric。它不会得到任何重大更新。它不再是一个真正活跃的项目。(开发人员在他们的一个论坛上发布了关于它的完整帖子)


回到你的问题

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

请注意,Fabric允许使用CouchDB数据库作为世界状态。我不知道您是否需要存储自己的数据或需要特定的外部数据,但您可以使用它而不是查询internet


不要使用非确定性元素

不建议“使用”您不管理的外部元素。 原因是创建块的算法(一致性)是(而且必须是)非常确定的,与以太坊/比特币相反,以太坊/比特币的概率更大

由于背书机制,您的链码模拟对于每个背书对等方都必须完全相同


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

我建议您从Oraclize的方法中获得一些启发。它们与Hyperledger Fabric的集成是完全开源的。他们的方法如下所述:

源代码记录在Github上:

  • 连接器链码:

  • 货币兑换示例:


    • 我建议您从Oraclize的方法中汲取一些灵感。它们与Hyperledger Fabric的集成是完全开源的。他们的方法如下所述:

      源代码记录在Github上:

      • 连接器链码:

      • 货币兑换示例:


      就我的理解而言,我基本上需要另一方能够收集外部数据并将其输入区块链,因此即使在t0时黄金价格为X,这就是我需要的信息,我不在乎t1是否会改变,因为我必须根据t0的黄金价格来决定该怎么做。我基本上需要基于一些外部因素(例如黄金价格)将货物/资金从一方转移到另一方,因此我需要在区块链中输入确定性数据的第三方“oracle”是否正确?@Masiar你需要关心t+1的价格,如果您有多个同侪签署交易。正如我所说的,如果第0位和第1位有不同的结果(基于他们获得的不同黄金价格),你的交易将永远无效