链码安装
指令: peer lifecycle chaincode install ${CC_NAME}.tar.gz
lifecycle chaincode install
代码位置: internal/peer/lifecycle
源码解析
指令: internal/peer/lifecycle/chaincode/install.go
InstallCmd函数
步骤1 NewClientConnections
-
背书Endorser及排序Orderer的Client来自于脚本中的fabric-samples/test-network/scripts/envVar.sh的setGlobalsCLI函数的变量设置CORE_PEER_ADDRESS
-
由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
本文详细解析了在Hyperledger Fabric中进行链码安装的过程,包括从设置环境变量、创建提案到提交提案的步骤。讲解了如何使用`peer lifecycle chaincode install`命令,以及涉及到的内部函数如`InstallCmd`、`NewClientConnections`、`parsePeerConnectionParameters`等。同时,介绍了签名者的序列化和提案的创建与签名,展示了如何通过Endorser Client与Endorser节点交互来完成链码的安装。
525

被折叠的 条评论
为什么被折叠?



