IBM区块链平台Hyperledger Fabric链码报错required chaincodes安装不足求助
Hyperledger Fabric 链码报错
required chain codes are not installed on sufficient peers 排查方案 排查步骤
- 校验链码包ID一致性
首先确认所有peer节点安装的链码包ID完全匹配,且和通道上已批准的链码定义的包ID一致:
在每个peer节点执行命令peer lifecycle chaincode queryinstalled -O json,对比返回的package_id字段,IBM Blockchain Platform控制台也可直接在节点详情页查看已安装链码的包ID。
特别注意:哪怕链码版本号、sequence值完全一致,只要不同节点打包生成的包哈希不同,就会被判定为未安装正确链码
- 校验链码包ID一致性
- 校验通道链码定义状态
执行命令peer lifecycle chaincode querycommitted -C testchannel2 -n test-cc,确认通道上已提交的链码的sequence值(你日志中为5)、版本号(你日志中为0.0.9)、背书策略和所有节点批准的配置完全一致。如果有节点未批准对应sequence的链码定义,也会触发discovery服务报错。
- 校验通道链码定义状态
- 检查链码容器运行状态
链码安装成功不代表容器可以正常启动,在节点宿主执行docker ps | grep test-cc_0.0.9或者在IBM Blockchain Platform控制台查看节点关联容器,确认两个peer的链码容器都处于运行状态,没有崩溃退出。如果容器启动失败,查看链码容器日志排查代码运行错误。
- 检查链码容器运行状态
- 核对背书策略要求
你日志中显示的链码背书策略为默认的Channel/Application/Endorsement,如果该策略要求至少2个节点背书,但你的应用连接的节点子集里只有1个节点的链码正常运行,discovery服务无法凑齐足够的背书节点,就会返回该报错。
- 核对背书策略要求
- 应急修复方案
如果以上检查都无异常,可将链码的sequence值加1,重新打包、在所有节点安装、所有组织批准、重新提交链码定义,触发节点刷新discovery缓存和链码容器,即可解决隐性的状态不一致问题。
- 应急修复方案
内容的提问来源于stack exchange,提问作者Matias Salimbene
相关产品推荐
相关产品推荐

