Hyperledger fabric 同一块的两个事务是否可以更新相同的状态密钥?

Hyperledger fabric 同一块的两个事务是否可以更新相同的状态密钥?,hyperledger-fabric,Hyperledger Fabric,我相信答案是否定的,但我想确认一下 使用Fabric,背书人在最新状态下模拟交易,并准备添加读写密钥集的提案。 在提交阶段,对等方将从订购服务接收一个块,并且只有在读集未更新时才应用写集更新(版本控制检查)。 因此,对于同一块,同一密钥不能由同一块的两个不同事务更新 如果是这样的话,对于频繁交易用例来说,聚合价值和保持链上的平衡可能会有问题。此类操作应留给链外应用层。因此,对于同一块,同一密钥不能由同一块的两个不同事务更新 以上是正确的。Hyperledger结构使用类似MVCC的模型以防止冲突

我相信答案是否定的,但我想确认一下

使用Fabric,背书人在最新状态下模拟交易,并准备添加读写密钥集的提案。 在提交阶段,对等方将从订购服务接收一个块,并且只有在读集未更新时才应用写集更新(版本控制检查)。 因此,对于同一块,同一密钥不能由同一块的两个不同事务更新

如果是这样的话,对于频繁交易用例来说,聚合价值和保持链上的平衡可能会有问题。此类操作应留给链外应用层。

因此,对于同一块,同一密钥不能由同一块的两个不同事务更新


以上是正确的。Hyperledger结构使用类似MVCC的模型以防止冲突(或“双重支出”)。在再次尝试更新状态之前,您需要等待上一个状态更改事务提交。

订购服务是否注意到属于同一块的两个事务不会更新相同的密钥(通过将两个事务分离到不同的块中)?或者它是否抛出MVCC_READ_CONFLICT错误?排序服务实际上不会解析/处理事务。它只查看订购者并对其进行批处理(即,它不查看事务的内容)。一旦对等方从订购服务接收到一个事务块,它实际上会进行验证(包括MVCC检查),这要感谢Gari。然后我假设在这种情况下,我将从对等事件中获得一个MVCC_READ_冲突错误。对吧?没错。您应该在事件中看到错误代码如果有人担心此限制对吞吐量的影响,如果密钥的更新值是十进制的,那么这里提供的解决方法[link]包括存储唯一的增量。