CN112882725A - 基于Git的链码管理方法、装置、电子设备及存储介质 - Google Patents

基于Git的链码管理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112882725A
CN112882725A CN202110086676.7A CN202110086676A CN112882725A CN 112882725 A CN112882725 A CN 112882725A CN 202110086676 A CN202110086676 A CN 202110086676A CN 112882725 A CN112882725 A CN 112882725A
Authority
CN
China
Prior art keywords
chain code
code
chain
git
sdk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110086676.7A
Other languages
English (en)
Inventor
朱伟进
黄武君
陈桂军
殷振威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Fortune Investment Group Co ltd
Original Assignee
Shenzhen Fortune Investment Group Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Fortune Investment Group Co ltd filed Critical Shenzhen Fortune Investment Group Co ltd
Priority to CN202110086676.7A priority Critical patent/CN112882725A/zh
Publication of CN112882725A publication Critical patent/CN112882725A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种基于Git的链码管理方法、装置、电子设备及存储介质,涉及区块链技术领域。所述方法包括:通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码;通过所述链码管理SDK对所述链码项目源码进行验证;在所述链码项目源码验证通过时,通过所述链码管理SDK将所述链码项目源码转换为链码封装数据;通过所述链码管理SDK调用指定接口将所述链码封装数据安装到至少一个对应节点,以完成所述至少一个对应节点的链码安装。所述方法通过链码管理SDK在Git服务进行链码安装等管理步骤,提高了链码管理的简便性和效率。

Description

基于Git的链码管理方法、装置、电子设备及存储介质
技术领域
本申请涉及区块链技术领域,具体而言,涉及一种基于Git的链码管理方法、装置、电子设备及存储介质。
背景技术
Fabric智能合约称为链码(chaincode),分为***链码和用户链码。***链码用来实现***层面的功能,用户链码实现用户的应用功能。链码被编译成一个独立的应用程序,运行于隔离的Docker容器中。
和以太坊相比,Fabric链码和底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当中,真正实现了逻辑与数据的分离,同时,链码采用Go、Java、NodeJS等语言编写。
现有的链码开发、存储、安装等管理过程中,没有统一的规范,针对不同的服务平台可能出现不同的处理方案,存在链码管理难度大、效率低的问题。
发明内容
有鉴于此,本申请实施例的目的在于提供一种基于Git的链码管理方法、装置、电子设备及存储介质,以改善现有技术中存在的链码管理难度大、效率低的问题。
本申请实施例提供了一种Git的链码管理方法,所述方法包括:通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码;通过所述链码管理SDK对所述链码项目源码进行验证;在所述链码项目源码验证通过时,通过所述链码管理SDK将所述链码项目源码转换为链码封装数据;通过所述链码管理SDK调用指定接口将所述链码封装数据安装到至少一个对应节点,以完成所述至少一个对应节点的链码安装。
在上述实现方式中,调用链码管理SDK对链码进行安装,通过内存进行链码存储,不需要额外进行链码存储,不需要手动对链码进行存储等操作,提高了链码管理的简便性和效率,同时基于Git服务进行链码的上传、下载等,管理成本低,不需要进行重复拷贝,避免了链码在拷贝过程中出错,提高了链码安装准确性,且基于Git对链码可靠性的验证,提高了链码安全性。
可选地,所述通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码,包括:向所述链码管理SDK传入Git链码仓库地址、Git登录用户名、Git登录密码和链码版本信息;通过所述链码管理SDK基于所述Git登录用户名和所述Git登录密码登录所述Git服务;通过所述链码管理SDK基于所述链码版本信息从所述Git链码仓库地址对应的Git资源库中获取所述链码项目源码;复制所述链码项目源码并存储。
在上述实现方式中,用户通过链码管理SDK传入参数即可实现链码的获取和存储,不需要手动对链码存储进行操作和管理,提高了链码管理的简便性和效率。
可选地,在所述链码项目源码为基于GO语言的链码时,所述通过所述链码管理SDK对所述链码项目源码进行验证,包括:通过所述链码管理SDK对所述链码项目源码进行版本一致性验证和版本发布者验证;在所述版本一致性验证和所述版本发布者验证通过时,通过所述链码管理SDK对所述链码项目源码进行依赖库完整性验证;在所述依赖库完整性验证通过时,确定所述链码项目源码验证通过。
在上述实现方式中,基于用户传入的参数和Git服务获取的相关参数进行匹配对链码项目源码进行验证,提高了链码管理的安全性。
可选地,所述通过所述链码管理SDK对所述链码项目源码进行依赖库完整性验证,包括:通过所述链码管理SDK提取所述链码项目源码中的依赖库和依赖信息,所述依赖库包括链码项目所使用的所有第三方工具包;通过所述链码管理SDK基于所述依赖信息确定所述依赖库是否完整。
在上述实现方式中,在进行链码安装前对链码项目源码中的依赖库完整性进行确认,提高了链码安装的正确性。
可选地,所述通过所述链码管理SDK将所述链码项目源码转换为链码封装数据,包括:通过所述链码管理SDK对所述链码项目源码进行压缩;通过所述链码管理SDK将压缩后的所述链码项目源码封装为peer.Proposal数据包;通过所述链码管理SDK采用Git登录用户的私钥对所述peer.Proposal数据包进行签名,以获得签名peer.Proposal数据包。
在上述实现方式中,通过链码管理SDK对链码项目源码进行压缩、封装和签名,从而能够在每个对应节点上进行链码安装,避免了人工处理的繁琐步骤,提高了链码安装的效率。
可选地,所述至少一个对应节点为至少一个对应peer节点,所述指定接口为所述至少一个对应peer节点的GRPC框架的ProcessProposal接口,所述通过所述链码管理SDK调用指定接口将所述链码封装数据安装到至少一个对应节点,包括:通过所述链码管理SDK调用所述ProcessProposal接口,将所述签名peer.Proposal数据包发送至所述至少一个对应peer节点。
在上述实现方式中,通过链码管理SDK调用ProcessProposal接口发送签名peer.Proposal数据包至peer节点进行安装,实现了签名peer.Proposal数据包的整体发送安装,提高了链码安装效率。
可选地,所述方法还包括:接收所述至少一个对应peer节点完成链码安装后的返回结果。
在上述实现方式中,接收链码安装后的返回结果能够基于其进行后续链码管理,保证了链码管理的简便性。
本申请实施例还提供了一种基于Git的链码管理装置,所述装置包括:源码获取模块,用于通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码;验证模块,用于通过所述链码管理SDK对所述链码项目源码进行验证;封装模块,用于在所述链码项目源码验证通过时,通过所述链码管理SDK将所述链码项目源码转换为链码封装数据;安装模块,用于通过所述链码管理SDK调用指定接口将所述链码封装数据安装到至少一个对应节点,以完成所述至少一个对应节点的链码安装。
在上述实现方式中,调用链码管理SDK对链码进行安装,通过内存进行链码存储,不需要额外进行链码存储,不需要手动对链码进行存储等操作,提高了链码管理的简便性和效率,同时基于Git服务进行链码的上传、下载等,管理成本低,不需要进行重复拷贝,避免了链码在拷贝过程中出错,提高了链码安装准确性,且基于Git对链码可靠性的验证,提高了链码安全性。
可选地,所述源码获取模块具体用于:向所述链码管理SDK传入Git链码仓库地址、Git登录用户名、Git登录密码和链码版本信息;通过所述链码管理SDK基于所述Git登录用户名和所述Git登录密码登录所述Git服务;通过所述链码管理SDK基于所述链码版本信息从所述Git链码仓库地址对应的Git资源库中获取所述链码项目源码;复制所述链码项目源码并存储。
在上述实现方式中,用户通过链码管理SDK传入参数即可实现链码的获取和存储,不需要手动对链码存储进行操作和管理,提高了链码管理的简便性和效率。
可选地,所述验证模块具体用于:通过所述链码管理SDK对所述链码项目源码进行版本一致性验证和版本发布者验证;在所述版本一致性验证和所述版本发布者验证通过时,通过所述链码管理SDK对所述链码项目源码进行依赖库完整性验证;在所述依赖库完整性验证通过时,确定所述链码项目源码验证通过。
在上述实现方式中,基于用户传入的参数和Git服务获取的相关参数进行匹配对链码项目源码进行验证,提高了链码管理的安全性。
可选地,所述验证模块具体用于:通过所述链码管理SDK提取所述链码项目源码中的依赖库和依赖信息,所述依赖库包括链码项目所使用的所有第三方工具包;通过所述链码管理SDK基于所述依赖信息确定所述依赖库是否完整。
在上述实现方式中,在进行链码安装前对链码项目源码中的依赖库完整性进行确认,提高了链码安装的正确性。
可选地,所述封装模块具体用于:通过所述链码管理SDK对所述链码项目源码进行压缩;通过所述链码管理SDK将压缩后的所述链码项目源码封装为peer.Proposal数据包;通过所述链码管理SDK采用Git登录用户的私钥对所述peer.Proposal数据包进行签名,以获得签名peer.Proposal数据包。
在上述实现方式中,通过链码管理SDK对链码项目源码进行压缩、封装和签名,从而能够在每个对应节点上进行链码安装,避免了人工处理的繁琐步骤,提高了链码安装的效率。
可选地,所述至少一个对应节点为至少一个对应peer节点,所述指定接口为所述至少一个对应peer节点的GRPC框架的ProcessProposal接口,所述安装模块具体用于:通过所述链码管理SDK调用所述ProcessProposal接口,将所述签名peer.Proposal数据包发送至所述至少一个对应peer节点。
在上述实现方式中,通过链码管理SDK调用ProcessProposal接口发送签名peer.Proposal数据包至peer节点进行安装,实现了签名peer.Proposal数据包的整体发送安装,提高了链码安装效率。
可选地,所述基于Git的链码管理装置还包括:结果返回模块,用于接收所述至少一个对应peer节点完成链码安装后的返回结果。
在上述实现方式中,接收链码安装后的返回结果能够基于其进行后续链码管理,保证了链码管理的简便性。
本申请实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述任一实现方式中的步骤。
本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种基于Git的链码管理方法的流程示意图。
图2为本申请实施例提供的一种链码项目源码获取步骤的流程示意图。
图3为本申请实施例提供的一种链码封装步骤的流程示意图。
图4为本申请实施例提供的一种基于Git的链码管理装置的模块示意图。
图标:20-基于Git的链码管理装置;21-源码获取模块;22-验证模块;23-封装模块;24-安装模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
经本申请人研究发现,现有的Fabric链码在开发、存储、版本管理和安装方面,大致为通过本地开发,本地存储,然后调用sdk或者通过命令直接安装,需要用户手动执行较为繁琐的操作,统一性和简便性较差,且降低了链码管理的效率。
为了改善上述问题,本申请实施例提供了一种基于Git的链码管理方法,请参考图1,图1为本申请实施例提供的一种基于Git的链码管理方法的流程示意图,该基于Git的链码管理方法的具体步骤可以如下:
Git是一个开源的分布式版本控制***,可以有效、高速地处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。因此本实施例采用Git服务进行链码项目源码的上传、下载、更新等,该Git服务可以是公共的,如github、gitlab、gitee等,也可以是私人搭建的Git服务。
在通过Git服务获取链码项目源码之前,需要开发者进行项目创建以及链码版本发布。
链码项目源码存储于Git服务中的Git资源库中,Git资源库中的链码项目源码也是由开发者基于Git服务上传以及更新维护的,其具体步骤可以是:用户创建Git账号;基于Git账号登录Git服务创建项目和仓库;一个开发者或多个开发者参与对该项目进行协调开发,每个开发者将该项目拷贝到本地完成开发后将代码提交至Git服务进行仓库存储;项目完成后指定一个对象进行版本发布。
其中,如果是基于GO语言开发的链码,进行版本发布前需要执行“go mod vendor”命令生成“/vendor”,执行“go list–deps-json”命令生成“metadata.json”,“/vendor”包含了链码所使用所有第三方工具包,“metadata.json”包含链码编译时的依赖信息。从而避免在安装过程中编译或者运行时依赖的库需要联网下载,在依赖库需要联网下载的情况下若网络不佳或者网络访问不了第三方库都有可能中断安装,从而提高了安装效率和成功率。
步骤S12:通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码。
本实施例中的链码管理是基于链码管理SDK(Software Development Kit)实现,SDK为软件开发工具包,是一些软件工程师为特定的软件包、软件框架、硬件平台、操作***等建立应用软件时的开发工具的集合。
链码管理SDK是基于Fabric源码封装的,具体可以参考Fabric命令手册中peerlifecycle chaincode install代码流程,该代码流程主要是将链码的源码和环境封装为一个链码安装打包文件,并传输到背书节点,将验证、链码封装、链码安装等相关代码和相关参数封装为链码管理SDK。
可选地,链码管理SDK需要封装的相关参数可以包括Git复制部分和gRPC(GoogleRemote Procedure Call,谷歌远程过程调用)部分,Git复制部分包括用户在Git服务的Git登录用户名、Git登录密码和链码版本信息等,gRPC部分主要包括与之对应的对应节点的TLS(Transport Layer Security,安全传输层协议)根证书和IP(Internet Protocol,网际互联协议)信息。
请参考图2,图2为本申请实施例提供的一种链码项目源码获取步骤的流程示意图,步骤S12具体可以包括如下子步骤:
步骤S121:向链码管理SDK传入Git链码仓库地址、Git登录用户名、Git登录密码和链码版本信息。
步骤S122:通过链码管理SDK基于Git登录用户名和Git登录密码登录Git服务。
步骤S123:通过链码管理SDK基于链码版本信息从Git链码仓库地址对应的Git资源库中获取链码项目源码。
步骤S124:复制链码项目源码并存储。
可选地,本实施例中用户对获取的链码项目源码的存储可以是基于缓存形式进行,将其缓存在内存中。
用户将链码项目源码从Git资源库中克隆至本地后就可以对其进行存储、修改、封装、发送以及安装等操作。
步骤S14:通过链码管理SDK对链码项目源码进行验证。
可选地,本实施例对链码项目源码的验证可以包括版本一致性验证、版本发布者验证以及依赖库完整性验证等。
具体地,通过链码管理SDK对链码项目源码进行版本一致性验证和版本发布者验证,在版本一致性验证和版本发布者验证通过时,通过链码管理SDK对链码项目源码进行依赖库完整性验证,在依赖库完整性验证通过时,确定链码项目源码验证通过。
针对依赖库完整性验证,其具体步骤可以包括:通过链码管理SDK提取链码项目源码中的依赖库和依赖信息(即“metadata.json”),依赖库包括链码项目所使用的所有第三方工具包(即“/vendor”中的第三方工具包);通过链码管理SDK基于依赖信息确定依赖库是否完整。
上述依赖库包含依赖信息表示的所有第三方工具包时,判定依赖库完整,反之判定依赖库不完整。
其中,是否需要验证版本发布者可以根据具体安全性需求进行灵活设定。
步骤S16:在链码项目源码验证通过时,通过链码管理SDK将链码项目源码转换为链码封装数据。
请参考图3,图3为本申请实施例提供的一种链码封装步骤的流程示意图,则步骤S16具体可以包括如下子步骤:
步骤S161:通过链码管理SDK对链码项目源码进行压缩。
可选地,本实施例中对链码项目源码进行压缩可以是先对其进行gzip压缩,再进行tar压缩。
示例性地,上述压缩的具体步骤可以如下述代码表示:
Input:=&pb.ChaincodeInput{Arqs:
[][]byte{[]byte(LSCC InstallChaincode),installChaincodeArqsB-yres}}
cis:=&pb.ChaincodeInvocationSpec{
ChaincodeSpec:&pb.ChaincodeSpec{
ChaincodeId:&pb.ChaincodeId{Name:LifeCycleName},
Input:Input,
}
}
上述代码中的installChaincodeArgsBytes就是压缩后获得的数据。
步骤S162:通过链码管理SDK将压缩后的链码项目源码封装为peer.Proposal数据包。
当peer节点收到一个链码调用请求后,在对请求验证通过后,它会形成一个本地签名的提案(即上述peer.Proposal),此节点可称为提案节点,然后提案节点对提案签名后给若干个节点,其他节点在收到此签名提案也会对它进行验证,通过后安装链码。
示例性地,上述封装的具体步骤可以如下述代码表示:
Creator,etr:=sgner.Serialize()
if err!=nil{
return nil,err
}
prop,_,err:=protoutil.CreateProposalFromCIS{cb.HeaderType_EN-DORSER_TRANSACTION,””,cis,creator}
if err!=nil{
return nil,err
}
其中,CreateProposalFromCIS的实现参考了Fabirc源码,其具体示例可以如下:
步骤S163:通过链码管理SDK采用Git登录用户的私钥对peer.Proposal数据包进行签名,以获得签名peer.Proposal数据包。
可选地,本实施例中用户可以通过Git登录用户名所有的私钥对peer.Proposal数据包进行签名。
其中,安装链码时需要证书和私钥进行对peer.Proposal数据包的交易签名,该证书和私钥可以是在安装链码前在客户端申请。具体地,该私钥可以通过Fabric-CA申请,Fabric CA一种给Fabric各个角色提供证书与私钥的服务,可以通过镜像搭建,用户申请私钥时需要通过Fabric CA提供的CA(Certificate Authority),申请需要提供名称,密码,类型(主要的类型是client),申请完成之后CA服务会提供证书和私钥,需要用户进行保存。
以使Fabric-CA基于Fabric组织的根证书返回证书和私钥,也可以通过cryptogen工具生成。
示例性地,上述签名的具体步骤可以如下述代码表示:
funcGetSignedProposal(prop*pb.Proposal,signer Signer)
(*pb.SignedProposal,error){
propBytes,err:=proto.Marshal(prop)
if err!=nil{
return nil,err
}
signature,err:=signer.Sgn(propBytes)
If err!=nil{
return,err
}
rReturn&pb.SignedProposal{ProposalBytes:propBytes,
Signature:signature},nill
}
步骤S18:通过链码管理SDK调用指定接口将链码封装数据安装到至少一个对应节点,以完成至少一个对应节点的链码安装。
可选地,本实施例中链码管理SDK基于封装的gRPC部分的TLS根证书和IP信息确定对应节点,并基于TLS根证书和IP信息调用ProcessProposal接口,将签名peer.Proposal数据包通过gRPC请求发送至所有的对应peer节点,以使peer节点进行链码安装。
进一步的,每个peer节点完成链码安装后,会通过gRPC返回一个package_id作为返回结果,以在后续的链码受理操作中进行链码受理。
在本申请实施例提供的上述可选的基于Git的链码管理方法的实施例中,在链码项目源码获取缓存、链码项目源码验证、链码项目源码压缩、链码封装以及链码安装失败时,可以返回步骤S12重新执行Git的链码管理方法整个流程,以保证链码安装的成功。
为了配合本申请实施例提供的上述基于Git的链码管理方法,本申请实施例还提供了一种基于Git的链码管理装置20。
请参考图4,图4为本申请实施例提供的一种基于Git的链码管理装置的模块示意图。
基于Git的链码管理装置20包括:
源码获取模块21,用于通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码;
验证模块22,用于通过链码管理SDK对链码项目源码进行验证;
封装模块23,用于在链码项目源码验证通过时,通过链码管理SDK将链码项目源码转换为链码封装数据;
安装模块24,用于通过链码管理SDK调用指定接口将链码封装数据安装到至少一个对应节点,以完成至少一个对应节点的链码安装。
可选地,源码获取模块21具体用于:向链码管理SDK传入Git链码仓库地址、Git登录用户名、Git登录密码和链码版本信息;通过链码管理SDK基于Git登录用户名和Git登录密码登录Git服务;通过链码管理SDK基于链码版本信息从Git链码仓库地址对应的Git资源库中获取链码项目源码;复制链码项目源码并存储。
可选地,验证模块22具体用于:通过链码管理SDK对链码项目源码进行版本一致性验证和版本发布者验证;在版本一致性验证和版本发布者验证通过时,通过链码管理SDK对链码项目源码进行依赖库完整性验证;在依赖库完整性验证通过时,确定链码项目源码验证通过。
可选地,验证模块22具体用于:通过链码管理SDK提取链码项目源码中的依赖库和依赖信息,依赖库包括链码项目所使用的所有第三方工具包;通过链码管理SDK基于依赖信息确定依赖库是否完整。
可选地,封装模块23具体用于:通过链码管理SDK对链码项目源码进行压缩;通过链码管理SDK将压缩后的链码项目源码封装为peer.Proposal数据包;通过链码管理SDK采用Git登录用户的私钥对peer.Proposal数据包进行签名,以获得签名peer.Proposal数据包。
可选地,至少一个对应节点为至少一个对应peer节点,指定接口为至少一个对应peer节点的GRPC框架的ProcessProposal接口,安装模块24具体用于:通过链码管理SDK调用ProcessProposal接口,将签名peer.Proposal数据包发送至至少一个对应peer节点。
可选地,基于Git的链码管理装置20还包括:结果返回模块,用于接收至少一个对应peer节点完成链码安装后的返回结果。
本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行本实施例提供的基于Git的链码管理方法中任一项所述方法中的步骤。
应当理解是,该电子设备可以是个人电脑(Personal Computer,PC)、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)等具有逻辑计算功能的电子设备。
本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行基于Git的链码管理方法中的步骤。
综上所述,本申请实施例提供了一种Git的链码管理方法、装置、电子设备及存储介质,所述方法包括:通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码;通过所述链码管理SDK对所述链码项目源码进行验证;在所述链码项目源码验证通过时,通过所述链码管理SDK将所述链码项目源码转换为链码封装数据;通过所述链码管理SDK调用指定接口将所述链码封装数据安装到至少一个对应节点,以完成所述至少一个对应节点的链码安装。
在上述实现方式中,调用链码管理SDK对链码进行安装,通过内存进行链码存储,不需要额外进行链码存储,不需要手动对链码进行存储等操作,提高了链码管理的简便性和效率,同时基于Git服务进行链码的上传、下载等,管理成本低,不需要进行重复拷贝,避免了链码在拷贝过程中出错,提高了链码安装准确性,且基于Git对链码可靠性的验证,提高了链码安全性。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RanDom Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种基于Git的链码管理方法,其特征在于,所述方法包括:
通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码;
通过所述链码管理SDK对所述链码项目源码进行验证;
在所述链码项目源码验证通过时,通过所述链码管理SDK将所述链码项目源码转换为链码封装数据;
通过所述链码管理SDK调用指定接口将所述链码封装数据安装到至少一个对应节点,以完成所述至少一个对应节点的链码安装。
2.根据权利要求1所述的方法,其特征在于,所述通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码,包括:
向所述链码管理SDK传入Git链码仓库地址、Git登录用户名、Git登录密码和链码版本信息;
通过所述链码管理SDK基于所述Git登录用户名和所述Git登录密码登录所述Git服务;
通过所述链码管理SDK基于所述链码版本信息从所述Git链码仓库地址对应的Git资源库中获取所述链码项目源码;
复制所述链码项目源码并存储。
3.根据权利要求1所述的方法,其特征在于,在所述链码项目源码为基于GO语言的链码时,所述通过所述链码管理SDK对所述链码项目源码进行验证,包括:
通过所述链码管理SDK对所述链码项目源码进行版本一致性验证和版本发布者验证;
在所述版本一致性验证和所述版本发布者验证通过时,通过所述链码管理SDK对所述链码项目源码进行依赖库完整性验证;
在所述依赖库完整性验证通过时,确定所述链码项目源码验证通过。
4.根据权利要求3所述的方法,其特征在于,所述通过所述链码管理SDK对所述链码项目源码进行依赖库完整性验证,包括:
通过所述链码管理SDK提取所述链码项目源码中的依赖库和依赖信息,所述依赖库包括链码项目所使用的所有第三方工具包;
通过所述链码管理SDK基于所述依赖信息确定所述依赖库是否完整。
5.根据权利要求1所述的方法,其特征在于,所述通过所述链码管理SDK将所述链码项目源码转换为链码封装数据,包括:
通过所述链码管理SDK对所述链码项目源码进行压缩;
通过所述链码管理SDK将压缩后的所述链码项目源码封装为peer.Proposal数据包;
通过所述链码管理SDK采用Git登录用户的私钥对所述peer.Proposal数据包进行签名,以获得签名peer.Proposal数据包。
6.根据权利要求5所述的方法,其特征在于,所述至少一个对应节点为至少一个对应peer节点,所述指定接口为所述至少一个对应peer节点的GRPC框架的ProcessProposal接口,所述通过所述链码管理SDK调用指定接口将所述链码封装数据安装到至少一个对应节点,包括:
通过所述链码管理SDK调用所述ProcessProposal接口,将所述签名peer.Proposal数据包发送至所述至少一个对应peer节点。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
接收所述至少一个对应peer节点完成链码安装后的返回结果。
8.一种基于Git的链码管理装置,其特征在于,所述装置包括:
源码获取模块,用于通过链码管理软件开发工具包SDK从Git服务中获取链码项目源码;
验证模块,用于通过所述链码管理SDK对所述链码项目源码进行验证;
封装模块,用于在所述链码项目源码验证通过时,通过所述链码管理SDK将所述链码项目源码转换为链码封装数据;
安装模块,用于通过所述链码管理SDK调用指定接口将所述链码封装数据安装到至少一个对应节点,以完成所述至少一个对应节点的链码安装。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-7中任一项所述方法中的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-7任一项所述方法中的步骤。
CN202110086676.7A 2021-01-22 2021-01-22 基于Git的链码管理方法、装置、电子设备及存储介质 Pending CN112882725A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110086676.7A CN112882725A (zh) 2021-01-22 2021-01-22 基于Git的链码管理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110086676.7A CN112882725A (zh) 2021-01-22 2021-01-22 基于Git的链码管理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN112882725A true CN112882725A (zh) 2021-06-01

Family

ID=76050120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110086676.7A Pending CN112882725A (zh) 2021-01-22 2021-01-22 基于Git的链码管理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112882725A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535669A (zh) * 2021-07-23 2021-10-22 广东工业大学 一种文件上传方法、下载方法和***
CN114465887A (zh) * 2021-12-23 2022-05-10 杭州溪塔科技有限公司 一种基于git的区块链配置管理方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535669A (zh) * 2021-07-23 2021-10-22 广东工业大学 一种文件上传方法、下载方法和***
CN114465887A (zh) * 2021-12-23 2022-05-10 杭州溪塔科技有限公司 一种基于git的区块链配置管理方法和装置
CN114465887B (zh) * 2021-12-23 2024-01-23 杭州溪塔科技有限公司 一种基于git的区块链配置管理方法和装置

Similar Documents

Publication Publication Date Title
US11429617B2 (en) System and method for blockchain-based data synchronization
CN110870253B (zh) 使用分布式分类账管理公共软件组件生态***的***和方法
US10628578B2 (en) Systems and methods for determining trust levels for computing components using blockchain
CN107766126B (zh) 容器镜像的构建方法、***、装置及存储介质
Zheng et al. Ethereum smart contract development in solidity
US7684964B2 (en) Model and system state synchronization
CN114008605A (zh) 大数据应用生命周期管理
CN111386523B (zh) 用于基于区块链的去中心化应用开发的***和方法
CN104572237A (zh) 一种UKey安装包自动快速生成***及其方法
CN112882725A (zh) 基于Git的链码管理方法、装置、电子设备及存储介质
US11816458B2 (en) Method and system for packaging infrastructure as code
CN112486547A (zh) 多租户场景下的应用程序更新方法、装置及电子设备
EP2667301A1 (en) Decision service manager
CN114041134A (zh) 用于基于区块链的安全存储的***和方法
CA3027613A1 (en) Systems and methods for determining trust levels for computing components using blockchain
US20210240542A1 (en) Dynamic application management across multi-cloud computing environment
US10579342B1 (en) Encapsulated application templates for containerized application software development
US10977218B1 (en) Distributed application development
CN114489781A (zh) 云平台中的编排模板编辑方法、装置、设备及存储介质
CN115315696A (zh) 网站的自动创建和部署
CN112905227A (zh) 开源软件版本登记方法及装置
WO2019213775A1 (en) Distributed ledger platform for computing applications
Mistry Expert AWS Development: Efficiently develop, deploy, and manage your enterprise apps on the Amazon Web Services platform
CN116974597A (zh) 基于工具包的信息处理方法、***及存储介质和终端设备
Moodie Pro Apache Ant

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination