美文网首页
fabric 合约bug-里面不用字段不能注释

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

作者: yuluxs | 来源:发表于2019-07-26 18:03 被阅读0次

    操作合约:命令 "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。必须要把不用字段直接删除,重新升级合约,然后在两个组织访问才正常。

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

    调用合约:
    Admin@memberorg.example.com# 
    ./peer.sh chaincode invoke  -o orderer.nemox.example.com:33333 -C nemoxchannel -n food -c '{"function":"addProInfo","Args":["foodID90022","22","33","44"]}'
    
    Admin@nemox.example.com# 
    ./peer.sh chaincode invoke  -o orderer.nemox.example.com:33333 -C nemoxchannel -n food -c '{"function":"addProInfo","Args":["foodID90033","3","","4","5"]}'
    
    查询合约:
    Admin@nemox.example.com# 
    ./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"}
    
    Admin@nemox.example.com# 
    ./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"}
    
    Admin@memberorg.example.com# 
    ./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"}
    
    Admin@memberorg.example.com# 
    ./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-里面不用字段不能注释

          本文链接:https://www.haomeiwen.com/subject/wsmdrctx.html