CN112527331A - 基于fabric链码的线上管理方法、系统及存储介质 - Google Patents

基于fabric链码的线上管理方法、系统及存储介质 Download PDF

Info

Publication number
CN112527331A
CN112527331A CN202011487967.9A CN202011487967A CN112527331A CN 112527331 A CN112527331 A CN 112527331A CN 202011487967 A CN202011487967 A CN 202011487967A CN 112527331 A CN112527331 A CN 112527331A
Authority
CN
China
Prior art keywords
chain code
code
chain
fabric
java
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
CN202011487967.9A
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.)
Ping An International Smart City Technology Co Ltd
Original Assignee
Ping An International Smart City Technology 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 Ping An International Smart City Technology Co Ltd filed Critical Ping An International Smart City Technology Co Ltd
Priority to CN202011487967.9A priority Critical patent/CN112527331A/zh
Publication of CN112527331A publication Critical patent/CN112527331A/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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及区块链技术,揭露了一种基于fabric链码的线上管理方法,通过建立链码管理平台和Java支撑层,并通过Java支撑层连接链码管理平台和Fabric层,Java支撑层接收所述链码管理平台的请求,并根据所述请求调用链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码安装至Fabric层的相应节点。本发明解决了应用开发者在链码开发过程中链码安装发布指令多、步骤繁琐的问题。

Description

基于fabric链码的线上管理方法、系统及存储介质
技术领域
本发明涉及区块链技术,尤其涉及一种基于fabric链码的线上管理方法、系统及存储介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。随着区块链被纳入“新基建”的范畴,区块链广泛应用于物联网、保险和教育行业。而hyperledger fabric作为一个的开源的区块链网络的解决方案,提供分布式账本解决方案的平台,作为一个通用的权限区块链(Permissioned Chain)的底层基础框架,为了适用于不同的场合,采用模块化架构提供可切换和可扩展的组件,包括共识算法、加密安全、数字资产、智能合约和身份鉴权等服务。
其中,fabric链码(智能合约)是用户应用程序操作区块链账本数据的重要程序。当前fabric链码的打包、安装、初始化和更新都是通过peer指令来完成的,存在的弊端如下:
1)链码安装过程中,存在指令多、步骤繁琐的问题,因此需要开发者对fabric框架和peer指令有较深入的了解,对开发者的经验要求较高:
2)链码业务繁琐,链码开发效率较低;
3)链码更新步骤繁琐。
因此,亟需一种fabric链码处理效率高的fabric链码发布和管理方法。
发明内容
本发明提供一种基于fabric链码的线上管理方法、系统及计算机可读存储介质,其主要解决目前链码管理效率低下的问题。
为实现上述目的,本发明提供一种基于fabric链码的线上管理方法,应用于电子装置,方法包括:通过链码管理平台和Java支撑层将链码安装至Fabric层以实现线上管理;其中,所述通过链码管理平台和Java支撑层将链码安装至Fabric层的方法包括:
将待上传的链码源码上传至链码管理平台,链码管理平台将包含所述链码源码的上传请求发送至Java支撑层;
通过Java支撑层保存链码源码及所述链码源码对应的链码上传记录,并调用所述链码源码对应的Fabric SDK JAVA的API;
通过所述Fabric SDK JAVA的API将所述链码安装至Fabric层的相应节点。
进一步的,优选的,所述通过Java支撑层调用所述链码源码对应的Fabric SDKJAVA的API的方法包括,所述Java支撑层根据所述链码源码的标识调用所述链码源码对应的调用Fabric SDK JAVA的API;所述链码源码的标识包括链码名称、链码版本、链码通道和链码语言类型。
进一步的,优选的,所述Java支撑层基于spring-boot框架实现,包括fastdfs文件服务、mysql数据库和Fabric SDK JAVA的API;其中,所述链码源码保存至fastdfs文件服务器,所述链码上传记录保存至mysql数据库;所述Fabric SDK JAVA的API用于访问Fabric层的peer节点。
进一步的,优选的,所述线上管理还包括通过链码管理平台和Java支撑层实现链码初始化、链码执行、链码发布、链码预览、链码查询、链码更新和链码状态跟踪动作。
进一步的,优选的,所述链码发布的方法包括:
通过链码源码CDS规范签名生成CDS包;
将所述CDS包生成背书策略对象并在对应的节点上运行;
安装生成背书策略对象的链码,并对安装的链码进行查询;
审批所述链码,并对链码执行Query查询;
提交链码并执行Invoke调用;
查询所述链码调用时的状态值,完成链码发布。
为实现上述目的,本发明提供一种基于fabric链码的线上管理系统,包括链码管理平台和用于连接Fabric层的Java支撑层;
所述链码管理平台,用于接收待上传的链码源码以及用户请求,并将所述请求发送至Java支撑层;
所述Java支撑层,用于接收所述链码管理平台的请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码安装至Fabric层的相应节点。
进一步,优选的,所述JAVA支撑层基于spring-boot框架实现,包括fastdfs文件服务、mysql数据库和Fabric SDK JAVA的API;其中,所述链码源码保存至fastdfs文件服务器,所述链码上传记录保存至mysql数据库;所述Fabric SDK JAVA的API用于访问Fabric层的peer节点。
进一步,优选的,所述Java支撑层包括链码上传单元、链码打包单元、链码安装单元、链码初始化单元、链码执行单元、链码查询单元、链码更新单元和链码状态跟踪单元;
所述链码上传单元,用于接收所述链码管理平台的链码上传请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API;
所述链码打包单元,用于接收所述链码管理平台的链码上传请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码进行打包;
所述链码安装单元,用于通过所述Fabric SDK JAVA的API将已打包的链码安装在所述Fabric层的相应节点上;
所述链码初始化单元,用于通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行初始化;
所述链码执行单元,用于通过所述Fabric SDK JAVA的API将已初始化的链码执行;
所述链码查询单元,用于接收所述链码管理平台的链码初查询请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行查询;
所述链码更新单元,用于接收所述链码管理平台的链码更新请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行更新;
所述链码状态跟踪单元,用于接收所述链码管理平台的链码状态跟踪请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDKJAVA的API将已安装在所述Fabric层的相应节点上的链码进行状态跟踪。
为实现上述目的,本发明还提供一种电子装置,该电子装置包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的程序,所述程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述的基于fabric链码的线上管理方法。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现上述的基于fabric链码的线上管理方法的步骤。
本发明提出的基于fabric链码的线上管理方法、系统、电子装置及计算机可读存储介质,通过建立链码管理平台和Java支撑层,并通过Java支撑层连接前端链码管理平台和Fabric层,Java支撑层接收所述链码管理平台的请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码安装至Fabric层的相应节点。有益效果如下:
1)、本发明的基于fabric链码的线上管理方法提供了可视化界面供应用开发者使用,链码发布过程中的所有操作均可在链码管理平台里操作。
2)本发明对链码安装、初始化、运行、查询、更新指令进行了封装,直接暴露给前端页面,方便操作。
3)对应用开发者开发的链码源码包进行了管理,并提供源码预览功能,方便开发者查阅源码。
4)对链码发布记录进行了管理,同时在链码发布过程中各操作的状态同步反馈,方便开发者跟踪问题和解决问题。
附图说明
图1为本发明的基于fabric链码的线上管理方法较佳实施例的流程图;
图2本发明的基于fabric链码的线上管理系统的逻辑结构示意图;
图3为本发明的电子装置的较佳实施例的结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于fabric链码的线上管理方法主要针对fabric链码即区块链智能合约在发布过程中过于繁琐而采取的对peer指令的封装,主要是减轻智能合约开发者的负担,聚焦是技术流程的简化。
本发明提供一种基于fabric链码的线上管理方法。图1示出了本发明基于fabric链码的线上管理方法较佳实施例的流程。参照图1所示,
通过链码管理平台和Java支撑层将链码安装至Fabric层以实现线上管理。
需要说明的是,本发明的一种基于fabric链码的线上管理方法通过在Fabric底层框架之上,增加了Java支撑层和前端链码管理平台。用户链码安装发布过程中的所有操作均由前端页面发起,由https网络请求经过Java支撑层的各模块处理,最终完成用户链码在peer节点的安装、初始化和分发。
具体地说,所述线上管理还包括通过链码管理平台和Java支撑层实现、链码安装、链码初始化、链码执行、链码发布、链码预览、链码查询、链码更新和链码状态跟踪动作。其中,链码安装为通过链码管理平台和Java支撑层实现链码安装至Fabric层;所述链码安装方法包括步骤S110-步骤S130:
S110、将待上传的链码源码上传至链码管理平台,链码管理平台将包含所述链码源码的上传请求发送至Java支撑层。
首先要成功搭建fabric运行环境并配置好通道、组织、节点、成员、策略等基本要素。然后搭建基于前后台端分离的架构。链码的上传是基于前端链码管理平台的可视化界面操作的,支持选择文件和拖拽方式上传。
前端链码管理平台,用于为用户提供操作界面;具有登录、用户管理、权限控制、链码管理的功能,具体地说具有上传、预览、环境配置、发布、查询和更新功能。
Java支撑层集成了Fabric SDK JAVA用于访问peer节点的接口,java服务启动后会根据fabric服务端配置文件,调用Fabric SDK JAVA的api创建好sdk实例,并设置当前用户身份,接着创建好通道和节点并把节点加入通道,完成链码安装前的准备工作。
S120、通过Java支撑层保存链码源码及所述链码源码对应的链码上传记录,并调用所述链码源码对应的Fabric SDK JAVA的API。
所述Java支撑层基于spring-boot框架实现,包括fastdfs文件服务、mysql数据库和Fabric SDK JAVA的API;其中,所述链码源码保存至fastdfs文件服务器,所述链码上传记录保存至mysql数据库;所述Fabric SDK JAVA的API用于访问Fabric层的peer节点。其中,上传记录包含链码的文件保存地址、链码名称、链码版本、状态、创建时间等主要信息;另外,前端链码管理平台还提供链码在线预览功能,利用highlight前端插件,按照源码工程目录结构,根据不同文件格式采用不同主题风格显示源码。
具体的说,Java支撑层应用程序代表用户与Fabric区块链网络进行交互,具体的交互动作通过各种功能的Fabric SDK API接口来实现。Fabric官方提供了多种语言版本的SDK。
Fabric提供了三种语言版本的SDK,分别如下:Fabric Nodejs SDK;Fabric JavaSDK;Fabric Go SDK。在本提案中,采用的是Fabric Java SDK。
具体的说,集成的Fabric SDK API有以下功能类型:创建通道;将peer节点加入通道;在peer节点安装链码;在通道实例化链码;通过链码调用交易;查询交易或区块的账本。在具体的应用过程中,如果需要链码发布,则调用Fabric SDK JAVA的链码发布API,如果需要更新链码,则调用Fabric SDK JAVA的链码更新API。
需要说明的是,所述通过Java支撑层调用所述链码源码对应的Fabric SDK JAVA的API的方法包括,所述Java支撑层根据所述链码源码的标识调用所述链码源码对应的调用Fabric SDK JAVA的API;所述链码源码的标识包括链码名称、链码版本、链码通道和链码语言类型。
S130、通过所述Fabric SDK JAVA的API将所述链码安装至Fabric层的相应节点。
链码要在Fabric网络上运行,必须要先安装在网络中的节点peer上(可以理解为部署代码),安装同时注明版本号保证应用的版本控制。Instantiate实例化,在peer节点上安装链码后,还需要实例化才能真正激活该链码。在实例化的过程中,链码就会被编译并打包docker容器镜像,然后启动运行。每个应用只能被实例化一次,实例化可在任意一个已安装该链码的peer上进行。Invoke调用,Query查询,链码在实例化后,用户就能与它进行交互,其中query查询与应用相关的状态(即只读),而invoke则可能会改变其状态。
在一个具体的实施例中,链码发布包括:
S21、通过链码源码CDS规范签名生成CDS包;即打包所述链码源码。
S22、将所述CDS包生成背书策略对象并在对应的节点上运行;具体地说,通过生命周期系统链码,将CDS包安装在同一通道内的背书节点上,生成运行在节点上的链码。
S23、安装生成背书策略对象的链码,并对安装的链码进行查询;即,Java支撑层通过SDK发送请求到背书节点。
S24、审批所述链码,并对链码执行Query查询;需要说明的是,query查询与应用相关的状态(即只读)。
S25、提交链码并执行Invoke调用;需要说明的是,Invoke调用可能会改变链码的状态。
S26、查询所述链码调用时的状态值,完成链码发布。
在具体的应用场景中,点击前端页面某个链码记录的发布的按钮,应用开发者选择好通道、节点后,Java支撑层服务会根据链码名称、链码版本、通道、链码语言调用FabricSDK JAVA的API依次执行依次调用peer安装、初始化以及测试执行的指令并同步反馈操作的状态,最终完成链码的发布。
在具体的应用场景中,链码的安装、初始化以及执行如下所示:
链码安装,封装调用安装指令,“peer chaincode install-n mckaytest1-v 1.0-p/opt/gopath/src/github.com/chaincode/test1-l java”。
链码初始化,封装调用初始化指令,“peer chaincode instantiate-oorderer.example.com:7050-C mychannel-n kpcc-l golang-v 1.0-c'{"Args":[]}'-P'AND('\”Org1MSP.peer'\”,'\”Org2MSP.peer'\”)'"。
链码执行,封装调用执行指令,前端提供执行/查询操作参数输入的界面“peerchaincode invoke-o orderer.example.com:7050-C mychannel-n kpcc--peerAddressespeer0.org1.example.com:7051--peerAddresses peer0.org2.example.com:9051-c'{"Args":["invoke","Alice","98","92"]}'”。
在一个具体的实施例中,在chaincode更新代码后,需要把新的代码通过install交易安装到正在运行该链码的peer上,安装时需注明比先前版本更高的版本号,接下来向任意一个安装了新代码的peer发送upgrade交易就能更新链码,链码在更新前的状态也会得到保留。
综上,本发明的基于fabric链码线上管理的方法和装置,解决了应用开发者在链码开发过程中链码安装发布指令多、步骤繁琐的问题。通过提供的简单明了的可视化界面,应用开发者通过配置链码发布参数,简单操作即可完成链码发布上线流程,这很大程度的减少了应用开发者的开发成本,让应用开发者更专注于应用业务逻辑的实现,提高应用开发者开发的效率;另外,链码预览的功能方便了应用开发者实时查阅链码源码,了解链码业务逻辑细节;链码的管理功能让应用开发者管理自己发布的链码,它提供链码的查询功能包括链码名称、版本信息、状态、创建时间等信息,方便开发者查询;最后,开发者可以根据业务应用的发展及时更新自己的链码,方便快捷。
图2为本发明的基于fabric链码线上管理的系统的逻辑结构示意图;参照图2所示,
为实现上述目的,本发明提供一中基于fabric链码线上管理系统200,包括链码管理平台210和用于连接Fabric层230的Java支撑层220;
所述链码管理平台210,用于接收待上传的链码源码以及用户请求,并将所述请求发送至Java支撑层220;
所述Java支撑层220,用于接收所述链码管理平台的请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码安装至Fabric层230的相应节点。
其中,链码管理平台210,用于为用户提供操作界面;具有登录、用户管理、权限控制、链码管理的功能,具体地说具有上传、预览、环境配置、发布、查询和更新功能。
其中,链码预览的实现过程:前端链码管理平台提链码源码的浏览功能,进入链码列表页面点击查看链码详情,前端通过JAVA支撑层接口加载fastdfs文件服务器的链码源码利用highlight前端插件,按照源码工程目录结构,根据不同文件格式采用不同主题风格显示源码。
前端的链码管理平台210基于ant design实现,提供登录、用户管理、权限控制、链码管理的功能。前端源码通过webpack打包后可独立部署。本发明通过采用前后端分离的架构,前端的链码管理平台210与Java支撑层通过http协议通信,Java支撑层与fabric通过grpc协议通信。
所述Java支撑层220基于spring-boot框架实现,包括fastdfs文件服务、mysql数据库和Fabric SDK JAVA的API;其中,所述链码源码保存至fastdfs文件服务器,所述链码上传记录保存至mysql数据库;所述Fabric SDK JAVA的API用于访问Fabric层的peer节点。具体地说,Java支撑层,用于封装对链码操作的各种接口;具备包括封装Fabric SDK JAVA提供的对链码操作的接口以及对用户链码上传、下载和记录等管理接口。也就是可以进行上传、打包、安装、初始化、执行、查询、更新和状态跟踪。在具体的应用场景中,可以进行用户注册、访问权限控制、电子证据存储、电子证据上链、链上查询和电子证据下载等功能性动作。
所述Java支撑层220包括两大核心结构,保存链码源码的fastdfs文件服务器以及保存链码操作记录的mysql数据库。具体地说,集成了Fabric SDK JAVA用于访问peer节点的接口,JAVA服务启动后会根据fabric服务端配置文件,调用Fabric SDK JAVA的api创建好SDK实例,并设置当前用户身份,接着创建好通道和节点并把节点加入通道,完成链码安装前的准备工作。Fabric为应用提供了gRPC API,以及封装API的SDK供应用调用。
Fabric层230,用于通过peer节点接收Java支撑层封装后的各种接口。底层由多个节点组成P2P网络,通过gRPC通道进行交互,利用Gossip协议进行同步。而前端的链码管理平台和Java支撑层与Fabric层的相互是通过grpc协议通信实现交互的。智能合约的实现依赖于安全的执行环境,确保安全的执行过程和用户数据的隔离。Hyperledger Fabric采用Docker管理普通的链码,提供安全的沙箱环境和镜像文件仓库。
为了适应fabric业务应用的变化,本发明的基于fabric链码线上管理系统封装了链码的更新的相关指令,提供了链码更新的功能。
在一个具体的实施例中,所述Java支撑层220包括链码上传单元221、链码打包单元222、链码安装单元223、链码初始化单元224、链码执行单元225、链码查询单元226、链码更新单元227和链码状态跟踪单元228;
所述链码上传单元221,用于接收所述链码管理平台的链码上传请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API。
链码上传的实现过程,前端链码管理平台提供上传界面,应用开发者输入链码名称、链码版本后,点击上传按钮选择链码源码或者拖拽源码至上传控件,前端会发送上传请求到Java支撑层的上传接口,Java支撑层接收到前端请求写入文件到fastdfs服务器并往mysql数据库插入一条上传记录用户后续对链码包的管理。也就是说,通过打包链码,通过安装打包链码文件进行链码的安装。安装链码的peer节点服务器可以通过终端命令查看已安装的链码信息。
所述链码打包单元222,用于接收所述链码管理平台的链码上传请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码进行打包;
所述链码安装单元223,用于通过所述Fabric SDK JAVA的API将已打包的链码安装在所述Fabric层的相应节点上;
所述链码初始化单元224,用于通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行初始化;
所述链码执行单元225,用于通过所述Fabric SDK JAVA的API将已初始化的链码执行;
链码要在Fabric网络上运行,必须要先安装在网络中的节点peer上(可以理解为部署代码),安装同时注明版本号保证应用的版本控制。在peer上安装链码后,还需要实例化才能真正激活链码。在实例化的过程中链码就会被编译并打包成docker容器镜像,然后启动运行。每个应用只能被实例化一次,实例化可在任意一个已安装该链码的peer上进行链码在实例化后,用户就能与它进行交互,其中query查询与应用相关的状态(即只读),而invoke则可能会改变其状态。
所述链码查询单元226,用于接收所述链码管理平台的链码初查询请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行查询。
链码查询的实现过程:前端链码管理平台提供链码查询的功能,用户选中链码,输入查询的参数,点击查询按钮,前端发送请求到Java支撑层,Java支撑层调用Fabric SDKJAVA查询api调用链码的query方法完成对查询的功能。
所述链码更新单元227,用于接收所述链码管理平台的链码更新请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行更新。
链码更新的步骤:触发更新按钮,Java支撑层服务会调用Fabric SDK JAVA的更新相关api完成链码的更新并同步到通道的其他节点,具体实现步骤如下:重新上传链码;查看需要升级的链码信息;重新打包链码;重新安装链码;修改链码定义,更新版本号;重新提交链码定义;检验新链码定义。
在链码更新代码后,需要把新的代码通过install交易安装到正在运行该链码的peer上,安装时需注明比先前版本更高的版本号,接下来向任意一个安装了新代码的peer发送upgrade交易就能更新链码,链码在更新前的状态也会得到保留。
所述链码状态跟踪单元228,用于接收所述链码管理平台的链码状态跟踪请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDKJAVA的API将已安装在所述Fabric层的相应节点上的链码进行状态跟踪。
综上所述,本发明通过建立链码管理平台和Java支撑层,并通过Java支撑层连接前端链码管理平台和Fabric层,Java支撑层接收所述链码管理平台的请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码安装至Fabric层的相应节点。解决了应用开发者在链码开发过程中链码安装发布指令多、步骤繁琐的问题。
本发明提供一种基于fabric链码线上管理方法,应用于一种电子装置3。
图3示出了根据本发明基于fabric链码线上管理方法较佳实施例的应用环境。
参照图3所示,在本实施例中,电子装置3可以是服务器、智能手机、平板电脑、便携计算机、桌上型计算机等具有运算功能的终端设备。
该电子装置3包括:处理器32、存储器31、通信总线33及网络接口35。
存储器31包括至少一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器31等的非易失性存储介质。在一些实施例中,所述可读存储介质可以是所述电子装置3的内部存储单元,例如该电子装置3的硬盘。在另一些实施例中,所述可读存储介质也可以是所述电子装置3的外部存储器31,例如所述电子装置3上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
在本实施例中,所述存储器31的可读存储介质通常用于存储安装于所述电子装置3的基于fabric链码线上管理程序30等。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
处理器32在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行存储器31中存储的程序代码或处理数据,例如执行基于fabric链码线上管理程序30等。
通信总线33用于实现这些组件之间的连接通信。
网络接口34可选地可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该电子装置3与其他电子设备之间建立通信连接。
图3仅示出了具有组件31-34的电子装置3,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
可选地,该电子装置3还可以包括用户接口,用户接口可以包括输入单元比如键盘(Keyboard)、语音输入装置比如麦克风(microphone)等具有语音识别功能的设备、语音输出装置比如音响、耳机等,可选地用户接口还可以包括标准的有线接口、无线接口。
可选地,该电子装置3还可以包括显示器,显示器也可以称为显示屏或显示单元。在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。显示器用于显示在电子装置3中处理的信息以及用于显示可视化的用户界面。
可选地,该电子装置3还可以包括射频(Radio Frequency,RF)电路,传感器、音频电路等等,在此不再赘述。
在图3所示的装置实施例中,作为一种计算机存储介质的存储器31中可以包括操作系统、以及基于fabric链码线上管理程序30;处理器32执行存储器31中存储的基于fabric链码线上管理程序30时实现如下步骤:线上管理还包括通过链码管理平台和JAVA支撑层实现、链码安装、链码初始化、链码执行、链码发布、链码预览、链码查询、链码更新和链码状态跟踪动作。
在其他实施例中,基于fabric链码线上管理程序30还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器31中,并由处理器32执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序程序段。基于fabric链码线上管理程序30可以分为包括链码管理平台210和用于连接Fabric层230的JAVA支撑层220。
此外,本发明还提出一种计算机可读存储介质,主要包括存储数据区和存储程序区,其中,存储数据区可存储根据区块链节点的使用所创建的数据等,存储程序区可存储操作系统、至少一个功能所需的应用程序,所述计算机可读存储介质中包括基于fabric链码的线上管理程序,所述基于fabric链码的线上管理程序被处理器执行时实现如基于fabric链码的线上管理方法的操作。
本发明之计算机可读存储介质的具体实施方式与上述基于fabric链码的线上管理方法、系统、电子装置的具体实施方式大致相同,在此不再赘述。
总的来说,本发明的基于fabric链码线上管理方法和装置,通过提供的简单明了的可视化界面,应用开发者通过配置链码发布参数,简单操作即可完成链码发布上线流程,这很大程度的减少了应用开发者的开发成本,让应用开发者更专注于应用业务逻辑的实现,提高应用开发者开发的效率;另外,链码预览的功能方便了应用开发者实时查阅链码源码,了解链码业务逻辑细节;链码的管理功能让应用开发者管理自己发布的链码,它提供链码的查询功能包括链码名称、版本信息、状态、创建时间等信息,方便开发者查询;最后,开发者可以根据业务应用的发展及时更新自己的链码,方便快捷。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干程序用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于fabric链码的线上管理方法,应用于电子装置,其特征在于,通过链码管理平台和Java支撑层将链码安装至Fabric层以实现线上管理;其中,所述通过链码管理平台和Java支撑层将链码安装至Fabric层的方法包括:
将待上传的链码源码上传至所述链码管理平台,所述链码管理平台将包含所述链码源码的上传请求发送至Java支撑层;
通过所述Java支撑层保存所述链码源码及所述链码源码对应的链码上传记录,并调用所述链码源码对应的Fabric SDK JAVA的API;
通过所述Fabric SDK JAVA的API将所述链码安装至所述Fabric层的相应节点。
2.根据权利要求1所述的基于fabric链码的线上管理方法,其特征在于,
所述通过所述Java支撑层调用所述链码源码对应的Fabric SDK JAVA的API的方法包括,
所述Java支撑层根据所述链码源码的标识调用所述链码源码对应的调用Fabric SDKJAVA的API;所述链码源码的标识包括链码名称、链码版本、链码通道和链码语言类型。
3.根据权利要求2所述的基于fabric链码的线上管理方法,其特征在于,
所述Java支撑层基于spring-boot框架实现,包括fastdfs文件服务、mysql数据库和Fabric SDK JAVA的API;其中,所述链码源码保存至fastdfs文件服务器,所述链码上传记录保存至mysql数据库;所述Fabric SDK JAVA的API用于访问所述Fabric层的peer节点。
4.根据权利要求1所述的基于fabric链码的线上管理方法,其特征在于,所述线上管理还包括通过链码管理平台和Java支撑层实现链码初始化、链码执行、链码发布、链码预览、链码查询、链码更新和链码状态跟踪动作。
5.根据权利要求4所述的基于fabric链码的线上管理方法,其特征在于,
所述链码发布的方法包括:
通过链码源码CDS规范签名生成CDS包;
将所述CDS包生成背书策略对象并在对应的节点上运行;
安装生成背书策略对象的链码,并对安装的链码进行查询;
审批所述链码,并对链码执行Query查询;
提交所述链码并执行Invoke调用;
查询所述链码调用时的状态值,完成链码发布。
6.一种基于fabric链码的线上管理系统,其特征在于,包括链码管理平台和用于连接Fabric层的Java支撑层;
所述链码管理平台,用于接收待上传的链码源码以及用户请求,并将所述请求发送至Java支撑层;
所述Java支撑层,用于接收所述链码管理平台的请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码安装至Fabric层的相应节点。
7.根据权利要求6所述的基于fabric链码的线上管理系统,其特征在于,
所述Java支撑层基于spring-boot框架实现,包括fastdfs文件服务、mysql数据库和Fabric SDK JAVA的API;其中,所述链码源码保存至fastdfs文件服务器,所述链码上传记录保存至mysql数据库;所述Fabric SDK JAVA的API用于访问Fabric层的peer节点。
8.根据权利要求6所述的基于fabric链码的线上管理系统,其特征在于,所述Java支撑层包括链码上传单元、链码打包单元、链码安装单元、链码初始化单元、链码执行单元、链码查询单元、链码更新单元和链码状态跟踪单元;
所述链码上传单元,用于接收所述链码管理平台的链码上传请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API;
所述链码打包单元,用于接收所述链码管理平台的链码上传请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将所述链码进行打包;
所述链码安装单元,用于通过所述Fabric SDK JAVA的API将已打包的链码安装在所述Fabric层的相应节点上;
所述链码初始化单元,用于通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行初始化;
所述链码执行单元,用于通过所述Fabric SDK JAVA的API将已初始化的链码执行;
所述链码查询单元,用于接收所述链码管理平台的链码初查询请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行查询;
所述链码更新单元,用于接收所述链码管理平台的链码更新请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行更新;
所述链码状态跟踪单元,用于接收所述链码管理平台的链码状态跟踪请求,并根据所述请求调用所述链码源码对应的Fabric SDK JAVA的API,并通过所述Fabric SDK JAVA的API将已安装在所述Fabric层的相应节点上的链码进行状态跟踪。
9.一种电子装置,其特征在于,该电子装置包括:至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的程序,所述程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至5中任一所述的基于fabric链码的线上管理方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至5中任一项所述的基于fabric链码的线上管理方法。
CN202011487967.9A 2020-12-16 2020-12-16 基于fabric链码的线上管理方法、系统及存储介质 Pending CN112527331A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011487967.9A CN112527331A (zh) 2020-12-16 2020-12-16 基于fabric链码的线上管理方法、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011487967.9A CN112527331A (zh) 2020-12-16 2020-12-16 基于fabric链码的线上管理方法、系统及存储介质

Publications (1)

Publication Number Publication Date
CN112527331A true CN112527331A (zh) 2021-03-19

Family

ID=75000625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011487967.9A Pending CN112527331A (zh) 2020-12-16 2020-12-16 基于fabric链码的线上管理方法、系统及存储介质

Country Status (1)

Country Link
CN (1) CN112527331A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117670541A (zh) * 2023-12-05 2024-03-08 云南大学 一种性能优化的双链分布式电力交易系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109194506A (zh) * 2018-08-16 2019-01-11 北京京东尚科信息技术有限公司 区块链网络部署方法、平台及计算机存储介质
CN109213568A (zh) * 2018-08-16 2019-01-15 北京京东尚科信息技术有限公司 一种区块链网络服务平台及其部署方法、存储介质
CN109240900A (zh) * 2018-08-16 2019-01-18 北京京东尚科信息技术有限公司 区块链网络服务平台及其智能合约检测方法、存储介质
US20190102423A1 (en) * 2017-09-29 2019-04-04 Oracle International Corporation System and method for providing an interface for a blockchain cloud service
CN109889503A (zh) * 2019-01-22 2019-06-14 平安科技(深圳)有限公司 基于区块链的身份管理方法、电子装置及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190102423A1 (en) * 2017-09-29 2019-04-04 Oracle International Corporation System and method for providing an interface for a blockchain cloud service
CN109194506A (zh) * 2018-08-16 2019-01-11 北京京东尚科信息技术有限公司 区块链网络部署方法、平台及计算机存储介质
CN109213568A (zh) * 2018-08-16 2019-01-15 北京京东尚科信息技术有限公司 一种区块链网络服务平台及其部署方法、存储介质
CN109240900A (zh) * 2018-08-16 2019-01-18 北京京东尚科信息技术有限公司 区块链网络服务平台及其智能合约检测方法、存储介质
CN109889503A (zh) * 2019-01-22 2019-06-14 平安科技(深圳)有限公司 基于区块链的身份管理方法、电子装置及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MCKAY: "hyperledger fabric链码(java)编写以及调用", pages 1 - 5, Retrieved from the Internet <URL:https://www.cnblogs.com/aarond/p/12173797.html> *
XDYIXIA: "Hyperledger Fabric(4)链码ChainCode", pages 1 - 6, Retrieved from the Internet <URL:https://www.cnblogs.com/xdyixia/p/11726987.html> *
季超越;郭仲勇;岳勇;: "超级账本智能合约的应用研究", 现代信息科技, no. 04, 25 February 2020 (2020-02-25) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117670541A (zh) * 2023-12-05 2024-03-08 云南大学 一种性能优化的双链分布式电力交易系统及方法

Similar Documents

Publication Publication Date Title
JP6322694B2 (ja) リソーススタック内のカスタムリソース
US7607126B2 (en) System and method for external override of annotations
CA2604108C (en) System and method of representing data entities of standard device applications as built-in components
CN104252342B (zh) 一种可配置参数的嵌入式应用实现方法及装置
US9954819B2 (en) System and method for compliance based automation
US20210133002A1 (en) Using scripts to bootstrap applications with metadata from a template
CN103608773A (zh) 用于多节点应用的部署系统
US9507748B2 (en) Platform runtime abstraction
CN104750528A (zh) 一种Android程序中的组件管理方法和装置
CN104009994A (zh) 实现服务端与客户端通讯的方法和装置
US10078532B2 (en) Resource management method and device for terminal system among multiple operating systems
CN112527331A (zh) 基于fabric链码的线上管理方法、系统及存储介质
US20140019515A1 (en) Adaptive business logic configurator
CN115857898B (zh) 一种应用系统构建和运行方法及装置
CN111813836A (zh) 一种提高Ethereum区块链系统扩展性的方法
US10129213B2 (en) System and method for compliance based automation
CN106778193B (zh) 一种客户端和ui交互方法
CN109697076A (zh) 一种应用软件资源的动态更新方法、装置及设备
CN112667441A (zh) 基于容错功能的业务模块调度方法、系统及存储介质
US20230103938A1 (en) Customer Driven Service Development and Integration
CN113050962A (zh) 移动服务升级方法、装置和终端
CN112748932B (zh) 基于智能合约的数据处理方法、服务器
US20240143412A1 (en) Docker-Based Plugins for Hyperconverged Infrastructure Platforms
CN109032684B (zh) 一种基于安卓系统广播插件的实现方法及终端
Zhang et al. Building Team Projects

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