后续交易不会更新 Hyperledger Fabric 中的账本,产生图标一致状态
Subsequent transactions do not update the ledger in Hyperledger Fabric, yield iconsistent state
我正在做一个小项目来让自己熟悉 Hyperledger Fabric。
目前,我有一个小型网络,由单个 peer、orderer 和 ca 节点(加上 cli、chaincode 和 explorer)组成,在 docker-compose.yml
中定义
我已经安装了示例链代码,chaincode_example02 更具体
账本的初始状态为 A:100、B:200,由
定义
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init","a","100","b","200"]}' -C myc
当我执行传输时,一切正常
peer chaincode invoke -n mycc -c '{"Args":["invoke","a","b","10"]}' -C myc
即 10 个单位从 A 转移到 B
但是
当我 运行 假设有 3 笔交易时,
for i in {1..3}
do
peer chaincode invoke -n mycc -c '{"Args":["invoke","a","b","10"]}' -C myc
done
因此,我在一个区块中进行了三笔交易,但每笔交易都相同,并且由于这三笔交易,我只转移了 10 个单位,而我预计是 30 个。
我的问题是:我是否需要诉诸 high throughoutput 解决方案来进行确定性交易?或者有其他方法可以实现(例如使用事件)?
将这三笔交易放在同一个区块中意味着只有一个成功,因为这三笔交易都写入了同一个密钥。成功的交易是第一个,剩下的两个将被认为是并发的,因此无效。
链码simulation/invocation的结果是读写集,其中包含键、值和修改版本。尝试使用相同或过时版本修改密钥的事务在块提交期间无法通过 MVCC(多值并发控制)检查。
我正在做一个小项目来让自己熟悉 Hyperledger Fabric。
目前,我有一个小型网络,由单个 peer、orderer 和 ca 节点(加上 cli、chaincode 和 explorer)组成,在 docker-compose.yml
中定义我已经安装了示例链代码,chaincode_example02 更具体 账本的初始状态为 A:100、B:200,由
定义peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init","a","100","b","200"]}' -C myc
当我执行传输时,一切正常
peer chaincode invoke -n mycc -c '{"Args":["invoke","a","b","10"]}' -C myc
即 10 个单位从 A 转移到 B
但是 当我 运行 假设有 3 笔交易时,
for i in {1..3}
do
peer chaincode invoke -n mycc -c '{"Args":["invoke","a","b","10"]}' -C myc
done
因此,我在一个区块中进行了三笔交易,但每笔交易都相同,并且由于这三笔交易,我只转移了 10 个单位,而我预计是 30 个。
我的问题是:我是否需要诉诸 high throughoutput 解决方案来进行确定性交易?或者有其他方法可以实现(例如使用事件)?
将这三笔交易放在同一个区块中意味着只有一个成功,因为这三笔交易都写入了同一个密钥。成功的交易是第一个,剩下的两个将被认为是并发的,因此无效。
链码simulation/invocation的结果是读写集,其中包含键、值和修改版本。尝试使用相同或过时版本修改密钥的事务在块提交期间无法通过 MVCC(多值并发控制)检查。