Hyperledger fabric 在fabric中,如果块中的两个事务冲突,;什么';结果如何

Hyperledger fabric 在fabric中,如果块中的两个事务冲突,;什么';结果如何,hyperledger-fabric,Hyperledger Fabric,在fabric中,如果区块中的两个交易发生冲突(例如,两个用户几乎同时尝试购买一项资产),那么这两个交易将不会提交到分类账,或者只有最后一个交易不会提交?只有一个交易会成功提交(由订购服务订购的第一个交易),因为第二个事务的读取集版本与预期版本不匹配 很好地解释了:因此,如果块包括这两个事务,并且订单将块交付给对等方,对等方将收到这两个事务的块,那么这两个事务中只有一个将被视为有效。是吗?@Kekomalt是的。只有第一个被验证,只有第一个更新状态。第二个已在该频道链的块中注册,但它无效,并且不

在fabric中,如果区块中的两个交易发生冲突(例如,两个用户几乎同时尝试购买一项资产),那么这两个交易将不会提交到分类账,或者只有最后一个交易不会提交?

只有一个交易会成功提交(由订购服务订购的第一个交易),因为第二个事务的读取集版本与预期版本不匹配


很好地解释了:

因此,如果块包括这两个事务,并且订单将块交付给对等方,对等方将收到这两个事务的块,那么这两个事务中只有一个将被视为有效。是吗?@Kekomalt是的。只有第一个被验证,只有第一个更新状态。第二个已在该频道链的块中注册,但它无效,并且不会改变状态。@kekomal请正确查看问题,他在
块中提到的问题是错误的。In block表示事务由提交对等方的success/fail进行背书和提交。也许他应该问这样一个问题:
如果在背书阶段两个交易发生冲突怎么办?
一旦背书人进行了背书,客户验证了背书是否匹配,txs就会发送给订购方。订购方在发送给提交方的块中订购tx,然后在提交阶段,提交方认为第二个tx无效。该tx不会改变状态,但该块仍会添加到通道链中。这是可能发生的(背书可以由不同的背书人执行,也可以由不同的客户检查,这样以前就无法检测到这种情况),所以我觉得这是一个合理的问题(和回答)。这是典型的
MVCC\u READ\u CONFLICT
错误,发生在提交时,当订购服务已经创建了
块并将其发送给提交者时。提交人将第二次发送标记为无效,并将
块添加到链中。