Fabric笔记(二) test-network安装链码源码详解

本文详细解析了在Hyperledger Fabric中进行链码安装的过程,包括从设置环境变量、创建提案到提交提案的步骤。讲解了如何使用`peer lifecycle chaincode install`命令,以及涉及到的内部函数如`InstallCmd`、`NewClientConnections`、`parsePeerConnectionParameters`等。同时,介绍了签名者的序列化和提案的创建与签名,展示了如何通过Endorser Client与Endorser节点交互来完成链码的安装。

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

链码安装

指令: peer lifecycle chaincode install ${CC_NAME}.tar.gz

lifecycle chaincode install

代码位置: internal/peer/lifecycle

源码解析

指令: internal/peer/lifecycle/chaincode/install.go

InstallCmd函数

步骤1 NewClientConnections

  1. 背书Endorser及排序Orderer的Client来自于脚本中的fabric-samples/test-network/scripts/envVar.sh的setGlobalsCLI函数的变量设置CORE_PEER_ADDRESS

  2. 由parsePeerConnectionParameters函数设置

流程2 Install

  func (i *Installer) Install() error {
      err := i.Input.Validate()
      if err != nil {
  	    return err
      }

      pkgBytes, err := i.Reader.ReadFile(i.Input.PackageFile)
      if err != nil {
  	    return errors.WithMessagef(err, "failed to read chaincode package at '%s'", i.Input.PackageFile)
      }

      serializedSigner, err := i.Signer.Serialize()
      if err != nil {
  	    return errors.Wrap(err, "failed to serialize signer")
      }

      proposal, err := i.createInstallProposal(pkgBytes, serializedSigner)
      if err != nil {
  	    return err
      }

      signedProposal, err := signProposal(proposal, i.Signer)
      if err != nil {
  	    return errors.WithMessage(err, "failed to create signed proposal for chaincode install")
      }

      return i.submitInstallProposal(signedProposal)
  }
2.1 读取链码文件到[]byte中
 pkgBytes, err := i.Reader.ReadFile(i.Input.PackageFile)
2.2 创建提案proposal
 proposal, err := i.createInstallProposal(pkgBytes, serializedSigner)

将链码和参数,签名者封装到proposal中

2.3 签名提案proposal
  signedProposal, err := signProposal(proposal, i.Signer)
2.4 提交提案proposal
  submitInstallProposal
submitInstallProposal
  proposalResponse, err := i.EndorserClient.ProcessProposal(context.Background(), signedProposal)

将链码和参数封装到
由EndorserClient向Endorser的Peer节点发送消息

补充签名者信息
1. 默认签名者 bccspmsp

msp/mspimpl.go

2. 默认签名者 bccspmsp 初始化

msp/mspimplsetup.go setupV142

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值