根据解释的体系结构(http://hyperledger-fabric.readthedocs.io/en/latest/arch-deep-dive.html),订购服务将事务(RWSets)收集到块中,以便分发给提交对等方。然后,提交对等方验证背书策略,RWset然后将交易应用于分类账。
为了验证事务是否成功,客户端应用程序是否应该等到所有提交的对等方返回"成功"事件?或者只需要验证一个"成功"事件?
要验证事务是否成功,客户端应用程序等待所有提交的对等方返回"成功"事件?或者只是只需要验证一个"成功"事件?
Tanaka,这是一个很好的问题!简短的回答是否。
原因是,与现有的流行区块链相比,HLF有一个独特的交易生命周期:
- 在某些背书人或少数背书人上模拟交易
- 它被发送到订购服务,并被切成一些块
- 块被发送到对等方,它们都执行相同的验证代码,特定事务的所有验证代码都保证在所有对等方中得出相同的结论,因为它们在所有对等体中以相同的顺序运行
因此,如果一个事务在某个对等体上得到验证,当其他对等体将接收到该事务所在的块时,他们也会认为它是有效的。
但是,您应该考虑的一个非常重要的方面是数据可用性和同步。例如,如果您有一个使用10个对等体的应用程序,而只有1个对等体得到了事件,其余的没有,并且您在其他对等体上调用了另一个事务,那么其他对等体将计算的背书可能会变成无效事务,因为他们将在旧数据上进行模拟(他们还没有得到事件的事实证明他们还没有处理该事务的块),所以你需要记住这一点。