一种面向区块链的通用服务中间件系统的制作方法

文档序号:11234800阅读:623来源:国知局
一种面向区块链的通用服务中间件系统的制造方法与工艺

本发明涉及区块链技术、智能合约、异步任务技术及并发部署技术,尤其涉及一种面向区块链的通用服务中间件系统。



背景技术:

区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,用于存储区块链网络上所有用户的余额,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。

智能合约,区块链上的智能合约是指由solidity编写和编译并运行于区块链上的一串二进制代码,我们可以通过智能合约实现在区块链上的数据存储、读写以及一些逻辑操作,因此一些基于区块链的应用是利用智能合约完成的。

异步任务技术,异步与同步是通信双方的两种交互方式,同步是指通信的发起方主动等待或者轮询通信的结果,异步是指通信的接收方负责通知通信的发起方任务的完成情况。异步任务技术适用于对实时响应需求不高而且比较耗时的操作。

并发部署技术,当多个执行体并发地部署一个智能合约的时候,可能会导致合约的重复部署;并发部署技术使用锁控制部署线程,当线程准备部署一个智能合约的时候,先要求获取一个部署锁,获取部署锁成功的线程才能继续部署合约的后续步骤,否则就需要阻塞等待。当线程获得部署锁后,要检查合约是否已经被部署。

不同区块链服务的供应商提供的平台服务风格迥异,客户方直接使用平台服务需要通过平台的sdk,客户端等,在这种情况下要处理较多繁琐的技术细节,例如检查网络连接,连接失败重试,配置信息的装载,智能合约的编译、部署,合约调用后等待交易确认的轮询等等,这些繁琐的技术细节因为平台的不同而不同,客户方在这种情况下想构建基于区块链服务的跨平台、可复用的软件系统几乎不可能。



技术实现要素:

本发明的目的是为上述难题提供解决方案,提供一种面向区块链的通用服务中间件系统,上面提到的技术细节,如检查网络连接,连接失败重试,配置信息装载,智能合约的编译、部署,合约调用后等待交易确认的轮询等操作,都被封装为中间件系统中的模块服务,并且对区块链服务调用方不可见。区块链服务调用方只需要使用中间件系统,并且加上适当的配置,就能方便地把同一套业务代码复用到不同的区块链平台上。

为了达到上述目的,本发明所采用的技术方案如下:一种面向区块链的通用服务中间件系统,包括:

接口封装模块,接口封装模块对外提供统一的平台调用接口,接口封装模块通过区块链平台驱动器来调用具体的平台调用,其对应的驱动器通过接入配置化模块进行管理配置,并且由接入自动化模块在中间件系统启动时从外部导入;驱动器中包含具体的平台调用细节,由区块链平台的服务提供商实现并发布;

接入配置化模块,接入配置化模块在通用服务中间件系统中以插件形式提供服务,负责管理区块链服务调用方调用区块链平台时使用的所有配置信息;接入配置化模块在接入配置信息中指定接口封装模块中驱动器的资源地址,自动从远程资源服务器中下载资源并导入到中间件系统;或者,接入配置模块指定导入本地驱动器;

接入自动化模块,接入自动化模块通过调用接入配置化模块获取接入配置信息,然后自动进行网络环境检查、网络连接重试、平台接入认证,把接入流程完全自动化;

智能合约自动部署模块,智能合约自动部署模块读取接入配置化模块中的配置信息,如果接入配置化模块中查找不到智能合约源码相关信息,智能合约自动部署模块将会从默认路径中读取智能合约源码,然后连接区块链平台进行合约编译;智能合约编译后自动生成部署合约所需的字节码或者二进制文件,智能合约自动部署模块将会自动读取生成的字节码或二进制文件并在区块链平台上部署智能合约,而后获取平台返回的合约地址;

交易消息推送模块,服务调用方在发起交易或者查询合约数据的时候,区块链平台需要经过节点共识来确认交易,交易消息推送模块在交易等待时间内,负责轮询区块链平台,并且当交易完成后主动通知区块链服务调用者。

进一步的,所述的平台调用接口包括服务调用接口、系统调用接口以及异常处理接口。

进一步的,所述的交易消息推送模块具备自动轮询的特性,会把轮询的结果推动到客户端;另外,交易消息推送模块可以结合定时任务,定时向客户端返回推送报表或进行数据归档。

本发明的有益效果如下:中间件系统对外提供统一的标准的接口,这套接口可以使得区块链平台服务调用方可以无差别地使用不同的平台。

所有的模块以插件的形式在系统发挥作用,中间件系统提供默认插件。可以通过中间件系统提供的接口定制插件。

智能合约的编译部署全部自动完成,并支持多个合约的编译和部署。支持并发部署合约,在多个执行体同时部署一个合约的情况下仍能保证不会重复部署。

附图说明

图1是通用服务中间件系统的整体架构图;

图2是智能合约自动部署模块流程图。

具体实施方式

下面结合附图对本发明作进一步的说明。

如图1所示,一种面向区块链的通用服务中间件系统,包括接口封装模块、接入配置化模块、接入自动化模块、智能合约自动部署模块以及交易消息推送模块,因此,构建通用服务中间件系统的过程也就是依次构建这些模块的过程。

其中,接口封装模块对外提供统一的平台调用接口,所述平台调用接口包括服务调用接口、系统调用接口以及异常处理接口;接口封装模块通过区块链平台驱动器来调用具体的平台调用,其对应的驱动器通过接入配置化模块进行管理配置,并且由接入自动化模块在中间件系统启动时从外部导入;驱动器中包含具体的平台调用细节,由区块链平台的服务提供商实现并发布;

接入配置化模块在通用服务中间件系统中以插件形式提供服务,负责管理区块链服务调用方调用区块链平台时使用的所有配置信息;接入配置化模块在接入配置信息中指定接口封装模块中驱动器的资源地址,自动从远程资源服务器中下载资源并导入到中间件系统;或者,接入配置模块指定导入本地驱动器;

接入自动化模块通过调用接入配置化模块获取接入配置信息,然后自动进行网络环境检查、网络连接重试、平台接入认证,把接入流程完全自动化;

智能合约自动部署模块读取接入配置化模块中的配置信息,如果接入配置化模块中查找不到智能合约源码相关信息,智能合约自动部署模块将会从默认路径中读取智能合约源码,然后连接区块链平台进行合约编译;智能合约编译后自动生成部署合约所需的字节码或者二进制文件,智能合约自动部署模块将会自动读取生成的字节码或二进制文件并在区块链平台上部署智能合约,而后获取平台返回的合约地址;

交易消息推送模块,服务调用方在发起交易或者查询合约数据的时候,区块链平台需要经过节点共识来确认交易,交易消息推送模块在交易等待时间内,负责轮询区块链平台,并且当交易完成后主动通知区块链服务调用者。所述的交易消息推送模块具备自动轮询的特性,会把轮询的结果推动到客户端;另外,交易消息推送模块可以结合定时任务,定时向客户端返回推送报表或进行数据归档。

通用服务中间件系统的整体架构如图1所示:

接口封装模块分为两部分,一部分是直接与区块链服务调用方直接交互的接口封装模块,该服务提供一系列统一的接口,区块链服务调用方调用这些接口,就像调用了真实的区块链服务一样,这部分接口代表一些抽象的功能,调用合约方法,合约的部署,向合约传递公私钥、签名信息等。在实施的时候只需要设计这些接口就可以了。另一部分是区块链平台驱动器,该驱动器负责实现区块链平台的调用细节,然后向上与接口封装模块对接。平台驱动器负责把平台相关的操作细节转换为抽象的统一的接口,这需要设计一个适配器,对区块链平台的具体操作与抽象、统一的接口进行对接。通过接口封装模块,用户只需要更换区块链平台驱动器,就能使用同一套业务代码,调用不同的区块链平台。

接入配置模块负责整个通用服务中间件与平台的接入配置信息管理。区块链平台驱动器通过接入配置模块导入到通用服务中间件系统中,底层区块链节点集群的地址信息,还有中间件系统的其他资源信息统一通过接入配置模块进行配置。接入配置模块的优势在于能把所有配置信息统一管理、能从多种不同的输入源中获取配置信息以及可编程,易于扩展。接入配置化模块的设计关键点有两个,第一个是能兼容约定路径以及配置路径,兼容约定路径需要先制定出一套约定的标准,当配置信息存在的时候,时候配置信息,当配置信息不存在的时候,使用约定的配置信息。第二个是能从多种不同的途径获取配置信息,命令行,文件系统,数据库系统等,因此获取配置的具体实现中建议使用策略设计模式,把获取配置的行为封装成一个对象,并提供多种获取配置的策略类型。

接入自动化模块负责处理区块链服务调用方与平台连接相关的细节处理,包括载入接入配置模块,与平台的网络连接,连接失败重试等,接入自动化模块与接口封装模块交互,由接口封装模块发起。接入自动化模块的关键点在于需要读取接入配置化模块,然后根据接入配置信息发起与区块链平台的接入。在这个过程中需要考虑网络异常的处理逻辑。

智能合约自动部署模块由接口封装模块调用,智能合约自动部署过程分为合约编译过程以及合约部署过程。自动部署模块通过接入配置模块的信息,从网络流、文件系统数据库系统等途径中获取源码,并对源码进行编译,编译后生成的字节码或二进制文件,由智能合约自动部署模块进行管理。编译后自动进行合约部署工作,合约部署支持并发安全部署。如图2所示是智能合约自动部署模块流程图,智能合约自动部署模块囊括了智能合约的编译与部署过程。实现编译过程需要注意生成的字节码或二进制平台指令文件的存放路径管理。在实现部署流程的时候需要考虑并发情况,避免智能合约重复部署的情况发生。

交易消息推送模块结合异步任务和定时任务,负责处理实时响应要求较低但耗时较高的业务,定时任务与推送系统相结合,定时推送数据监控报表。交易消息推送模块可以优化区块链平台的调用效率,提高平台对并发访问的处理能力。设计交易消息推送模块需要使用服务器推送的通信协议,然后用异步任务和定时任务实现平台的异步调用以及向区块链服务调用方的主动数据推送功能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1