fabric 合约bug-里面不用字段不能注释

操作合约:命令 "peer chaincode query" 会得到区块链分布式账本中背书过的结果,但并不会产生或提交 Transaction。而命令 "peer chaincode invoke" 则会生成并背书 Transaction,并提交给 Channel Network。 跟下文不相干

在一段合约中有注释一些不用字段
// 生产信息
type ProInfo struct {
FoodMFRSName string json:FoodMFRSName //生产商名称
// FoodMFRSCode string json:FoodMFRSCode //生产商编号
FoodName string json:FoodName //商品名称
FoodProductCode string json:FoodProductCode //商品编码
// FoodTraceCode []string json:FoodTraceCode //溯源码,目前去除该字段
// FoodTraceCodeNum string json:FoodTraceCodeNum //溯源码数量
FoodTxID string json:FoodTxID //交易ID
}
创建channel,里面加入了两个组织 nemox、memberorg
分别在nemox、memberorg 中安装合约
使用在 memberorg 组织 进行实例化,实例化只有一次 使用任意一个组织均可,但最终会先启动一个 合约实例命名中包含memberorg 。(其实两个组织 就会启动两个 合约实例,后面会提到)
当该合约部署完成后去调用和查询合约,出现奇怪的现象:
1.在nemox组织下 调用合约,传的 args 为上面字段中非屏蔽的几个,调用后会一直卡着,后来才发现之前只启动了memberorg 命名的合约,其实只有在memberorg 组织下访问才会用到这个实例,而nemox 命名的实例此时并没有启动,在调用后会去启动,等待1min左右,合约调用成功
2.在memberorg 下调用合约,传的 args 也为上面字段中非屏蔽的几个,但此时会提示 参数个数不对,实际安装的合约参数个数是没有把屏蔽的个数加进去,按说应该正常调用,后面反复测试发现只有把屏蔽的几个字段加进去才能调用成功。相当于把之前的屏蔽失效了,但在nemox中又是正常,不知道是不是算 合约的bug。必须要把不用字段直接删除,重新升级合约,然后在两个组织访问才正常。

分别在不同组织下,调用查询合约的结果:

调用合约:
[email protected]# 
./peer.sh chaincode invoke  -o orderer.nemox.example.com:33333 -C nemoxchannel -n food -c '{"function":"addProInfo","Args":["foodID90022","22","33","44"]}'

[email protected]# 
./peer.sh chaincode invoke  -o orderer.nemox.example.com:33333 -C nemoxchannel -n food -c '{"function":"addProInfo","Args":["foodID90033","3","","4","5"]}'

查询合约:
[email protected]# 
./peer.sh chaincode query  -o orderer.nemox.example.com:33333  -C nemoxchannel -n food -c '{"function":"getProInfo","Args":["foodID90022"]}'
{"FoodMFRSName":"22","FoodName":"44","FoodProductCode":"55","FoodTxID":"4982247453388ebb8f979d7985c59243c481a3d01f867dc79a602c8a9f6249e8"}

[email protected]# 
./peer.sh chaincode query  -o orderer.nemox.example.com:33333  -C nemoxchannel -n food -c '{"function":"getProInfo","Args":["foodID90033"]}'
{"FoodMFRSName":"3","FoodName":"4","FoodProductCode":"5","FoodTxID":"6bb128b3448537bdc8f4048ec60a0e8613cac6c5008b9dac387e0d050fec2d47"}

[email protected]# 
./peer.sh chaincode query  -o orderer.nemox.example.com:33333  -C nemoxchannel -n food -c '{"function":"getProInfo","Args":["foodID90033"]}'
{"FoodMFRSName":"3","FoodMFRSCode":"","FoodName":"4","FoodProductCode":"5","FoodTraceCode":null,"FoodTraceCodeNum":"","FoodTxID":"6bb128b3448537bdc8f4048ec60a0e8613cac6c5008b9dac387e0d050fec2d47"}

[email protected]# 
./peer.sh chaincode query  -o orderer.nemox.example.com:33333  -C nemoxchannel -n food -c '{"function":"getProInfo","Args":["foodID90022"]}'
{"FoodMFRSName":"22","FoodMFRSCode":"33","FoodName":"44","FoodProductCode":"55","FoodTraceCode":["66","66"],"FoodTraceCodeNum":"77","FoodTxID":"4982247453388ebb8f979d7985c59243c481a3d01f867dc79a602c8a9f6249e8"}

``

.

你可能感兴趣的:(fabric 合约bug-里面不用字段不能注释)