Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hyperledger fabric 事务回滚在Hyperledger结构中如何工作?_Hyperledger Fabric_Hyperledger_Blockchain - Fatal编程技术网

Hyperledger fabric 事务回滚在Hyperledger结构中如何工作?

Hyperledger fabric 事务回滚在Hyperledger结构中如何工作?,hyperledger-fabric,hyperledger,blockchain,Hyperledger Fabric,Hyperledger,Blockchain,我正在寻找事务回滚。如果链码事务修改了状态,但在返回之前失败并出现错误,则需要执行此操作 我看到这样做是为了拉请求,但我不明白它是如何工作的 有人可以给我举个例子,它是如何工作的 编辑 我要寻找的是数据库(工作单元)中事务的概念,但在Hyperledger结构中 假设我们要为客户列表注册一个产品,如果在某个客户中注册该产品时出现问题,则该操作将被取消,并且不会对任何客户进行注册。您链接的提交不再与当前Hyperledger结构版本相关。此功能是在v1.0之前添加的,v1.0重组了整个框架架构

我正在寻找事务回滚。如果链码事务修改了状态,但在返回之前失败并出现错误,则需要执行此操作

我看到这样做是为了拉请求,但我不明白它是如何工作的

有人可以给我举个例子,它是如何工作的

编辑

我要寻找的是数据库(工作单元)中事务的概念,但在Hyperledger结构中


假设我们要为客户列表注册一个产品,如果在某个客户中注册该产品时出现问题,则该操作将被取消,并且不会对任何客户进行注册。

您链接的提交不再与当前Hyperledger结构版本相关。此功能是在v1.0之前添加的,v1.0重组了整个框架架构

从v1.0+开始,交易首先由背书人进行模拟,背书人创建由链码产生的一组签名状态更改。如果有足够多的背书人签署一笔交易(根据背书政策),则客户可以将该交易发送给订购服务以包含在分类账中。导致链码错误的交易永远不会到达这一点,因为它会因为错误而无法获得必要的背书。客户必须修改事务或请求修改链码才能使其工作


查看Hyperledger结构体系结构以获得更详细的解释,包括序列图。

您链接的提交不再与当前Hyperledger结构版本相关。此功能是在v1.0之前添加的,v1.0重组了整个框架架构

从v1.0+开始,交易首先由背书人进行模拟,背书人创建由链码产生的一组签名状态更改。如果有足够多的背书人签署一笔交易(根据背书政策),则客户可以将该交易发送给订购服务以包含在分类账中。导致链码错误的交易永远不会到达这一点,因为它会因为错误而无法获得必要的背书。客户必须修改事务或请求修改链码才能使其工作


查看Hyperledger结构体系结构以获得更详细的解释,包括序列图。

编辑我要查找的是数据库(工作单元)中事务的概念,但在Hyperledger结构中,假设我们要为客户列表注册一个产品,如果某个客户的产品注册存在问题,则该操作将被取消,并且不会向任何客户进行注册。我认为您可以在应用程序级别实现此功能。也就是说,您可以创建一个链码函数registerProductforClient,它接受一个产品和一个客户列表。然后,单个事务将启动该操作,Hyperledger结构将确保该事务的原子执行。这意味着,链码执行产生的所有状态更新要么应用于分类账,要么不应用,以防出现故障(如果出现问题,您可以在链码中触发自己)。编辑我要查找的是数据库中事务的概念(工作单元)但在Hyperledger Fabric中,假设我们要为客户列表注册一个产品,如果在某个客户中注册该产品时出现问题,则该操作将被取消,并且不会向任何客户进行注册。我认为这取决于您在应用程序级别上实现此功能。也就是说,您可以创建一个链码函数registerProductforClient,它接受一个产品和一个客户列表。然后,单个事务将启动该操作,Hyperledger结构将确保该事务的原子执行。这意味着,链码执行产生的所有状态更新要么应用于分类账,要么不应用,以防出现故障(如果出现问题,您可能会在链码中触发自己)。