註冊,安裝並實例化chaincode結構/ example/chaincode/go/chaincode_example02後,我運行以下步驟。爲什麼Hyperledger Fabric 1.0中的chaincode不能被同時調用?
peer chaincode instantiate --orderer orderer0:7050 --tls true --path example02 --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/orderer/localMspConfig/cacerts/ordererOrg0.pem --chainID mychannel --name example02cc --version 1.0 --ctor '{"Args":["init","A","1000","B","2000"]}'
peer chaincode query --chainID mychannel --name example02cc --ctor '{"Args":["query","A"]}'
peer chaincode query --chainID mychannel --name example02cc --ctor '{"Args":["query","B"]}'
到目前爲止,我確認A等於1000和B等於2000之後,其結果將是可變的,如果我調用下面的步驟用不同的定時。
peer chaincode invoke --orderer orderer0:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/orderer/localMspConfig/cacerts/ordererOrg0.pem --chainID mychannel --name example02cc --ctor '{"Args":["invoke","A","B","1"]}'
具體來說,A將等於998,如果我以10秒的間隔運行上一步兩次,B等於2002。 A將等於990,而B將等於2010,如果我在每步之間停頓10秒後執行前一步十次。然而,沒有任何停頓,如果我執行前面的步驟兩次,A將等於999並且B將等於2001。如果我在每一步之間不停頓地執行前一步十次,A將等於999,B等於2001。
我用不同的參數測試過幾次。而且,我測試了其他的連鎖代碼。似乎鏈代碼只接受第一個調用請求,並丟棄後續的調用請求。所以,問題是:
- 這是防止雙重支出的機制嗎?或者只是一個弱點?
- 如何解決限制事務處理速度的問題。
- 我認爲chaincode應該支持併發調用。 chaincode能否支持實際的併發調用?
- 一個鏈碼可以在單個塊週期內調用多個請求嗎?