【问题标题】:Is there a best practice to invoke cross channel transaction?是否有调用跨渠道事务的最佳实践?
【发布时间】:2019-10-01 00:50:28
【问题描述】:

例如,下面有2个频道。

CHANNEL_A:
链码名称 -> 链码_a
账本数据 -> amount=150

CHANNEL_B:
链码名称 -> 链码_b
账本数据 -> amount=0

我想从 CHANNEL_A 的账本数据中取出 100 并将 100 存入 CHANNEL_B 的账本数据。
根据 Fabric 文档,如果被调用的链码在不同的通道上,则只会将响应返回给调用链码;来自被调用链码的任何 PutState 调用都不会对账本产生任何影响。

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

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

【问题讨论】:

    标签: hyperledger-fabric hyperledger


    【解决方案1】:

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

    一种方法是在应用层实现与2-phase commit 等效的东西。

    但是,这并非易事,因为您可能总是会遇到 MVCC 冲突,这会妨碍您。

    【讨论】:

      猜你喜欢
      • 2018-09-25
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 2012-12-13
      相关资源
      最近更新 更多