所有这些都让我对hyperledger fabric有一个问题,为什么允许链代码在hyperledger中并行执行,如下所示:
running push()
2
ending push()
running push()
1
ending push()
running push()
3
ending push()
running push()
5
ending push()
running push()
4
ending push()
所以我在这里做的是: - 创建新事务并发送2个对象 - 立即发送另一笔交易
所以在分类帐更新之前,密钥应该是例如:3 + 2 = 5而不是5 + 1 = 6
但在这种情况下这是错误的,因为它以:3 + 2 = 5开始,在更新分类帐之前,从当前密钥3 + 1 = 4而不是从5 + 1 = 6完成另一次推送。
我该如何解决这个问题?
答案 0 :(得分:4)
(I) 请记住,链码执行只是智能合约逻辑计算的模拟。 换句话说 - 如果交易将被提交,则链码执行会告诉您对渠道的更新是什么。
当客户端从对等方获得认可(包含模拟)时 - 它会将其发送给订货人,以便安排在下一个可用批次中的某个区块中显示一个区块。
仅当块被持久存储到分类帐中时(并且仅当事务有效时 - 意味着,它不会被先前块中的任何其他事务或它所来自的块中的先前事务无效) - 下一个链代码执行可能会看到事务的变化。
(II)
为什么允许链代码在hyperledger中并行执行 像这样:
因此,从(I)开始,没有必要并行不来执行链代码,因为在任何情况下,链代码执行的结束并不意味着下一个执行会读取该数据。