Go程序连接Fabric链码时connect.yaml的Registrar字段报错如何解决
报错关联与原因说明
两次报错存在直接关联,属于错误修复方式不正确引发的连锁问题:
- 第一次报错是连接配置的字段格式不符合Fabric Go SDK的解析规则,导致配置初始化直接失败
- 第二次报错是删除了必要的身份配置项后,SDK缺少合法身份凭证执行后续的通道配置查询操作,因此触发新的报错
第一次报错触发原因
你当前使用的Fabric Go SDK版本中,certificateAuthorities配置项下的registrar字段要求为单Map对象,但你配置中用-声明为了YAML数组(Slice),类型不匹配导致配置解析失败,直接抛出你看到的类型错误。
第二次报错触发原因
registrar字段存储的是CA节点的管理员 enroll 凭证,是SDK初始化身份、请求Fabric网络资源的必要配置。你删除该字段后,SDK没有可用的身份凭证去查询通道的区块配置信息,因此在创建通道客户端时抛出target(s) required错误。
修复方案
不需要删除registrar配置,只需要将所有CA节点下的registrar从数组格式修改为单对象格式即可:
原错误写法:
registrar: - enrollId: admin enrollSecret: adminpw
修改后正确写法:
registrar: enrollId: admin enrollSecret: adminpw
额外潜在问题修复
你当前配置中financedepartorderer.amops.com的grpcOptions.hostnameOverride字段误写为agrimacownerorderer.amops.com,需要修改为financedepartorderer.amops.com,否则后续TLS握手会失败。
内容的提问来源于stack exchange,提问作者jing
相关产品推荐
相关产品推荐

