hyperledger-fabric - 是否有调用跨渠道事务的最佳实践?
问题描述
例如,有 2 个通道,如下所示。
CHANNEL_A:
链码名称 -> 链码_a 账本
数据 -> 金额=150
CHANNEL_B:
链码名称 -> 链码_b 账本
数据 -> 金额=0
我想从 CHANNEL_A 的账本数据中提取 100 并将 100 存入 CHANNEL_B 的账本数据。
根据 Fabric 文档,如果被调用的链码在不同的通道上,则只会将响应返回给调用链码;来自被调用链码的任何 PutState 调用都不会对账本产生任何影响。
所以,如果我调用chaincode_b,它又调用chaincode_a,我可以更新chaincode_B上的金额,但我不能更新chaincode_A。
因此,我必须在应用程序端为两个通道调用 2 个事务。为了数据的一致性,我必须考虑错误处理等。
是否有在应用程序端处理此类事务的最佳实践?
解决方案
要更新通道 A 和通道 B 中的某些内容 - 您需要执行 2 个事务并让它们以原子方式提交或不提交。
一种方法是在应用层实现与两阶段提交等效的东西。
但是,这并非易事,因为您可能总是会遇到 MVCC 冲突,这会妨碍您。
推荐阅读
- java - 调用.query时出现android.database.sqlite.SQLiteException
- javascript - 分散谷歌可视化中具有相同大小和颜色的重叠气泡
- discord.js - 如何在 DiscordJS 中删除 > 符号之前的所有内容
- scalardb - scalardb 是否支持时间戳类型?如果现在,文本或 blob 是存储时间戳的最佳方式吗?
- ios - 当应用程序处于后台时,在静默推送通知时显示用户通知
- oracle - 上传时出现 415 不支持的媒体类型错误
- c - 带有超过 2GB RAM 限制的 AVX 和 AVX2 指令的 C 程序
- c# - 如何使验证注释可选?ASP.NET 核心
- c++ - 使用 std::unique_ptr 创建对象数组
- php - 在 img 标签中使用 php 获取文件 url 的问题