Hyperledger Fabric网络的双倍支出

时间:2019-07-09 11:53:57

标签: node.js hyperledger-fabric hyperledger

在Hyperledger Fabric中,并发访问不会失败。

我将LevelDB用作分类帐状态的提供者,并且在合同中有一种方法可以读取当前状态,更新状态并返回结果。

const buffer = await ctx.stub.getState(assetId);
const asset = JSON.parse(buffer.toString()) as Asset;

if (asset.read) throw new Error(`Can't be read`);

asset.read = true;
const newBuffer = Buffer.from(JSON.stringify(asset));
await ctx.stub.putState(assetId, newBuffer);

测试:

docker exec cli peer chaincode invoke --orderer orderer.example.com:7050 --channelID mychannel -c '{"Args":["read", "CODE"]}' -n hellonet & \
docker exec cli peer chaincode invoke --orderer orderer.example.com:7050 --channelID mychannel -c '{"Args":["read", "CODE"]}' -n hellonet

下一个结果:

2019-07-09 11:37:57.894 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 payload:"{\"value\":\"VAL01\",\"read\":true}"
2019-07-09 11:37:58.092 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 payload:"{\"value\":\"VAL01\",\"read\":true}"

在并发访问时,它仅返回结果,而不是在MVCC期间失败。我想念什么?

0 个答案:

没有答案