Hyperledger fabric - 我可以在验证或认可阶段调用外部系统

问题描述 投票:0回答:1

我们有一个用例,其中事务验证逻辑非常复杂并且需要来自不同源的数据,以便验证事务。

查询我们可以使用其可插拔验证功能调用和外部休息服务来验证来自超级分层结构的某些数据吗?

validation hyperledger-fabric external
1个回答
0
投票

从hyperledger fabric智能合约进行外部api调用在技术上是可行的,出于以下几个原因,这是一个冒险的想法:

1)chaincode必须是确定性的,并且使用外部API“丰富”事务的问题是它必须返回在业务网络中任何地方运行的相同结果,这可能很好地在全局运行,因此您需要相信答案在一个比几毫秒宽一点的时间窗口内都是一样的2)在开发和生产中只运行一个代言人可以解决这个问题,但是有点削弱了共识,并且基本上不可能证明确定性对于任何给定的交易3)设计这样一个弱化的系统并不是一个好主意,因为不可避免地会有人意识到认可政策应该更强大,你会回到第1点的问题

解决此问题的一种方法是使用带有版本化数据的分布式外部API(您可能需要编写一个oracle以在不对其数据进行版本控制的API之上提供此工具),以便所有代言人存储外部数据的当前版本在世界状态的资产存储库中。这确保了读取的数据是相同的,并且解决了oracle网络中传播的延迟。在世界状态的最终资产数据中存在API数据版本(更准确地说,在事务的读/写集中)确保oracle中不同区域中的不同版本的数据(例如传播延迟)将失败任何多个代言政策。当然,在这样的环境中设计的客户可以自由地重新提交交易以获得认可以获得共识。

© www.soinside.com 2019 - 2024. All rights reserved.