Hyperledger Fabric链码审批遇ENDORSEMENT_POLICY_FAILURE错误求助
解决Hyperledger Fabric链码审批时的ENDORSEMENT_POLICY_FAILURE错误
核心原因
该错误是因为链码的背书策略要求的背书节点/组织条件,当前网络无法满足。你的网络仅包含org1的1个peer,需从以下几个维度排查修复:
1. 显式指定匹配当前网络的背书策略
默认链码背书策略为AND ('Org1MSP.peer'),但如果教程中自定义了更严格的策略(如要求多组织/多peer),就会触发失败。审批时可以直接指定适配单peer的策略:
peer lifecycle chaincode approveformyorg -o orderer0.org0.com:7050 --channelID bchannel --name [你的链码名] --version 1.0 --package-id [你的链码包ID] --sequence 1 --signature-policy "AND ('Org1MSP.peer')"
注:[你的链码名]和[你的链码包ID]替换为实际值,链码包ID可通过peer lifecycle chaincode queryinstalled命令获取。
2. 校验Peer的MSP与通道配置一致性
确认org1的MSP已正确加入通道配置:
- 获取通道配置块:
peer channel fetch config config_block.pb -o orderer0.org0.com:7050 -c bchannel
- 解码配置块为JSON:
configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json
- 打开
config.json,检查channel_group.groups.Application.groups.Org1MSP节点是否存在,且MSPIdentifier值为Org1MSP。
3. 确认链码安装与审批的参数一致性
确保审批命令中的--package-id和peer上已安装的链码包ID完全一致,避免因拼写错误导致背书验证失败。
4. 检查Peer的通道加入状态
确认peer1.org1.com已成功加入bchannel:
peer channel list peer channel getinfo -c bchannel
若未加入,需重新执行peer channel join命令。
内容的提问来源于stack exchange,提问作者Lane
相关产品推荐
相关产品推荐

