Hyperledger Fabric链码实例化无报错但peer查询不到实例问题求助
Hyperledger Fabric 1.4 链码实例化无记录排查方向
- 检查实例化流程完整性
你当前代码仅调用了channel.sendInstantiationProposal()向背书节点发送实例化提案,未完成完整交易流程。链码实例化属于通道交易,需要先对返回的Collection<ProposalResponse>做合法性校验,再调用channel.sendTransaction()将有效背书的提案提交给Orderer节点,待交易共识出块并同步到Peer节点后,实例化记录才会持久化到节点状态库,否则无法查询到实例记录。 - 校验实例化提案响应合法性
遍历所有返回的ProposalResponse,逐个调用isSuccess()方法校验是否背书通过,若存在失败响应,打印getMessage()、getStatus()字段排查原因:常见问题包括目标Peer未安装对应版本链码、提交身份无链码实例化权限、背书策略不满足等。 - 确认查询操作配置正确
执行peer chaincode list --instantiated -C deconeb-channel时,校验当前Peer节点的环境变量是否匹配目标通道的组织MSP配置,也可直接指定实例化请求发送的Peer节点查询,避免查询到未同步区块的节点:peer chaincode list --instantiated -C deconeb-channel --peerAddresses <peer1节点访问地址:端口> - 排查Orderer节点运行日志
若已完成sendTransaction()提交步骤,查看Orderer节点日志确认实例化交易是否被正常接收、是否通过权限校验、是否完成出块。常见Orderer侧拒绝原因包括:交易签名校验失败、提交身份无通道写入权限等。 - 检查链码容器运行状态
执行docker ps -a | grep dev-peer1.myorg.com-productOwnership-1.0查看对应链码容器是否正常运行,若容器已退出,执行docker logs <链码容器ID>查看启动日志,确认init方法是否执行报错。你当前代码给init方法传入了空字符串参数,若Java链码init方法有入参非空校验,会直接抛出异常导致链码启动失败,无法生成实例记录。
内容的提问来源于stack exchange,提问作者user10931326
相关产品推荐
相关产品推荐

