Fabric 中Chaincode版本

Fabric中chain code支持升级,用name+version来标识一个chain code,在调用一个chain code时可以指定version,但是endorser只会调用目标channel中chaincode的最新版本。在endorser接到请求是他会调用LSCC获取执行chain code的信息,当一个chain code升级后,LSCC就会更新该chaincode信息。

那么一个问题就是如果一个chaincode已经升级,但是有个别节点还未获得包含升级信息的区块,这个时候如果请求到该节点会如何?实际上,在执行chaincode时,因为该节点未获得升级信息,所以他还会用当前版本升级,但在返回propose response中会包含执行chain code的版本信息。Client在收集足够的response后,发送transaction到orderer service,orderer service会将该transaction打包到一个区块中。因为升级发生在chaincode调用之前,tx的区块肯定在升级区块之后。则Peer先收到升级区块,后收到包含tx的区块,在验证tx时就会发现chaincode已经升级了,所以就会标记该chaincode未非法(EXPIRED_CHAINCODE)

参考:

https://github.com/hyperledger/fabric/blob/release-1.1/protos/peer/chaincode.proto

https://github.com/hyperledger/fabric/blob/release-1.1/core/endorser/endorser.go

https://github.com/hyperledger/fabric/blob/release-1.1/core/committer/txvalidator/validator.go

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文:https://hyperledgercn.github.io/hyperledgerDocs/glossa...
    yuyangray阅读 4,090评论 0 0
  • 对官方的原文进行了简单的翻译:arch-deep-dive感觉原文有一点点啰嗦(更可能是本人英文有点搓),翻译的更...
    wydnpu阅读 7,535评论 1 4
  • 来大学的第二年了,身份也在做着不停地转变。一年前我们还是懵懂无知的少年,各大部门协会几头跑,忙着适应大学生活,也忙...
    衬衫h阅读 4,664评论 2 5
  • 秋意渐浓,看到朋友圈里发了好多芦苇的照片,决定去环湖东路的湿地公园赏芦苇。 轻风拂过,苇杆轻轻摇曳,每一枝...
    一米阳光27阅读 4,487评论 0 0
  • 最近看The Bible Project的Word Study系列,学到关于圣经当中的“平安”这个概念,得着良多。...
    西门要成为彼得阅读 7,775评论 2 3

友情链接更多精彩内容