后续事务不会更新Hyperledger Fabric中的分类帐,从而产生图标持久状态

时间:2018-05-08 17:05:51

标签: hyperledger-fabric hyperledger

我正在开展一个小项目,让自己熟悉Hyperledger Fabric

目前,我有一个小型网络,由docker-compose.yml

中定义的单个peer,orderer和ca节点(加上cli,chaincode和explorer)组成。

我已经安装了示例链码,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

BUT 当我跑步时,让我们说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解决方案来进行确定性交易?或者有另一种方法来实现它(例如使用事件)?

1 个答案:

答案 0 :(得分:1)

将这三个事务放在同一个块中意味着只有一个事务成功,因为它们中的所有三个都写入相同的密钥。成功的交易是第一个,而剩下的两个将被视为并发,因此无效。

链代码模拟/调用的结果是读写集,其中包含键,值和修改版本。尝试修改具有相同或过期版本的密钥的事务在块提交期间未通过MVCC(多值并发控制)检查。