一种区块链应用框架
技术领域
本说明书实施例涉及软件开发领域,尤其涉及一种区块链应用框架。
背景技术
随着区块链技术的发展,越来越多的机构或个人倾向于开发区块链应用,通过区块链应用将业务交由区块链网络进行处理,使得业务处理结果真实可信。
在实践中,开发区块链应用是一个复杂的工作。对于开发者而言,其需要专门学习区块链开发技术,学会如何通过调用区块链网络中的智能合约来实现具体的业务需求。
基于现有技术,需要一种对开发者而言,更为便利的区块链应用开发模式。
发明内容
为了提升开发者开发区块链应用的便利性,本说明书实施例提供一种区块链应用框架,技术方案如下:
根据本说明书实施例的第1方面,提供一种区块链应用框架,开发者基于所述区块链应用框架开发区块链应用,所述区块链应用框架包括:智能合约接口层与业务功能接口层;
所述智能合约接口层,针对区块链网络中部署的每个智能合约方法,提供对该智能合约方法进行封装得到的方法接口;并且,当任一方法接口被调用时,从所述区块链网络调用该方法接口对应的智能合约方法;
所述业务功能接口层,提供至少一个业务功能接口,其中,针对每个业务功能接口,该业务功能接口是对至少一个方法接口进行封装得到的;并且,当任一业务功能接口被调用时,从所述智能合约接口层调用该业务功能接口对应的每个方法接口。
根据本说明书实施例的第2方面,提供一种区块链业务系统,包括区块链网络与业务服务端;所述业务服务端将受理业务客户端发起的业务,并将受理的业务提交给区块链网络进行处理;
其中,所述业务服务端上装载的区块链服务应用是基于第1方面所述的区块链应用框架进行开发的。
根据本说明书实施例的第3方面,提供另一种区块链业务系统,包括区块链网络与至少一个业务客户端;每个业务客户端端发起业务,并将发起的业务提交给区块链网络进行处理;
其中,每个业务客户端上装载的区块链客户应用是基于第1方面所述的区块链应用框架进行开发的。
根据本说明书实施例的第4方面,提供一种业务服务端,所述业务服务端上装载的区块链服务应用是基于第1方面所述的区块链应用框架进行开发的。
根据本说明书实施例的第5方面,提供一种业务服务端,所述业务服务端上装载的区块链服务应用是基于第1方面所述的区块链应用框架进行开发的。
本说明书实施例所提供的技术方案,提供了一种区块链应用框架产品,该应用框架中包括智能合约接口层,实现了对区块链网络底层部署的智能合约的封装,开发者在开发区块链应用时,只需要关注如何调用智能合约接口层对外暴露的方法接口即可。此外,应用框架中还包括业务功能接口层,对智能合约接口层提供的各方法接口进一步封装成若干业务功能接口,对外提供一些基本的业务功能;开发者在开发区块链应用时,如果需要实现某个基本的业务功能,不必自己挑选一个或多个方法接口实现该业务功能,而是直接关注如何调用业务功能接口层对外暴露的业务功能接口即可。
通过本说明书实施例,开发者在面对开发区块链应用的工作任务时,无需预先掌握区块链开发技术,就可以通过接口调用这种简单明了的方式来调用区块链网络中的智能合约,这对开发者而言更为便利。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要通过的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图取得其他的附图。
图1是本说明书实施例提供的一种区块链应用框架的结构示意图;
图2是本说明书实施例提供的另一种区块链应用框架的结构示意图;
图3是本说明书实施例提供的一种技术架构示意图;
图4是本说明书实施例提供的一种区块链业务系统的结构示意图;
图5是本说明书实施例提供的另一种区块链业务系统的结构示意图;
图6是用于配置本说明书实施例装置的一种计算机设备的结构示意图。
具体实施方式
区块链作为一种新兴的技术,还处于发展的初级阶段,区块链的技术实现还未形成一个较完善的生态系统,区块链的开发工具和应用集成工具并没有较多的选择,因此,对于开发者而言,开发区块链应用以及使得区块链应用对接区块链平台仍然是个较复杂的工作,开发成本也比较高。
具体而言,开发者在开发区块链应用时,不仅需要在业务层面关注业务逻辑的实现,还需要关注如何将业务逻辑的实现与智能合约的调用方式相结合。此外,在有些情况下,开发者还需要开发用于实现业务逻辑的智能合约。以上会带来较大的开发成本,对开发者而言便利性也较低。
而本发明提供的区块链应用框架可以视为区块链应用的半成品,应用框架实现了实际业务场景的剥离,却又可以提供可直接调用的接口。具体而言,区块链网络中部署的智能合约提供了一些剥离了业务场景的通用方法,在应用框架中,通过声明式编程,将每个智能合约方法封装成可直接调用的、由通用的编程语言编写的方法接口,形成了智能合约接口层;通过智能合约接口层来间接调用智能合约方法,对于开发者而言,降低了应用开发的难度。其次,具体到指定的业务场景下,将该业务场景下所常用的业务功能以业务功能接口的方式提供给开发者,业务功能接口本身就是基于业务需求对至少一个方法接口进行封装得到的,省去了开发者组合调用方法接口的步骤,开发者可以直接调用业务功能接口层提供的业务功能接口,业务功能接口进一步调用相应的方法接口,方法接口再进一步调用区块链网络底层部署的智能合约方法。
可见,使用本发明提供的区块链应用框架,开发者在开发区块链应用时,只需要关注具体的业务逻辑实现即可,不需要考虑如何将业务逻辑与智能合约的调用相结合。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所取得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1是本说明书实施例提供的一种区块链应用框架的结构示意图,包括:智能合约接口层与业务功能接口层。
开发者可以基图1所示的区块链应用框架开发区块链应用。众所周知,应用框架是一种用于应用开发的、框架性的软件产品。应用框架可以视为一种软件半成品,开发者可以基于应用框架开发出适用于不同业务场景的,功能完备的应用程序。例如,应用框架的产品形态具体可以是用于开发区块链应用的软件开发工具包(Software Development Kit,SDK)。
需要说明的是,在本文中,区块链应用是指基于区块链实现某种业务意图的程序。区块链应用可以具体安装于业务服务端或业务客户端。当区块链应用安装于业务服务端时,业务服务端可以受理客户端发起的业务,然后通过安装的区块链应用,将业务进一步提交给区块链网络进行处理。当区块链应用安装于业务客户端时,每个用户都可以通过自己的业务客户端直接发起业务,业务客户端会直接将业务提交给区块链网络进行处理。
在本说明书实施例中,应用框架中“层”的概念,是指应用框架的组件或模块。应用框架中的各组件通常是相互独立的,并不是耦合的;此外,各组件之间可以存在层级关系,上层基于下层实现。
需要说明的是,本文中的“接口”,具体是指应用编程接口(ApplicationProgramming Interface,API),其本质上是封装好的一段代码。接口的调用方无需访问接口所封装的代码,就可以获取接口所提供的功能。
如图1所示,智能合约接口层是下层,业务功能接口层是上层,业务功能接口层基于智能合约接口层实现。此外,区块链网络可以视为技术实现上的最底层,智能合约接口层基于区块链网络中部署的智能合约实现。
在本说明书实施例中,智能合约接口层用于针对区块链网络中部署的每个智能合约方法,提供对该智能合约方法进行封装得到的方法接口;并且,用于当任一方法接口被调用时,从所述区块链网络调用该方法接口对应的智能合约方法。
需要说明的是,区块链网络中部署的每个智能合约中可以包括至少一个方法,每个方法用于实现某个通用功能。也就是说,区块链网络中的智能合约方法是与业务场景剥离的,对于指定业务场景而言,可以利用已有的智能合约方法实现不同的业务功能。例如,某个业务功能可以由通用功能1和通用功能2组合实现,因此,可以通过调用用于实现通用功能1的智能合约方法与用于实现通用功能2的智能合约方法来实现该业务功能。
此外还需要说明的是,在实践中,可以为负责在区块链网络中部署智能合约的运维人员提供设置好的部署工具。该部署工具可以一方面将运维人员输入的智能合约自动部署到区块链网络中,另一方面将运维人员输入的智能合约中的每个方法封装成方法接口部署到上述的智能合约接口层。如此,可以提升运维人员的工作效率。
将某个智能合约方法封装成方法接口,意味着将复杂的智能合约调用流程转换成了简单的接口调用流程。开发者在开发区块链应用时,只需要在应用代码中声明所要调用的方法接口即可,无需关注该方法接口所封装的智能合约方法是如何调用和实现的。
当某个方法接口被调用时,智能合约接口层会自动调用区块链网络中部署的相应的智能合约方法,此调用过程是由应用框架执行的,开发者无需关注。
在本说明书实施例中,业务功能接口层用于提供至少一个业务功能接口。其中,针对每个业务功能接口,该业务功能接口是对至少一个方法接口进行封装得到的。并且,业务功能接口层还用于当任一业务功能接口被调用时,从上述的智能合约接口层调用该业务功能接口对应的每个方法接口。
开发者在开发区块链应用时,如果需要实现某个业务功能,可以通过调用智能合约接口层中的一个或多个方法接口实现,例如,可以通过调用一个或多个方法接口,来实现区块链账户的秘钥配置(即为注册的用户创建私钥与公钥证书)。
此外,如果业务功能接口层中预先提供的业务功能接口中存在开发者所需要的业务功能,那么开发者也可以无需考虑如何根据现有的方法接口实现业务功能,而是直接调用业务功能接口层提供的业务功能即可。例如,在数据存证业务场景下,如果业务功能接口层提供了数据存证功能接口,那么开发者就无需自行寻找合适的方法接口进行组合调用,而是直接声明调用该数据存证功能接口即可。这对开发者而言更为便利。
通过图1所示的应用框架,开发者在面对开发区块链应用的工作任务时,无需预先掌握区块链开发技术,就可以通过接口调用这种简单明了的方式来调用区块链网络中的智能合约,这对开发者而言更为便利。
进一步地,在本说明书实施例中,所述业务功能接口层可以具体提供数据存证业务对应的至少一个业务功能接口。其中,数据存证业务是指将指定数据写入区块链,以实现对指定数据进行可信存证的业务。
进一步地,所述业务功能接口层提供的业务功能接口可以包括:数据存证功能接口、数据查询功能接口、数据验证功能接口中的至少一种。其中,所述数据存证功能接口用于将指定数据提交至区块链网络进行存证;所述数据查询功能接口用于从区块链网络读取所述指定数据;所述数据验证功能接口用于验证所述指定数据是否已存证于区块链。
当然,所述业务功能接口层也可以具体提供适用于其他业务对应的业务功能接口,在此不一一赘述。
此外,在实践中,对于数据存证业务,有时存在高可用、可伸缩、大数据存储等更高阶的需求。
其中,高可用性,是指一个系统经过特殊的设计,可以减少停机或宕机时间,从而保证线上的服务不中断。
在数据存证的业务场景下,为了实现高可用性,一般以链外高可用存储,如关系数据库管理系统(Relational Database Management System,RDBMS),按照最终一致性的思想,为上链数据记录每一个中间过程,如果过程中出现网络不稳定、宕机等问题,可以根据过程中记录的状态进行补偿,从而实现上链数据不丢失,区块链服务不中断的效果。
可伸缩性,是指数据流量增加的时候,可以通过增加硬件成本的方式来提升数据吞吐能力,使得系统的数据处理能力可以线性增长。
在数据存证的业务场景下,可以通过对待存证数据进行分片的方式实现可伸缩性,对海量的存证数据进行分而治之,可以将数据存储到分库分表的关系型数据库中,也可以存储在具有可伸缩的非关系型数据库中。
大数据存储,是指在基于区块链的数据存证场景下,如果待存证的数据所占的存储空间过大,则仅需要对待存证的数据的摘要进行上链存储,并且将待存证的数据本身进行链外存储。
在现有技术中,开发者在开发用于数据存证的区块链应用时,如果要实现上述的高可用性、可伸缩性、大数据存储中的任一项,则需要在编写应用代码时,写入相关的实现逻辑。显然,实现上述高阶需求的代码与实现基本的数据存证功能的代码是耦合的,当业务需求发生变化时(如不需要大数据存储),由于代码的耦合性,开发者往往需要重新编写全部应用代码,相当于进行二次开发,这给开发者带来很大的不便。
为此,在本说明书实施例中,区块链应用框架还可以包括高可用存证接口层、可伸缩存证接口层以及大数据存证接口层中的至少一个。
其中,所述高可用存证接口层用于提供至少一个高可用功能接口。其中,所述至少一个高可用功能接口与所述至少一个业务功能接口一一对应,针对每个高可用功能接口,该高可用功能接口是对预编写的高可用功能代码与该高可用功能接口对应的业务功能接口进行封装得到的。并且,所述高可用存证接口层还用于当任一高可用功能接口被调用时,根据预编写的高可用功能代码激活高可用存证模式,进而在高可用存证模式下,调用该高可用功能接口对应的业务功能接口。
所述可伸缩存证接口层用于提供可伸缩功能接口。其中,所述可伸缩功能接口是对预编写的可伸缩功能代码与所述数据存证功能接口进行封装得到的。并且,所述可伸缩存证接口层还用于当所述可伸缩功能接口被调用时,根据预编写的可伸缩功能代码激活可伸缩存证模式,进而在可伸缩存证模式下,调用所述数据存证功能接口。
所述大数据存证接口层用于提供大数据存储功能接口。其中,所述大数据存储功能接口是对预编写的大数据存储功能代码与所述数据存证功能接口进行封装得到的。并且,所述大数据存证接口层还用于当所述大数据存储功能接口被调用时,根据预编写的大数据存储功能代码激活大数据存储模式,进而在大数据存储模式下,调用所述数据存证功能接口。
需要说明的是,上述的高可用存证接口层、可伸缩存证接口层以及大数据存证接口层都需要依赖于业务功能接口层来实现。而高可用存证接口层、可伸缩存证接口层以及大数据存证接口层之间并不存在依赖关系,可以同时使用,也可以个别使用。
如此,一方面,开发者在开发区块链应用时,无需关注高可用性、可伸缩性、大数据存储等需求的代码实现。另一方面,通过分层架构,上述高阶需求的代码实现与基本的存储功能的代码实现是解耦的。
图2是本说明书实施例提供的另一种区块链应用框架的结构示意图。如图2所示,应用框架采用分层架构设计,共有5层,分别为智能合约接口层、业务功能接口层、高可用存证接口层、可伸缩存证接口层、大数据存证接口层。
采用图2所示的分层架构,给区块链应用的开发提供了可扩展性,并且,高阶需求的三个层也都是可拔插的。对于开发者而言,如果其不需要满足任何高阶需求,则可以选择不调用高可用存证接口层、可伸缩存证接口层以及大数据存证接口层。如果开发者需要满足某个高阶需求(如高可用性需求),可以选择使用智能合约接口层、业务功能接口层以及该高阶需求对应的接口层进行应用开发即可。
例如,假设开发者使用图2所示的5个层级开发了区块链应用,如果后续业务需求变化,不需要满足高可用性,则开发者可以直接在应用的代码中删除对于高可用存证接口层的声明式调用逻辑即可。又如,假设后续负责提供应用框架服务的技术服务方更换了用于大数据存储的数据库类型,那么也不会给区块链应用的正常运行产生影响。
另外,从技术架构角度看,区块链网络可以视为技术实现上的最底层,因此,可以得到如图3所示的技术架构示意图。如图3所示,包括6个层次,依次为区块链网络层、智能合约接口层、业务功能接口层、高可用存证接口层、可伸缩存证接口层、大数据存证接口层。其中,除区块链网络层之外的其他层次组成用于开发区块链应用的区块链应用框架。
图4是本说明书实施例提供的一种区块链业务系统的结构示意图,包括区块链网络与业务服务端;所述业务服务端将受理业务客户端发起的业务,并将受理的业务提交给区块链网络进行处理;
其中,所述业务服务端上装载的区块链服务应用是基于图1所示的区块链应用框架进行开发的。
图5是本说明书实施例提供的另一种区块链业务系统的结构示意图,包括区块链网络与至少一个业务客户端;每个业务客户端端发起业务,并将发起的业务提交给区块链网络进行处理;
其中,每个业务客户端上装载的区块链客户应用是基于图1所示的区块链应用框架进行开发的。
一种业务服务端,所述业务服务端上装载的区块链服务应用是基于图1所示的区块链应用框架进行开发的。
一种业务客户端,所述业务客户端上装载的区块链客户应用是基于图1所示的区块链应用框架进行开发的。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行基于图1所示的区块链应用框架开发的区块链应用程序。
图6示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1410、存储器1420、输入/输出接口1430、通信接口1440和总线1450。其中处理器1410、存储器1420、输入/输出接口1430和通信接口1440通过总线1450实现彼此之间在设备内部的通信连接。
处理器1410可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1420可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1420可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1420中,并由处理器1410来调用执行。
输入/输出接口1430用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1450包括一通路,在设备的各个组件(例如处理器1410、存储器1420、输入/输出接口1430和通信接口1440)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1410、存储器1420、输入/输出接口1430、通信接口1440以及总线1450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行基于图1所示的区块链应用框架开发的区块链应用程序。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。