长沙市住房与城乡建设厅网站,网站 错误代码,网站建设需求调查问卷,个人公司注册流程图简介
首先是根据b站的视频 hyperledger-fabric【3】在 java 应用中访问合约 以及hyperledger-fabric【5】Java应用和私有数据#xff0c;本文章主要讲述的是视频中我遇到的问题#xff0c;以及相关知识点的总结。
遇到的问题
问题1#xff1a;git clone下载下来的代码发现…简介
首先是根据b站的视频 hyperledger-fabric【3】在 java 应用中访问合约 以及hyperledger-fabric【5】Java应用和私有数据本文章主要讲述的是视频中我遇到的问题以及相关知识点的总结。
遇到的问题
问题1git clone下载下来的代码发现与视频中的代码不一致的问题启动项目报错error create bean
遇到这个问题我的第一反应就是up主后续的代码也用的是这个所以代码更新了。所以查阅了相关的资料可以在gitte中下载历史版本的代码。可以参考 https://blog.csdn.net/weixin_45477146/article/details/133344063这篇文章中的额gitte篇里面有讲述如何下载历史版本
但是这个问题治标不治本总体来说呢就是spring boot启动之后会去扫描配置文件默认的配置文件是application.properties但是由于代码更新了会发现没有默认的配置文件那么就需要手动去修改启动项的配置文件否则的话HyperLedgerFabricProperties类的值均为null了那么就会error create bean。下面的图讲解一下出现问题的具体位置。 读取不到资源文件中的参数 解决办法 点击-》editConfiguration 在activeProfile中点击输入配置文件的名字,由于这里是application-org1.properties所以在这里的参数填写为org1即可。
问题2使用POSTman测试的时候录入一条数据成功但是查询数据失败。
提前录入一条数据再使用postman进行测试发现数据并没有录入成功报错信息显示不存在这样的一条数据。 进入到linux服务器中直接使用命令进行查询发现也是报错不存在这样一条数据。 此时对比视频中的代码发现问题在于evaluateTransaction方法和submitTransaction方法。如下图。 下载下来的代码和视频中的代码还是有些许不一样的地方需要对每个方法对比视频中的进行修改其中需要修改的是createCat,updateCat,deleteCatByKey三个方法。下面讲解一下evaluateTransaction和submitTransaction的区别。
evaluateTransaction是获取到指定的结果但是并不会提交到账本当中去所以实际上根本没有对账本进行更改submitTransaction与上述不同是提交到账本的实际做出了更改的。与之同样的还有createTransaction方法。
综上所述就是使用到增删改的时候使用submitTransaction或者createTransaction。使用查询的时候使用evaluateTransaction方法。
知识点总结
私有数据
私有数据和正常部署java应用有几个不同的点其他都是一致的。首先需要配置文件例如附上链接https://hyperledger-fabric.readthedocs.io/zh-cn/latest/private-data-arch.html文档中有描述这段集合的内容如下。 需要编写好一个类似的JSON文件并且放到对应的Java合约代码中去如下图位置。并且需要上传到服务器中指定的位置。 上传到指定位置后即可进行升级合约或者说是重新部署合约这里需要注意两点第一点就是在对链码进行批准和提交时需要在命令后面添加–collections-config附上文档参考连接https://hyperledger-fabric.readthedocs.io/zh-cn/latest/private-data-arch.html。第二点就是若是升级代码需要对安装链码包的label进行更改不可以和已经安装的链码包起冲突以及sequence的序号也不可以和之前已经安装的sequence号码起冲突以及version的版本号。附上两段私有数据、正常情况批准链码通过的命令。
## 这段是私有数据
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name hyperledger-fabric-contract-java-demo --version 4.0 --collections-config ../chaincode/hyperledger-fabric-contract-java-demo/collections_config.json --signature-policy OR(Org1MSP.member,Org2MSP.member) --package-id $NEW_CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
# 这段是正常情况
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name hyperledger-fabric-contract-java-demo --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem可以看到明显多出了如下这段命令
--version 4.0 --collections-config ../chaincode/hyperledger-fabric-contract-java-demo/collections_config.json --signature-policy OR(Org1MSP.member,Org2MSP.member) 解析
–version 4.0: 指定链码的版本号为4.0。–collections-config …/chaincode/hyperledger-fabric-contract-java-demo/collections_config.json: 指定了一个存储集合配置的 JSON 文件的路径。在Hyperledger Fabric中集合是用于存储私有数据的方式而集合配置定义了这些集合的规则。–signature-policy “OR(‘Org1MSP.member’,‘Org2MSP.member’)”: 指定链码的背书策略endorsement policy。这个特定的策略是逻辑上的 “OR”表示只需要来自Org1或Org2的成员的签名即可。在链码实例化时这个策略规定了哪些组织的成员必须为链码背书。
具体的操作命令可以去看合约代码项目中的文档其他的操作命令都与安装部署时的大差不差建议看“安装链码、升级合约、私有数据链码定义”这三篇文档即可。