一种使用java语言调用fabric区块链网络上链码的实现方法技术

技术编号:21140411 阅读:33 留言:0更新日期:2019-05-18 04:58
本发明专利技术公开一种使用java语言调用fabric区块链网络上链码的实现方法,涉及区块链技术领域,该实现方法基于java语言,首先对fabric区块链网络上的组成对象进行抽象,形成各自的业务模型,随后将业务模型的相关配置信息保存在配置文件fabric.properties中,最后借助不同的管理类封装业务模型和配置文件的使用方法,实现链码的调用,旨在减少开发人员在开发过程中调用链码的复杂度,使其更专注于业务逻辑的实现。

An implementation method of calling chain code in fabric block chain network using java language

【技术实现步骤摘要】
一种使用java语言调用fabric区块链网络上链码的实现方法
本专利技术涉及区块链技术,具体的说是一种使用java语言调用fabric区块链网络上链码的实现方法。
技术介绍
现今,随着比特币的火爆,由比特币底层技术发展而来的区块链技术也越来越受到人们的青睐,区块链正成为全球最激动人心的新技术之一,其中hyperledgerfabric是一种常用的开源的区块链网络的解决方案。fabric支持使用多种语言连接到其区块链网络以调用网络上面的链码程序,但是对于java开发者来说,其提供的api并不友好,存在大量的配置参数需要在api中传递,每次新增链码都需要开发大量的代码,代码易用性及复用性较差。
技术实现思路
本专利技术针对目前技术发展的需求和不足之处,提供一种使用java语言调用fabric区块链网络上链码的实现方法,旨在减少开发人员在开发过程中调用链码的复杂度,使其更专注于业务逻辑的实现。本专利技术的一种使用java语言调用fabric区块链网络上链码的实现方法,解决上述技术问题采用的技术方案如下:一种使用java语言调用fabric区块链网络上链码的实现方法,该实现方法基于java语言,首先对fabric区块链网络上的组成对象进行抽象,形成各自的业务模型,随后将业务模型的相关配置信息保存在配置文件fabric.properties中,最后借助不同的管理类封装业务模型和配置文件的使用方法,实现链码的调用。可选的,所涉及fabric区块链网络的组成对象包括peer节点、orderer节点、组织、通道、用户以及链码,peer节点、orderer节点、组织、通道、用户以及链码相对形成BasePeer业务模型、BaseOrderer业务模型、BaseOrg业务模型、BaseChannel业务模型、BaseUser业务模型、AbstractInvokeChaincode业务模型。所涉及BasePeer业务模型是对网络中peer节点相关信息的封装。所涉及BaseOrderer业务模型是对网络中orderer节点相关信息的封装。所涉及BaseOrg业务模型是对fabric组织的封装。所涉及BaseChannel业务模型是对网络中通道相关信息的封装。所涉及BaseUser业务模型是对fabric用户相关信息的封装。所涉及AbstractInvokeChaincode业务模型是执行调用链码的抽象类,其中封装了对链码的调用invoke和查询query的方法。具体的,对fabric区块链网络上的通道进行抽象形成BaseChannel业务模型的过程即是对fabric通道实例初始化的过程,该过程包含了fabric通道实例化、添加peer节点、添加orderer节点、添加事件总线EventHub、初始化。可选的,所涉及AbstractInvokeChaincode业务模型还封装了BaseChannel实例和fabric提供的ChaincodeId实例,封装了抽象方法init用于实例化BaseChannel实例和ChaincodeId实例。可选的,所涉及配置信息包括:组织mspid、组织域名、ca地址、组织下的peer节点地址和域名、Orderer节点地址和域名、EventHub地址和域名、链码相关信息。所涉及BasePeer业务模型的配置信息包括组织mspid、组织域名、ca地址、组织下的peer节点地址和域名、EventHub地址和域名。所涉及BaseOrderer业务模型的配置信息包括Orderer节点地址和域名、EventHub地址和域名。所涉及BaseOrg业务模型的配置信息包括组织mspid、组织域名、ca地址、组织下的peer节点地址和域名、Orderer节点地址和域名、EventHub地址和域名。所涉及BaseChannel业务模型的配置信息包括组织mspid、组织域名、ca地址、组织下的peer节点地址和域名、Orderer节点地址和域名、EventHub地址和域名、链码相关信息。所涉及AbstractInvokeChaincode业务模型的配置信息包括链码相关信息。可选的,借助不同的管理类封装业务模型和配置文件的使用方法,包括:借助管理类FabricManager封装BaseOrg业务模型和其配置信息的使用方法;借助管理类UserManager封装BaseUser业务模型和其配置信息的使用方法;将不同链码封装为不同的类,该类继承自AbstractInvokeChaincode业务模型,并实现其init方法;借助区块单元类BlockUtil封装了获取区块相关信息的方法;借助管理类ChaincodeImpl,该类继承自AbstractInvokeChaincode业务模型,实现了其init方法,根据传入参数的不同,初始化相应链码,传入的参数包括链码信息、通道信息和用户信息;借助管理类ChaincodeManager,封装了ChaincodeImpl及其子类的invoke和query的函数,使用单例模式,实现了调用链码方法写链和查询链上数据。可选的,所涉及获取区块相关信息的方法包括:获取区块高度、获取交易数、获取区块信息、获取交易信息。可选的,借助管理类FabricManager封装BaseOrg业务模型和其配置信息的使用方法,其具体操作内容为:管理类FabricManager使用单例模式提供了构造方法,该构造方法完成了对配置文件fabric.properties的读取及后续操作,后续操作主要是实例化BaseOrg业务模型;管理类FabricManager提供查询组织相关信息的方法。可选的,借助管理类UserManager封装BaseUser业务模型和其配置信息的使用方法,其具体操作内容为:管理类UserManager封装fabric用户注册、登记、查询的方法,其中,登记方法的返回值是公私钥,管理类UserManager根据公私钥实例化BaseUser业务模型。本专利技术的一种使用java语言调用fabric区块链网络上链码的实现方法,与现有技术相比具有的有益效果是:本专利技术的实现方法基于java语言,首先对fabric区块链网络上的组成对象进行抽象,形成各自的业务模型,随后将业务模型的相关配置信息保存在配置文件fabric.properties中,最后借助不同的管理类封装业务模型和配置文件的使用方法,实现链码的调用。开发人员在有新链码的时候,只需将新链码信息维护到配置文件中,即可使用ChaincodeManager提供的方法来调用链码方法进行写链和查链,减少开发人员在开发过程中调用链码的复杂度,使其更专注于业务逻辑的实现。具体实施方式为使本专利技术的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本专利技术的技术方案进行清查、完整的描述,显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术的实施例,本领域技术人员在没有做出创造性劳动的前提下获得的所有实施例,都在本专利技术的保护范围之内。实施例一:本实施例提出一种使用java语言调用fabric区块链网络上链码的实现方法,该实现方法基于java语言,首先对fabric区块链网络上的组成对象进行抽象,形成各自的业务模型,随后将业务模型的相关本文档来自技高网...

【技术保护点】
1.一种使用java语言调用fabric区块链网络上链码的实现方法,其特征在于,该实现方法基于java语言,首先对fabric区块链网络上的组成对象进行抽象,形成各自的业务模型,随后将业务模型的相关配置信息保存在配置文件fabric.properties中,最后借助不同的管理类封装业务模型和配置文件的使用方法,实现链码的调用。

【技术特征摘要】
1.一种使用java语言调用fabric区块链网络上链码的实现方法,其特征在于,该实现方法基于java语言,首先对fabric区块链网络上的组成对象进行抽象,形成各自的业务模型,随后将业务模型的相关配置信息保存在配置文件fabric.properties中,最后借助不同的管理类封装业务模型和配置文件的使用方法,实现链码的调用。2.根据权利要求1所述的一种使用java语言调用fabric区块链网络上链码的实现方法,其特征在于,所述fabric区块链网络的组成对象包括peer节点、orderer节点、组织、通道、用户以及链码,peer节点、orderer节点、组织、通道、用户以及链码相对形成BasePeer业务模型、BaseOrderer业务模型、BaseOrg业务模型、BaseChannel业务模型、BaseUser业务模型、AbstractInvokeChaincode业务模型;所述BasePeer业务模型是对网络中peer节点相关信息的封装;所述BaseOrderer业务模型是对网络中orderer节点相关信息的封装;所述BaseOrg业务模型是对fabric组织的封装;所述BaseChannel业务模型是对网络中通道相关信息的封装;所述BaseUser业务模型是对fabric用户相关信息的封装;所述AbstractInvokeChaincode业务模型是执行调用链码的抽象类,其中封装了对链码的调用invoke和查询query的方法。3.根据权利要求2所述的一种使用java语言调用fabric区块链网络上链码的实现方法,其特征在于,对fabric区块链网络上的通道进行抽象形成BaseChannel业务模型的过程即是对fabric通道实例初始化的过程,该过程包含了fabric通道实例化、添加peer节点、添加orderer节点、添加事件总线EventHub、初始化。4.根据权利要求2所述的一种使用java语言调用fabric区块链网络上链码的实现方法,其特征在于,所述AbstractInvokeChaincode业务模型还封装了BaseChannel实例和fabric提供的ChaincodeId实例,封装了抽象方法init用于实例化BaseChannel实例和ChaincodeId实例。5.根据权利要求2所述的一种使用java语言调用fabric区块链网络上链码的实现方法,其特征在于,所述配置信息包括:组织mspid、组织域名、ca地址、组织下的peer节点地址和域名、Orderer节点地址和域名、EventHub地址和域名、链码相关信息;所述BasePeer业务模型的配置信息包括组织mspid、组织域名、ca地址、组织下的peer节点地址和域名、EventHub地址和域名;所述BaseOrderer业务模型的配置信息包括Order...

【专利技术属性】
技术研发人员:张岚王伟兵商广勇马岩堂
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1