CN109710235B - 一种基于Java智能合约业务逻辑的事务实现***及方法 - Google Patents
一种基于Java智能合约业务逻辑的事务实现***及方法 Download PDFInfo
- Publication number
- CN109710235B CN109710235B CN201811636231.6A CN201811636231A CN109710235B CN 109710235 B CN109710235 B CN 109710235B CN 201811636231 A CN201811636231 A CN 201811636231A CN 109710235 B CN109710235 B CN 109710235B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- module
- basic
- contract
- user
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Java智能合约业务逻辑的事务实现***及方法,包括基础类模块,基本功能方法模块以及调用模块。调用模块依赖其他两个模块,通过基本方法模块中的多个基本方法的自由组合,最终暴露一个指定的方法给Java智能合约引擎端执行;用户自定义的智能合约依赖引擎提供的基础智能合约框架,各个模块均按照框架中规则实现,最终,引擎会根据基础合约模版以及用户自定义的智能合约,为用户的智能合约设置内置变量,调用相应的生命周期方法,并调用调用模块内的指定方法,整个流程在一次合约调用中完成,其事务性通过区块链网络中一笔交易固有的事务性保证。以解决传统复杂业务流程涉及多次合约调用导致的一个业务流程事务性难以保障的问题。
Description
技术领域
本发明涉及区块链智能合约领域,具体涉及一种基于Java智能合约业务逻辑的事务实现***及方法。
背景技术
区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改;智能合约是一种可以在区块链网络环境中部署和执行的一段代码,这段代码的部署以及执行都是可以在区块链网络中以交易的形式呈现,其部署和执行结果可以随着交易被全网共识;目前智能合约支持的语言已经包括Solidity,Java等等,智能合约也在基于区块链的各种业务应用中广泛应用。
传统支持Java语言的联盟区块链的智能合约执行引擎大多仿照EVM的设计方式,一个业务逻辑可以抽象为智能合约中的一个方法,用户发起一笔交易,包含一次合约调用,多数情况下只涉及一个智能合约中的方法。但在实际的业务逻辑中,一个完整的实际业务流程可能会涉及多个应用层的业务逻辑方法,映射到智能合约层面,是多个合约方法的调用,这些方法调用很难被作为一个事务执行,一旦失败,很难完全回滚。如果采用硬编码的方式在智能合约中提供业务过程的组合,又缺乏灵活性和拓展性。因此,能够灵活适应普遍业务需求的,同时可保证事务性的智能合约执行引擎和编写框架是一种切合实际应用场景的迫切需求。
发明内容
针对现有技术的不足,本发明提出一种基于Java智能合约业务逻辑的事务实现***及方法,用户按照基础合约框架的规则编写Java智能合约,Java智能合约执行引擎可以保证一次合约调用中涉及的所有操作可以作为一个事务提交或回滚。
本发明的目的是通过以下技术方案来实现的:一种基于Java智能合约业务逻辑的事务实现***,包括:
Java智能合约基础框架:包括两个接口一个抽象类,抽象类用作用户定义的基本功能方法模块的统一父类;一个空接口作为类型占位符,以及一个接口作为用户是调用模块的统一父类;
基础类模块:用户自定义的智能合约中需要使用的bean文件,供智能合约业务逻辑内部使用;
基本功能方法模块:该模块为用户实现的业务逻辑中的基本操作提供对应方法,要求继承自引擎提供的基础框架中的合约基本操作公共父类,这样可以使用父类中提供的智能合约内置变量,同时实现父类中的生命周期管理的抽象方法;
调用模块:该模块直接对引擎暴露invoke接口,invoke方法内部可以是基本功能方法模块中提供的基本操作的任意数目,任意次数的组合,同时引擎还会在合约调用过程中的响应时间点,调用生命周期管理方法,增强智能合约的功能;
所述的Java智能合约基础框架由引擎提供,可以作为依赖引入到用户自定义的智能合约项目中;
所述的基础类模块、基本功能方法模块、调用模块为用户自定义模块,模块实现要求按照引擎提供的规则实现,各模块需要实现相应的接口或者父类;智能合约执行引擎会调用智能合约项目中暴露的接口,保证一个业务过程涉及的多个操作的事务性。
一种基于Java智能合约业务逻辑的事务实现***的实现方法,具体包括如下步骤:
步骤一:用户自定义智能合约需要依赖基础框架模块,必须提供一个基本功能类的统一接口,其中包含所有的基本功能方法;该接口必须拓展自基础框架模块中的空接口;
步骤二:用户自定义智能合约中基本功能方法模块的实现,要求继承自Java智能合约基础框架中的抽象类,实现其生命周期控制相关的抽象方法,同时必须实现步骤一中所述的基本功能模块中各基本功能类的统一接口;
步骤三:用户自定义智能合约中调用模块必须实现基础框架模块中定义的调用类统一接口,重点实现其invoke方法,其参数列表为:返回值类型、基本功能方法类的统一接口;invoke接口的实现中,可以包含基本功能方法类的多个方法的任意组合形式;
步骤四:校验用户自定义的智能合约项目结构,如果符合规则,则将其交给智能合约执行引擎调用;智能合约执行引擎会构造智能合约中的调用模块被调用类的实例对象;
步骤五:智能合约执行引擎通过反射扫描状态字段,获取生命周期管理方法;
步骤六:智能合约执行引擎获取被调用的合约对象的invoke方法接口,并按照一次合约调用的生命周期顺序相应的调用各个生命周期的管理方法;
进一步地,所述的步骤一至步骤三为用户自定义Java智能合约时需要满足的规则和条件,符合规则的智能合约暴露的invoke接口可以被引擎在一次合约调用中执行,其执行过程具有事务性。
进一步地,所述的步骤一和步骤二中,基本功能方法模块中的接口和基本功能方法类,必须实现基础框架模块中的占位空接口,目的在于满足调用模块中定义的调用类的invoke接口的参数类型要求。
进一步地,所述的步骤四至步骤六为Java智能合约引擎执行用户定义的智能合约的流程,执行引擎通过反射的方式获得合约调用对象中的invoke方法并执行,整个执行流程可能涉及多个多次的基本功能方法的调用,但过程完全在一笔交易、一次合约调用中完成,事务性可以得到保证。
本发明的有益效果如下:
本发明中合约基础框架模块提供了用户编写Java智能合约的基本依赖以及编写规则,按照规则编写的合约可以被智能合约执行引擎自动捕获接口并调用,还可以维护一次合约调用的生命周期。用户编写智能合约时,可以在调用模块中的调用实体类中的invoke方法中自由的组合基本方法模块中提供的基本方法,并且invoke方法会被视为一次合约调用被执行引擎事务性的执行,为用户提供了灵活自由的基本业务逻辑方法的组合方式,同时提供了一个完整业务流程的事务性保证。
附图说明
图1是本发明的***中各个模块的类图;
图2是本发明的方法中主要流程图;
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
一种基于Java智能合约业务逻辑的事务实现***,包括:
Java智能合约基础框架:包括两个接口一个抽象类,抽象类用作用户定义的基本功能方法模块的统一父类;一个空接口作为类型占位符,以及一个接口作为用户是调用模块的统一父类;
基础类模块:用户自定义的智能合约中需要使用的bean文件,供智能合约业务逻辑内部使用;
基本功能方法模块:该模块为用户实现的业务逻辑中的基本操作提供对应方法,要求继承自引擎提供的基础框架中的合约基本操作公共父类,这样可以使用父类中提供的智能合约内置变量,同时实现父类中的生命周期管理的抽象方法;
调用模块:该模块直接对引擎暴露invoke接口,invoke方法内部可以是基本功能方法模块中提供的基本操作的任意数目,任意次数的组合,同时引擎还会在合约调用过程中的响应时间点,调用生命周期管理方法,增强智能合约的功能;
所述的Java智能合约基础框架由引擎提供,可以作为依赖引入到用户自定义的智能合约项目中;
所述的基础类模块、基本功能方法模块、调用模块为用户自定义模块,模块实现要求按照引擎提供的规则实现,各模块需要实现相应的接口或者父类;智能合约执行引擎会调用智能合约项目中暴露的接口,保证一个业务过程涉及的多个操作的事务性。
一种基于Java智能合约业务逻辑的事务实现***的实现方法,具体包括如下步骤:
步骤一:用户自定义智能合约需要依赖基础框架模块,必须提供一个基本功能类的统一接口,其中包含所有的基本功能方法;该接口必须拓展自基础框架模块中的空接口;
步骤二:用户自定义智能合约中基本功能方法模块的实现,要求继承自Java智能合约基础框架中的抽象类,实现其生命周期控制相关的抽象方法,同时必须实现步骤一中所述的基本功能模块中各基本功能类的统一接口;
步骤三:用户自定义智能合约中调用模块必须实现基础框架模块中定义的调用类统一接口,重点实现其invoke方法,其参数列表为:返回值类型、基本功能方法类的统一接口;invoke接口的实现中,可以包含基本功能方法类的多个方法的任意组合形式;
步骤四:校验用户自定义的智能合约项目结构,如果符合规则,则将其交给智能合约执行引擎调用;智能合约执行引擎会构造智能合约中的调用模块被调用类的实例对象;
步骤五:智能合约执行引擎通过反射扫描状态字段,获取生命周期管理方法;
步骤六:智能合约执行引擎获取被调用的合约对象的invoke方法接口,并按照一次合约调用的生命周期顺序相应的调用各个生命周期的管理方法;
进一步地,所述的步骤一至步骤三为用户自定义Java智能合约时需要满足的规则和条件,符合规则的智能合约暴露的invoke接口可以被引擎在一次合约调用中执行,其执行过程具有事务性。
进一步地,所述的步骤一和步骤二中,基本功能方法模块中的接口和基本功能方法类,必须实现基础框架模块中的占位空接口,目的在于满足调用模块中定义的调用类的invoke接口的参数类型要求。
进一步地,所述的步骤四至步骤六为Java智能合约引擎执行用户定义的智能合约的流程,执行引擎通过反射的方式获得合约调用对象中的invoke方法并执行,整个执行流程可能涉及多个多次的基本功能方法的调用,但过程完全在一笔交易、一次合约调用中完成,事务性可以得到保证。
本发明中合约基础框架模块提供了用户编写Java智能合约的基本依赖以及编写规则,按照规则编写的合约可以被智能合约执行引擎自动捕获接口并调用,还可以维护一次合约调用的生命周期。用户编写智能合约时,可以在调用模块中的调用实体类中的invoke方法中自由的组合基本方法模块中提供的基本方法,最后invoke方法会被视为一次合约调用,被执行引擎事务性的执行。该发明为用户提供了灵活自由的基本业务逻辑方法的组合方式,同时提供了一个完整业务流程的事务性保证。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
Claims (5)
1.一种基于Java智能合约业务逻辑的事务实现***,其特征在于,包括:
Java智能合约基础框架:包括两个接口一个抽象类,抽象类用作用户定义的基本功能方法模块的统一父类;一个空接口作为类型占位符,以及一个接口作为用户定义的调用模块的统一父类;
基础类模块:用户自定义的智能合约中需要使用的bean文件,供智能合约业务逻辑内部使用;
基本功能方法模块:该模块为用户实现的业务逻辑中的基本操作提供对应方法,要求继承自引擎提供的Java智能合约基础框架中的合约基本操作公共父类,使用父类中提供的智能合约内置变量,同时实现父类中的生命周期管理的抽象方法;
调用模块:该模块直接对引擎暴露invoke接口,invoke方法内部是基本功能方法模块中提供的基本操作的任意数目,任意次数的组合,同时引擎还会在合约调用过程中的响应时间点,调用生命周期管理方法,增强智能合约的功能;
所述的Java智能合约基础框架由引擎提供,作为依赖引入到用户自定义的智能合约项目中;
所述的基础类模块、基本功能方法模块、调用模块为用户自定义模块,模块实现要求按照引擎提供的规则实现,各模块需要实现相应的接口或者父类;智能合约执行引擎会调用智能合约项目中暴露的接口,保证一个业务过程涉及的多个操作的事务性。
2.根据权利要求1所述的一种基于Java智能合约业务逻辑的事务实现***的实现方法,其特征在于,具体包括如下步骤:
步骤一:用户自定义智能合约需要依赖Java智能合约基础框架,必须提供一个基本功能类的统一接口,其中包含所有的基本功能方法;所述基本功能类的统一接口必须拓展自Java智能合约基础框架中的空接口;
步骤二:用户自定义智能合约中基本功能方法模块的实现,要求继承自Java智能合约基础框架中的抽象类,实现其生命周期控制相关的抽象方法,同时必须实现步骤一中所述的基本功能模块中各基本功能类的统一接口;
步骤三:用户自定义智能合约中调用模块必须实现Java智能合约基础框架中定义的调用类统一接口,重点实现其invoke方法,其参数列表为:返回值类型、基本功能方法类的统一接口;invoke接口的实现中,包含基本功能方法类的多个方法的任意组合形式;
步骤四:校验用户自定义的智能合约项目结构,如果符合规则,则将其交给智能合约执行引擎调用;智能合约执行引擎会构造智能合约中的调用模块被调用类的实例对象;
步骤五:智能合约执行引擎通过反射扫描状态字段,获取生命周期管理方法;
步骤六:智能合约执行引擎获取被调用的合约对象的invoke方法接口,并按照一次合约调用的生命周期顺序相应的调用各个生命周期的管理方法。
3.根据权利要求2所述的实现方法,其特征在于,所述的步骤一至步骤三为用户自定义Java智能合约时需要满足的规则和条件,符合规则的智能合约暴露的invoke接口可以被引擎在一次合约调用中执行,其执行过程具有事务性。
4.根据权利要求2所述的实现方法,其特征在于,所述的步骤一和步骤二中,基本功能方法模块中的接口和基本功能方法类,必须实现Java智能合约基础框架中的占位空接口,目的在于满足调用模块中定义的调用类的invoke接口的参数类型要求。
5.根据权利要求2所述的实现方法,其特征在于,所述的步骤四至步骤六为Java智能合约引擎执行用户定义的智能合约的流程,执行引擎通过反射的方式获得合约调用对象中的invoke方法并执行,整个执行流程涉及多个多次的基本功能方法的调用,但过程完全在一笔交易、一次合约调用中完成,事务性可以得到保证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811636231.6A CN109710235B (zh) | 2018-12-29 | 2018-12-29 | 一种基于Java智能合约业务逻辑的事务实现***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811636231.6A CN109710235B (zh) | 2018-12-29 | 2018-12-29 | 一种基于Java智能合约业务逻辑的事务实现***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710235A CN109710235A (zh) | 2019-05-03 |
CN109710235B true CN109710235B (zh) | 2022-04-01 |
Family
ID=66259495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811636231.6A Active CN109710235B (zh) | 2018-12-29 | 2018-12-29 | 一种基于Java智能合约业务逻辑的事务实现***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710235B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110278193B (zh) * | 2019-05-20 | 2021-06-01 | 创新先进技术有限公司 | 结合代码标注与交易、事件类型的收据存储方法和节点 |
CN110297721B (zh) * | 2019-06-24 | 2021-08-03 | 杭州趣链科技有限公司 | 一种基于java的智能合约的跨合约调用方法 |
CN110633076B (zh) * | 2019-09-16 | 2021-05-04 | 杭州趣链科技有限公司 | 一种自动生成Solidity智能合约Java客户端程序的方法 |
CN113051008A (zh) * | 2021-04-01 | 2021-06-29 | 金蝶软件(中国)有限公司 | 接口请求处理方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1912830A (zh) * | 2006-08-25 | 2007-02-14 | 华为技术有限公司 | 定义面向对象模型的操作接口的方法 |
CN108876610A (zh) * | 2018-05-31 | 2018-11-23 | 深圳市零度智控科技有限公司 | 智能合约实施方法、用户设备、存储介质及装置 |
CN109032706A (zh) * | 2018-07-16 | 2018-12-18 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备和存储介质 |
WO2018234265A1 (en) * | 2017-06-19 | 2018-12-27 | The Glue | SYSTEM AND APPARATUS FOR TREATMENT GUARANTEED EXACTLY ONCE OF AN EVENT IN AN ENVIRONMENT MANAGED BY A DISTRIBUTED EVENT |
-
2018
- 2018-12-29 CN CN201811636231.6A patent/CN109710235B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1912830A (zh) * | 2006-08-25 | 2007-02-14 | 华为技术有限公司 | 定义面向对象模型的操作接口的方法 |
WO2018234265A1 (en) * | 2017-06-19 | 2018-12-27 | The Glue | SYSTEM AND APPARATUS FOR TREATMENT GUARANTEED EXACTLY ONCE OF AN EVENT IN AN ENVIRONMENT MANAGED BY A DISTRIBUTED EVENT |
CN108876610A (zh) * | 2018-05-31 | 2018-11-23 | 深圳市零度智控科技有限公司 | 智能合约实施方法、用户设备、存储介质及装置 |
CN109032706A (zh) * | 2018-07-16 | 2018-12-18 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
基于区块链的应用***开发方法研究;蔡维德;《软件学报》;20171231;第1474-1486页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109710235A (zh) | 2019-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710235B (zh) | 一种基于Java智能合约业务逻辑的事务实现***及方法 | |
CN107147704B (zh) | 一种面向区块链的通用服务中间件*** | |
CN102103497B (zh) | 有限状态机执行装置和方法、在应用中的建立和使用方法 | |
CN102542382B (zh) | 业务规则的操作方法和装置 | |
CN111967849A (zh) | 一种任务处理流程编排方法、装置及电子设备 | |
CN104683386A (zh) | 可定制响应的桩服务实现方法及装置 | |
CN112035090B (zh) | 基于容器化技术实现智能合约智慧化管理***及方法 | |
WO1997048033A2 (en) | Data representation for mixed-language program development | |
CN109559229A (zh) | 基于区块链的更新智能合约组的方法 | |
CN106302442A (zh) | 一种基于Java语言的网络通讯数据包解析方法 | |
CN110417857B (zh) | 区块链协议处理装置、处理方法及区块链 | |
CN111767144A (zh) | 交易数据的交易路由确定方法、装置、设备及*** | |
CN112181378B (zh) | 业务流程的实现方法及装置 | |
CN111399828A (zh) | 一种基于模型驱动的逻辑设备建模方法及终端 | |
AU2015203316B2 (en) | Intelligent application back stack management | |
CN101136780A (zh) | 获取用户命令信息的方法、***及用户命令注册的装置 | |
CN109558121A (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
CN109388406A (zh) | 转换java代码的方法及装置、存储介质、电子装置 | |
CN111142882A (zh) | 一种用于大型微服务部署的服务附加依赖管理方法 | |
CN108710504A (zh) | 数据库操作方法及装置 | |
CN103914304A (zh) | 一种基于sap平台的不同结构类型参数转换方法 | |
CN108536429A (zh) | 一种开发软件的方法、装置、存储介质及电子设备 | |
CN114625410A (zh) | 一种请求消息处理方法、装置及设备 | |
CN113111111A (zh) | 多数据源数据库接入方法 | |
CN109298851B (zh) | 一种OSGi异构软件框架的扩展机制适配方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |