チェーンコードファブリック/ example/chaincode/go/chaincode_example02を登録してインスタンス化した後、次の手順を実行します。Hyperledger Fabric 1.0のチェーンコードを同時に呼び出すことができないのはなぜですか?
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に等しく、Iは異なるタイミングで、次のステップを呼び出す場合、結果は可変であろうことを確認します。
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"]}'
具体的には、前のステップを10秒間の休止で2回実行すると、Aは998に等しくなり、Bは2002に等しくなります。前のステップを10回実行した場合、Aは990に等しく、Bは2010に等しくなります。ただし、前のステップを2回実行すると、一時停止なしでAは999になり、Bは2001に等しくなります。前のステップを各ステップ間で一時停止せずに10回実行すると、Aは999になり、Bは2001に等しくなります。
私はいくつかの異なる引数で数回テストしました。さらに、私は他のチェーンコードをテストしました。チェインコードは最初の呼び出し要求のみを受け入れ、その後の呼び出し要求は破棄したようです。だから、質問は次のとおりです:
- これは二重支出を防ぐメカニズムですか?または単に弱点?
- トランザクションレートを制限するこの問題を解決する方法。
- 私はチェーンコードが同時呼び出しをサポートすべきだと思います。チェーンコードは、同時呼び出しを実際にサポートできますか?
- 1つのチェーンコードは、1ブロック期間内に複数の要求を呼び出すことはできますか?