新增链码查询失败:通道无具备账本查询角色节点问题求助
解决“通道中未定义具有账本查询角色的节点”报错
问题描述
部署新链码到通道后返回状态码200,但查询该链码时触发以下错误:
通道中未定义具有账本查询角色的节点。执行交易失败:错误:通道中未定义具有账本查询角色的节点。
相关场景:
- 删除
start.sh中的特定链码后,系统恢复正常运行 - 已核对
config.yaml配置,未发现异常,其余链码均可正常使用
报错截图:
排查与解决步骤
- 检查新链码的背书策略
新链码的背书策略可能未正确指定具备查询权限的节点。查看链码部署时的背书策略参数,确保包含通道内已配置账本查询角色的节点。 - 验证节点的角色配置
确认通道内节点是否正确配置了ledger query角色:
- 检查节点
core.yaml中是否启用了查询相关权限 - 查看通道配置块(
config_block),确认节点角色属性包含查询权限
- 核对链码的通道绑定状态
确认新链码是否正确绑定到目标通道,且通道内节点已同步链码部署信息。可通过以下命令检查:
# 检查已安装的链码 peer chaincode list --installed # 检查已实例化的链码 peer chaincode list --instantiated
- 排查
start.sh的链码启动逻辑
移除特定链码后系统正常,说明start.sh中可能存在与新链码冲突的配置。对比新旧链码在start.sh中的启动参数,检查角色权限相关的差异。 - 重新实例化链码
若部署返回200但未完成权限绑定,可尝试重新实例化链码并指定明确的背书策略:
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"
注意替换命令中的组织、通道、链码名称等参数为实际环境值。
内容的提问来源于stack exchange,提问作者Haroon Rasheed
相关产品推荐
相关产品推荐

