Hyperledger Fabric商业票据链码更新报错求助
问题根源与解决方案
你遇到的这个错误,核心原因是你用了旧链码生命周期的upgrade命令,但你的通道已经切换到新的链码生命周期(Lifecycle)模式——新生命周期下,负责旧流程的LSCC(链码生命周期系统链码)会被设置为只读,不再处理upgrade这类旧命令的请求。
为什么不需要用peer chaincode upgrade?
在新链码生命周期中,根本没有upgrade这个命令!你已经完成的三步操作:
peer lifecycle chaincode install(安装新版本链码)peer lifecycle chaincode approveformyorg(双方组织审批新版本)peer lifecycle chaincode commit(提交新版本到通道)
这一套流程已经完成了链码版本的更新,相当于旧生命周期里的upgrade操作。你额外执行旧的upgrade命令,反而会触发LSCC的只读限制,导致报错。
正确的后续操作
验证链码版本是否提交成功
执行以下命令查看通道上已提交的链码信息:peer lifecycle chaincode querycommitted -C mychannel -n papercontract如果输出里显示版本为
0.4,说明你的链码已经成功更新到新版本了。测试链码功能
可以通过调用链码来验证新版本是否正常工作,比如执行查询或调用命令:# 示例查询命令 peer chaincode query -C mychannel -n papercontract -c '{"Args":["queryAllCommercialPaper"]}'
关键提醒
新链码生命周期的流程逻辑和旧版本完全不同:
- 旧流程:
install -> instantiate -> upgrade - 新流程:
install -> approveformyorg -> commit(每次更新版本都重复这三步,不需要单独的upgrade步骤)
以后更新链码时,直接走新生命周期的三步流程即可,不要再使用旧的instantiate或upgrade命令。
内容的提问来源于stack exchange,提问作者Петр
相关产品推荐
相关产品推荐

