所以我对超级账本结构有一个问题,为什么允许链码在超级账本中并行执行,如下所示:
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 完成的。
我该如何解决这个问题?
(I) 请记住,链码执行只是智能合约逻辑计算的模拟。换句话说 - 链码执行会告诉您如果事务将被提交,对通道的更新将是什么。
当客户端从对等方(包含模拟)取回背书时 - 它会将其发送给排序节点以安排其出现在下一个可用批次中的某个区块中,该批次将切割一个区块。
只有当区块被持久化到账本中时(并且只有当交易是有效的——也就是说,它没有被前一个区块中的任何其他交易或它来自的区块内的前一个交易无效)——下一个链码执行可能查看交易的变化。
(二)
为什么允许链码在超级账本中像这样并行执行:
因此,从 (I) 可以看出,不并行执行链代码是没有意义的,因为在任何情况下,链代码执行的结束并不意味着下一次执行将读取该数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句