在Hyperledger Fabric中,我们是否可以通过传统/脱链系统强制执行事务验证?

时间:2018-04-11 10:49:42

标签: hyperledger-fabric

与许多区块链解决方案(例如:以太坊,Corda)不同,Fabric的代言架构意味着智能合约不必是确定性的和沙盒化的:唯一重要的是代言人同意读/写设置。

this SO answer开始,链码执行可以与外界进行通信。

如果验证逻辑很复杂和/或依赖于世界状态之外的数据,是否可以调用例如WebService来执行它?

此外:假设一个链代码策略强制组织Org1支持所有事务,那么我们应该能够编写一个链代码来检查执行上下文,如果它由Org1执行则只调用验证Web服务并拒绝该事务或根据WS调用的结果继续进行。这是对的吗?

2 个答案:

答案 0 :(得分:1)

  

如果验证逻辑很复杂和/或依赖于世界状态之外的数据,是否可以调用例如WebService来执行它?

虽然从技术上讲,可以提供VSCC(验证系统Chaincode)的自定义实现,但我强烈建议您不要这样做,因为这可能会导致不确定的结果。

例如,如果由于某种原因,peer1在peer2无法访问Web服务的情况下,您拥有外部Web服务和两个对等方验证此服务的交易,验证结果将有所不同。因此,您应该非常小心,尽可能避免在进行验证时调用外部系统,或者考虑将外部Web服务作为链代码执行流程的一部分来调用。

  

此外:假设一个链代码策略强制组织Org1支持所有事务,那么我们应该能够编写一个链代码来检查执行上下文,如果它由Org1执行则只调用验证Web服务并拒绝该事务或根据WS调用的结果继续进行。这是对的吗?

默认验证系统链代码注意确保每当满足认可政策时,因此在您的示例中,如果事务未被Org1认可,则它将被无效。

答案 1 :(得分:0)

在我看来,认可政策在所有代言同行中验证了世界各州,以便所有组织的同行就世界国家达成一致。

您所指的不是认可政策,而是智能合约中的逻辑。它应该可以在任何链代码实现中,但如果您使用Hyperledger Composer进行链代码实现,那么从他们的文档中可以看出它可以:

  

Runtime API是所有交易的可用API   功能。它允许访问API - 构建和发出查询 -   发出事件 - 获取所有类型的注册表 - 获取最新信息   参与者 - 让序列化程序从JavaScript创建资源   对象 - 发布HTTP REST调用

根据最后一部分post HTTP REST来电,你应该能够逻辑拒绝任何交易'

Reference