超级账本fabric带持久化数据升级到1.2时所遇的 implicit threshold 问题

本文详细记录了Hyperledger Fabric从1.0.6版本升级至1.2版本过程中遇到的各种问题及解决方案,包括环境变量配置、证书生成、tx文件创建、通道升级、智能合约启动等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

first-network 1.2.1

无问题

e2e_cli git1.2.1官方版本跑例子时

docker tag 1.2.1镜像latest标签
order/peer加如下环境变量

GODEBUG=netdns=go

启动还是报错
在这里插入图片描述

Error: error endorsing query: rpc error: code = Unknown desc = Failed evaluating policy on signed data during check policy on channel [mychannel] with policy [/Channel/Application/Writers]: [Failed to reach implicit threshold of 1 sub-policies, required 1 remaining] - proposal response:

通过搜索引擎找到了解决方案 修改policies:fabric1-2下e2e-cli问题记录

按提示修改 e2e_cli下的configtx.yaml,在Org3处进行添加Org3MSP.member,如下。

Policies:
	Readers:
	Type: Signature
	Rule: "OR('Org3MSP.admin', 'Org3MSP.peer', 'Org3MSP.client', 'Org3MSP.member')"
	Writers:
	Type: Signature
	Rule: "OR('Org3MSP.admin', 'Org3MSP.client', 'Org3MSP.member')"
	Admins:
	Type: Signature
	Rule: "OR('Org3MSP.admin')"

e2e_cli定制版1.2.1升级时

域名改成公司分配域名,通道名改成bgihealth,mycc也相应变了下
先单纯更改域名启动改造后的e2e_cli-1.2.1项目
在这里插入图片描述
Error: got unexpected status: FORBIDDEN – Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied

在这里插入图片描述
Evaluation Failed: Only 0 policies were satisfied, but needed 1 of
Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied

对比yaml文件,发现EnableNodeOUs属性不同

在这里插入图片描述

更改yaml配置,重新生成证书和tx文件,问题解决

参考过的资料:

带旧数据升级到1.2

带旧数据升级时,因为1.1.1的证书生成没有使能EnableNodeOUs特性,
切换成1.2镜像时继续用1.0.6的证书,报错如下
在这里插入图片描述

Error: got unexpected status: BAD_REQUEST – cannot enable application capabilities without orderer support first

替换成1.2镜像时同时切换1.2证书,又报错如下
在这里插入图片描述
Error: got unexpected status: FORBIDDEN – Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied

尝试1
方法无效

注释掉
signConfigtxAsPeerOrg 1 config_update_in_envelope.pb
# Prepare to sign the update as the PeerOrg2.Admin
setGlobals 0 2

在这里插入图片描述
无用

只注释掉
signConfigtxAsPeerOrg 1 config_update_in_envelope.pb

在这里插入图片描述

尝试2
比对1.0.6,1.1.1,1.2.1版本的configtx.yaml和crypto-config.yaml

考虑到crypto-config.yaml的1.1.1比1.0.6多了个EnableNodeOUs
还有1.2.1多了几个policies

在这里插入图片描述

后续突然想到导出升级过程中的config.json和modified_config.json,比对正常数据升级,发现旧数据还缺少V1_1的属性。
在这里插入图片描述

可能是搭建时用的是1.0.6版本工具创建的tx文件。
意识到一并升级V1_1属性和1.2看看

终于升级成功了。 测试读写也正常了

总结

我本次问题的主要原因,是因为脚本从1.0.6修改过来,缺少了一些属性,例如polices 、EnableNodeOUs。这些属性影响到了tx文件、证书,最终写在了区块里。而我们要做的是修正yaml文件后再使这些属性生效:清除区块链数据重新搭建也可,保持旧数据更新配置块也可。

其他

configtxgen等工具版本
升级时保持旧版本即可。升级后创建新通道文件时要对应升级后的版本。
configtx.yaml  crypto-config.yaml  configtxgen的版本
kafka/zookeeper版本问题

恢复1.1.1环境,出错如下:zookeeper中执行不了 docker-entrypoint.sh
在这里插入图片描述

后来发现是kafka/zookeeper被本机生成编译过,latest标签对应了旧版1.0.6

ccenv版本问题

先前复制了测试环境244服务器的旧数据,在213服务器上解决了升级属性的问题。然后切回244验证时,碰到如下问题
在这里插入图片描述

智能合约启动报错如下:
在这里插入图片描述

后对比两台服务器镜像,发现ccenv版本不同。213并没有1.2的版本,而244的latest标签页是打在1.4上。
将两台服务器的ccenv latest镜像对应到1.2后,启动并升级成功。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值