跨物理机部署Hyperledger Composer Rest Server启动失败排查
解决Hyperledger Composer跨组织Rest Server连接失败(chaincode fingerprint mismatch)问题
我之前踩过完全一样的坑,这个报错核心是跨组织Peer节点的链码指纹不匹配,再加上系统注册表同步异常导致的,给你一套实操性强的排查修复步骤:
1. 校验跨组织链码安装的一致性
链码指纹不匹配本质是两个组织Peer上的链码包ID或者版本不一致,先做以下检查:
- 在org1和org2的Peer节点分别执行:
对比输出里的composer network list -c admin@networkchaincode package ID,必须完全相同。如果不一样,说明两边安装的链码包不是同一个源文件。 - 修复方法:
- 在org2的Peer上卸载旧链码:
composer network uninstall -c admin-org2@network -n network -V 0.0.1 - 从org1节点拷贝原始的
network@0.0.1.bna链码包到org2节点 - 在org2节点重新安装链码:
composer network install -c admin-org2@network -a network@0.0.1.bna
- 在org2的Peer上卸载旧链码:
2. 修复系统注册表对象不存在的问题
这个错误通常是Peer世界状态未同步完全导致的,按以下步骤处理:
- 重启org2的Peer容器,清除缓存:
docker restart peer0.org2.example.com - 强制同步通道配置到org2的Peer:
peer channel fetch config -o orderer.example.com:7050 -c mychannel --tls --cafile /etc/hyperledger/fabric/msp/tlscacerts/tlsca.example.com-cert.pem - 确保org2的Peer在网络启动时被正确纳入,重新启动网络(如果需要):
composer network start -c admin-org1@network -n network -V 0.0.1 -A admin-org2 -S adminpw -f networkadmin-org2.card
3. 检查Rest Server使用的连接卡片配置
确认bob-org2@network这个连接卡片指向的是org2的Peer资源:
- 打开本地连接配置文件(路径一般是
~/.composer/connection-profiles/network/connection.json),检查:peers节点下peer0.org2.example.com的地址、证书路径是否正确certificateAuthorities是否指向org2的CA服务
- 如果配置有误,重新生成并导入连接卡片:
composer connection create -c admin-org2@network -f connection-org2.json composer card import -f connection-org2.json
4. 清理Docker容器与Composer本地缓存
旧缓存经常会引发各种奇怪的兼容性问题:
- 停止并删除org2的链码容器:
docker stop $(docker ps -q -f name=peer0.org2.example.com-network) docker rm $(docker ps -aq -f name=peer0.org2.example.com-network) - 清理Composer本地卡片缓存,重新导入必要卡片:
rm -rf ~/.composer/cards composer card import -f admin-org2.card composer card import -f bob-org2.card
如果以上步骤都没能解决问题,建议检查两个组织的Fabric版本、Composer版本是否完全一致,版本不兼容也是这类报错的常见诱因。
内容的提问来源于stack exchange,提问作者Louis Shekhtman
相关产品推荐
相关产品推荐

