我正在寻找交易回滚。如果链码事务修改了状态,但随后又失败并出现错误,则该错误能够返回之前,这是必需的。
我看到请求请求已完成,但我不明白它是如何工作的
Added support for rolling back a tx if chaincode execution fails
有人可以给我举个例子吗?
编辑
我正在寻找的是数据库(工作单元)中的事务概念,但在Hyperledger Fabric中
让我们假设要为客户列表注册产品,如果某个客户的产品注册存在问题,则将取消该操作,并且不对任何客户进行注册
答案 0 :(得分:2)
您链接的提交与当前的Hyperledger Fabric版本不再相关。在v1.0之前添加了此功能,从而重新构建了整个框架体系结构。
从v1.0 +开始,交易首先由背书人进行模拟,背书人会根据链码创建一组经过签名的状态更改。如果有足够的背书人签署交易(根据背书政策),则客户可以将交易发送到订购服务以包含在分类帐中。导致链码错误的交易永远不会到这一点,因为由于错误而无法收集必要的认可。客户必须修改交易或请求修改链码才能使其正常工作。
查看Hyperledger Fabric架构{{3}},以获得更详细的解释,包括序列图。