AWS上安装运行测试链码报实例化策略违规错误如何解决
Fabric链码部署报实例化策略签名不满足错误修复方案
报错现象
执行链码安装、实例化/提交运行的操作时,抛出如下错误:
Error: could not assemble transaction, err proposal response was not successful, error code 500, msg instantiation policy violation: signature set did not satisfy policy
根因与修复方法
该错误本质是提交链码部署交易时携带的签名集合,没有达到链码实例化策略要求的签名阈值,按以下场景逐一排查修复即可:
- 确认签名身份的权限与数量符合策略要求
Fabric链码默认实例化策略要求通道内满足多数组织管理员签名,多组织通道场景下如果仅使用单个组织管理员身份提交部署请求,会直接触发报错。需要收集够策略要求数量的对应组织管理员签名后,再提交部署交易。 - 核对链码生命周期全流程的执行身份
针对Fabric 2.0及以上版本的生命周期流程,链码打包、安装到Peer节点、组织审批链码定义这几个步骤,必须使用对应组织的Admin身份操作,普通用户身份、节点身份没有足够权限。切换到组织管理员身份后,重新执行从链码安装到审批的全流程即可。 - 检查操作环境的身份配置参数
执行链码相关命令前,先核对当前终端的环境变量配置:CORE_PEER_MSPCONFIGPATH必须指向对应组织管理员的MSP目录,不能误填普通用户、节点的MSP路径;CORE_PEER_LOCALMSPID必须和当前身份所属组织的MSP ID完全一致,拼写错误、路径错配都会导致签名被判定为无效,无法通过策略校验。 - 校验自定义实例化策略配置
如果你在审批链码定义时手动通过--signature-policy参数指定了自定义策略,要确认策略规则和实际收集的签名匹配,比如策略要求Org1、Org2双管理员共同签名,就不能仅提交Org1的单签名交易。如果没有特殊需求,不建议手动加该参数,使用默认实例化策略即可避免规则写错的问题。
验证方式
修复后先执行peer lifecycle chaincode queryapproved -C <通道名> -n <链码名> --version <链码版本>命令,确认所有需要参与的组织都完成了对应版本链码的审批,再执行链码提交操作即可正常部署。
内容的提问来源于stack exchange,提问作者Vivek Sharma
相关产品推荐
相关产品推荐

