是否有最佳实践来调用跨渠道交易?

时间:2019-09-30 08:15:08

标签: hyperledger-fabric hyperledger

例如,有以下2个频道。

CHANNEL_A:
链码名称-> chaincode_a
分类帐数据->数量= 150

CHANNEL_B:
链码名称-> chaincode_b
分类帐数据->金额= 0

我想从CHANNEL_A的分类帐数据中提取100,并将100存入CHANNEL_B的分类帐数据。
根据Fabric文档,如果被调用的链码在另一个通道上,则仅响应返回到调用的链码;否则,返回响应。来自被调用链码的任何PutState调用都不会对分类帐产生任何影响。

因此,如果我调用chaincode_b并调用chaincode_a,则可以在chaincode_B上更新金额,但不能在chaincode_A上更新。
因此,我必须在应用程序端为两个通道调用2个事务。为了数据一致性,我必须考虑错误处理等等。

是否有最佳实践来在应用程序端处理此类事务?

1 个答案:

答案 0 :(得分:1)

要更新通道A和通道B中的某些内容-您需要进行2个事务,并使它们以原子方式提交或不提交。

执行此操作的一种方法是在应用程序层中实现与2-phase commit等效的功能。

但这并不是一件容易的事,因为您可能总是会遇到MVCC冲突,这些冲突会给您带来麻烦。

相关问题