CN110968437A - 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 - Google Patents
一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110968437A CN110968437A CN201911180710.6A CN201911180710A CN110968437A CN 110968437 A CN110968437 A CN 110968437A CN 201911180710 A CN201911180710 A CN 201911180710A CN 110968437 A CN110968437 A CN 110968437A
- Authority
- CN
- China
- Prior art keywords
- contract
- parallel
- java
- parameters
- executed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION 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
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
- G06Q30/0226—Incentive systems for frequent usage, e.g. frequent flyer miles programs or point systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Game Theory and Decision Science (AREA)
- Technology Law (AREA)
- Entrepreneurship & Innovation (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Java智能合约的单个合约并行执行方法、装置、设备及介质,该方法包括判断Java智能合约中的方法中是否带有@Parallel注解,分析带有@Parallel注解的Java智能合约的方法的Java字节码,判断是否属于成功注册的的可并行执行的合约方法;当发起合约调用时,先获取被调用合约是否有成功注册的可并行执行的合约方法,若当前区块中有多笔交易都是调用的可并行执行的合约方法,当调用合约的参数不同时,则将该合约方法进行并行执行;若参数相同,则根据区块中的交易顺序来构建依赖关系,生成DAG图来决定先后顺序。本发明是通过检查用户部署的Java合约字节码来判断是否可以并行执行合约,能够充分利用物理机的多核能力,提高区块链节点的执行效率。
Description
技术领域
本发明实施例涉及区块链技术,尤其涉及一种基于Java智能合约的单个合约并行执行方法、装置、设备及介质。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
智能合约是编程在区块链上的汇编语言,该术语是跨领域法律学者尼克·萨博提出来的,他对智能合约的定义是“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议”,换句话说,智能合约就是一个在计算机系统上,当一定条件被满足后,可以被自动执行的合约。通常人们不会自己写字节码,但是会从更高级的语言来编译它,例如用Solidity等类似的专用语言。
区块链的去中心化与不可篡改的特性给智能合约提供了一个很好的发展环境,因此近年来,比特币网络、以太坊网络等一系列区块链社区都陆续开始提供了公开的智能合约编程的接口。但是在智能合约的开发过程中,一直缺少一个完善的并行执行合约的方法,尤其缺少一种基于当前主流编程语言的同一个合约的方法的并行执行方法。
发明内容
针对现有技术的不足,本发明实施例提出了一种基于Java智能合约的单个合约并行执行方法、装置、设备及介质,解决了区块链无法并行执行同一个合约的合约方法,导致执行效率低的问题。
本发明实施例采用以下技术方案:
第一方面,本发明实施例提供一种基于Java智能合约的单个合约并行执行方法,包括:
S1、判断Java智能合约中的方法中是否带有@Parallel注解,分析带有@Parallel注解的 Java智能合约的方法的Java字节码,判断是否属于成功注册的的可并行执行的合约方法;
S2、当发起合约调用时,先获取被调用合约是否有成功注册的可并行执行的合约方法,若当前区块中有多笔交易都是调用的可并行执行的合约方法,智能合约执行器将对交易中传递给合约方法的参数进行分析,当调用合约的参数不同时,则将该合约方法进行并行执行;若参数相同,则根据区块中的交易顺序来构建依赖关系,生成DAG图来决定先后顺序。
进一步的,所述Java智能合约中的方法属于合约类的成员方法。
进一步的,在Java智能合约被部署到区块链上时,合约执行引擎将通过Java反射扫描合约的成员方法,当扫描到合约的成员方法拥有@Parallel注解时,会对该合约的成员方法进行字节码检查,判断是否属于成功注册的可并行执行的合约方法。
进一步的,所述判断是否属于成功注册的可并行执行的合约方法,具体方法如下:
首先获取到带有@Parallel注解的Java智能合约的方法的参数个数和类型,且已知一个 Java智能合约的方法获取参数是通过从当前方法栈帧的本地变量表中获取,当一个方法栈帧被调用时,可知方法栈帧的本地变量表中的变量即为当前方法的参数;
其次解析从本地变量表中获取出来的方法参数在整个方法字节码中,是否有被修改类型指令操作或者作为参数去调用其他方法,若不满足条件则注册失败;
最后,判断该参数是否只能被@StoreField的持久化变量使用,若不满足条件,则也会导致注册失败。
进一步的,当判断属于成功注册的的可并行执行的合约方法后,则在合约方法的状态数据中保存当前可并行的方法的方法签名,方法签名包括了合约方法的名称和方法参数数量以及方法参数类型。
进一步的,若参数相同,则根据区块中的交易顺序来构建依赖关系,生成DAG图来决定先后顺序,具体如下:
一个区块内的交易并行依赖关系通过建立DAG有向无环图的形式,序号靠后的交易和靠前的交易有参数冲突时,靠前的交易建立一条指向靠后的交易的依赖边,每次执行可以获取所有入度为0的交易来执行,同时相应的更新图中节点的入度情况。
第二方面,本发明实施例提供一种基于Java智能合约的单个合约并行执行装置,包括:
注册模块,用于判断Java智能合约中的方法中是否带有@Parallel注解,分析带有@Parallel注解的Java智能合约的方法的Java字节码,判断是否属于成功注册的的可并行执行的合约方法;
解析模块,用于当发起合约调用时,先获取被调用合约是否有成功注册的可并行执行的合约方法,若当前区块中有多笔交易都是调用的可并行执行的合约方法,智能合约执行器将对交易中传递给合约方法的参数进行分析,当调用合约的参数不同时,则将该合约方法进行并行执行;若参数相同,则根据区块中的交易顺序来构建依赖关系,生成DAG图来决定先后顺序。
进一步的,所述注册模块包括:
取参单元,用于获取到带有@Parallel注解的Java智能合约的方法的参数个数和类型,且已知一个Java智能合约的方法获取参数是通过从当前方法栈帧的本地变量表中获取,当一个方法栈帧被调用时,可知方法栈帧的本地变量表中的变量即为当前方法的参数;
第一解析判断单元,用于解析从本地变量表中获取出来的方法参数在整个方法字节码中,是否有被修改类型指令操作或者作为参数去调用其他方法,若不满足条件则注册失败;
第二解析判断单元,用于判断该参数是否只能被@StoreField的持久化变量使用,若不满足条件,则也会导致注册失败。
第三方面,本发明实施例提供一种设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的一种基于Java智能合约的单个合约并行执行方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面所述的一种基于Java智能合约的单个合约并行执行方法。
采用以上本发明实施例,其有益效果是:本发明应用于区块链平台上,提供了一套全新的智能合约单个合约并行执行的方法,实现了合约字节码分析,并行方法注册,方法参数互斥分析,为区块链平台的合约提供了并行执行的方案。同时,在合约部署和升级时都将进行方法可并行的分析和注册。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本发明实施例一合约部署注册并行方法流程图;
图2是本发明实施例一合约调用解析并行方法流程图;
图3是本发明实施例三设备的结构示意图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
合约的虚拟机执行引擎Java虚拟机,该虚拟机执行引擎接受以jar形式的合约文件部署在区块链平台上,通过自定义的类加载器加载合约文件并初始化出合约实例,并通过接口的形式调用智能合约;
本发明实施例提及的Java智能合约内变量需要保存到区块链账本中时,需要对合约的成员变量标注@StoreField注解;
Java智能合约中的方法属于合约类的成员方法,通过@Parallel注解来标记开启并行,并在部署或升级时通过合约字节码检测;@Parallel注解提供给方法使用,只有标记了该注解才会进行可并行执行注册。
以下结合附图,详细说明本发明各实施例提供的技术方案。
图1为本申请实施例提供的一种基于Java智能合约的单个合约并行执行方法在合约部署时注册并行方法的流程示意图,所述方法可以通过使用区块链DApp来说明。本申请实施例中所记载的Java智能合约可以为一个积分场景,下面的并行执行为积分场景为例进行详细说明。
在本申请实施例中,不同机构之间为促进消费者消费,采取发布积分并提供给消费者积分换实物的奖励政策,将不同机构所使用的积分充值和兑换服务器分别作为区块链网络中的区块链节点,并在每个区块链服务器上部署用于积分充值和兑换的区块链应用,也就是所述的Java智能合约,通过合约预先设定的逻辑来做到公开透明的处理,保证数据真实,不被篡改,以及能在各家机构之间共享消费者的积分。
图1中机构之间达成协议,发起合约的部署,合约中包括了要存储的消费者账户的ID 和对应的积分值,以及相应的积分值可兑换的实物和实物的剩余数量,同时该Java智能合约提供了可以让机构在消费者消费后产生的积分充值到用户对应的Java智能合约的积分记录账户中,同时各家机构可以定期上线一些积分可兑换的实物,最终提供给用户积分查询,积分兑换实物查询和积分兑换实物的功能,由此是我们积分场景的Java智能合约的功能描述。
在上述所述的Java智能合约中,可知用户消费是一件很频繁的事情,这也意味着不同机构之间会有大量的用户积分充值数据发送到区块链,通过上述预定义好的智能合约来为消费者的积分充值,在传统的区块链场景中,需要串行执行合约交易,这必然导致机构在为消费者积分充值时服务器响应时间长,最终区块链节点会累积大量的交易等待执行。
通过以上描述,可发现机构为用户充值积分是可以进行并行执行且不会影响区块链网络的最终状态一致性。由此机构在部署合约之前,可以将为消费者充值积分的合约接口描述为可并行的Java智能合约的方法,通过@Parallel注解来描述,合约方法的参数为两个,一个消费者合约账户的ID和需要充值的积分数。机构定义好智能合约的功能后,发起合约部署,Java智能合约的安全性将经过区块链节点的安全验证,此处将验证该充值方法是否可并行的安全性。
分析Java智能合约的方法中带有@Parallel注解,即积分充值接口,分析该方法的Java 字节码。需要说明的是,当虚拟机执行引擎通过反射获取到标记有@Parallel注解的方法时,执行引擎将该方法在Java字节码class文件中,对应的code属性获取出来,在Java字节码规范中,方法code属性包括了方法执行的所有流程。通过对class文件中方法的字节码分析,首先获取到带有@Parallel注解的Java智能合约的方法的参数个数和类型,且已知一个Java 智能合约的方法获取参数是通过从当前方法栈帧的本地变量表中获取,当一个方法栈帧被调用时,可知方法栈帧的本地变量表中的变量即为当前方法的参数;其次解析从本地变量表中获取出来的方法参数在整个方法字节码中,是否有被修改类型指令操作或者作为参数去调用其他方法,若不满足条件则注册失败;最后,判断该参数是否只能被@StoreField的持久化变量使用,若不满足条件,则也会导致注册失败。
需要说明此处在积分充值时@StoreField变量为合约的消费者账户和积分映射的关系表。若合约方法检查符合要求,区块链节点将改方法注册为可并行合约,否则注册失败。在部署合约时成功判断@Parallel的方法是和并行的,则在该合约的状态数据中保存当前可并行的方法的方法签名,方法签名包括了合约方法的名称和方法参数数量以及方法参数类型,可以保证一个合约中不可能出现相同的方法签名。
需要说明的是,Java字节码文件规范中一个方法的属性包括该方法需要用到的本地变量表大小,需要用到的操作栈深度大小和执行的具体指令。Java的字节码规范中,一个方法的签名包括了方面名称,方法参数个数和类型,一个方法签名在一个类中可以保证是唯一的。
需要说明的是,从本地变量表中获取方法参数没有经过修改,可以通过是否有修改指令使用了在本地变量表中的参数;参数只能被@StoreField注解修饰的持久化变量使用可以保证在参数不同的情况下,存储的数据时并发安全的。
同理,在进行合约升级时也将对合约进行扫描,这里不再赘述。
如图2中机构发起积分充值的区块链交易,上述步骤中机构已经注册可并行方法成功,区块链节点将一定时间内的交易打包定序后,各个节点将执行交易进行验证,当通过交易的调用智能合约参数分析时,发现为可并行合约方法时,将可并行执行的合约方法做DAG(有向无环图)分析,判断注册成功的可并行执行方法在并行分析时需要做到方法参数互斥,即调用合约方法参数不一致。在机构积分充值接口中,需要消费者合约账户参数不一致,即可并行执行。
区块链节点按交易打包顺序,依次判断积分充值接口的参数是否互斥,若与之前所有的交易(指可并行合约方法的交易)参数都互斥,则作为DAG图的单独节点,且出度为0;若与之前的交易参数存在相同的情况,则当前交易将于之前存在参数相同的交易构建依赖边,主要为当前交易增加入度边,之前存在参数形同的交易增加出度边,依赖关系从先前的交易指向当前交易。
构建DAG图完毕后,按照拓扑排序的算法,区块链节点将入度为0的所有交易并行,在执行完成后更新DAG图,为相应的交易减少入度,再次获取入度为0的所有交易并行,以次循环知道结束。最终所有交易执行完成,流程执行结束。
实施例二:
本发明实施例提供一种基于Java智能合约的单个合约并行执行装置,该装置可执行本发明实施例一所提供的基于Java智能合约的单个合约并行执行方法,具备基于Java智能合约的单个合约并行执行方法相应的功能模块和有益效果。该装置包括:
注册模块,用于判断Java智能合约中的方法中是否带有@Parallel注解,分析带有@Parallel注解的Java智能合约的方法的Java字节码,判断是否属于成功注册的的可并行执行的合约方法;
解析模块,用于当发起合约调用时,先获取被调用合约是否有成功注册的可并行执行的合约方法,若当前区块中有多笔交易都是调用的可并行执行的合约方法,智能合约执行器将对交易中传递给合约方法的参数进行分析,当调用合约的参数不同时,则将该合约方法进行并行执行;若参数相同,则根据区块中的交易顺序来构建依赖关系,生成DAG图来决定先后顺序。
进一步的,所述注册模块包括:
取参单元,用于获取到带有@Parallel注解的Java智能合约的方法的参数个数和类型,且已知一个Java智能合约的方法获取参数是通过从当前方法栈帧的本地变量表中获取,当一个方法栈帧被调用时,可知方法栈帧的本地变量表中的变量即为当前方法的参数;
第一解析判断单元,用于解析从本地变量表中获取出来的方法参数在整个方法字节码中,是否有被修改类型指令操作或者作为参数去调用其他方法,若不满足条件则注册失败;
第二解析判断单元,用于判断该参数是否只能被@StoreField的持久化变量使用,若不满足条件,则也会导致注册失败。
实施例三:
图3为本发明实施例三提供的一种设备的结构示意图。图3示出了适于用来实现本发明实施方式的示例性设备1的框图。图3显示的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备1典型可以是实现基于Java智能合约的单个合约并行执行的设备。
如图3所示,设备1以通用计算设备的形式表现。设备1的组件可以包括但不限于:一个或者多个处理器或者处理单元2,存储器3,连接不同系统组件(包括存储器3和处理单元2)的总线4。
总线4表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备1典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备1访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器3可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器 (RAM)5和/或高速缓存存储器6。设备1可以进一步包括其它可移动/不可移动的、易失性/ 非易失性计算机系统存储介质。仅作为举例,存储系统8可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CDROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线4相连。存储器3可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块8,可以存储在例如存储器3中,这样的程序模块8包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块8通常执行本发明所描述的实施例中的功能和/或方法。
设备1也可以与一个或多个外部设备10(例如键盘、指向设备、显示设备9等)通信,还可与一个或者多个使得用户能与该设备1交互的设备通信,和/或与使得该设备1能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口11进行。并且,设备1还可以通过网络适配器12与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器12通过总线4与设备1的其它模块通信。应当明白,尽管图3中未示出,可以结合设备1使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元2通过运行存储在存储器3中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的基于区块链的数据分块确认方法。
实施例四:
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面所述的一种基于Java智能合约的单个合约并行执行方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CDROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
Claims (10)
1.一种基于Java智能合约的单个合约并行执行方法,其特征在于,包括:
S1、判断Java智能合约中的方法中是否带有@Parallel注解,分析带有@Parallel注解的Java智能合约的方法的Java字节码,判断是否属于成功注册的的可并行执行的合约方法;
S2、当发起合约调用时,先获取被调用合约是否有成功注册的可并行执行的合约方法,若当前区块中有多笔交易都是调用的可并行执行的合约方法,智能合约执行器将对交易中传递给合约方法的参数进行分析,当调用合约的参数不同时,则将该合约方法进行并行执行;若参数相同,则根据区块中的交易顺序来构建依赖关系,生成DAG图来决定先后顺序。
2.根据权利要求1所述的一种基于Java智能合约的单个合约并行执行方法,其特征在于,所述Java智能合约中的方法属于合约类的成员方法。
3.根据权利要求1所述的一种基于Java智能合约的单个合约并行执行方法,其特征在于,在Java智能合约被部署到区块链上时,合约执行引擎将通过Java反射扫描合约的成员方法,当扫描到合约的成员方法拥有@Parallel注解时,会对该合约的成员方法进行字节码检查,判断是否属于成功注册的的可并行执行的合约方法。
4.根据权利要求1所述的一种基于Java智能合约的单个合约并行执行方法,其特征在于,所述判断是否属于成功注册的可并行执行的合约方法,具体方法如下:
首先获取到带有@Parallel注解的Java智能合约的方法的参数个数和类型,且已知一个Java智能合约的方法获取参数是通过从当前方法栈帧的本地变量表中获取,当一个方法栈帧被调用时,可知方法栈帧的本地变量表中的变量即为当前方法的参数;
其次解析从本地变量表中获取出来的方法参数在整个方法字节码中,是否有被修改类型指令操作或者作为参数去调用其他方法,若不满足条件则注册失败;
最后,判断该参数是否只能被@StoreField的持久化变量使用,若不满足条件,则也会导致注册失败。
5.根据权利要求1所述的一种基于Java智能合约的单个合约并行执行方法,其特征在于,当判断属于成功注册的的可并行执行的合约方法后,则在合约方法的状态数据中保存当前可并行的方法的方法签名,方法签名包括了合约方法的名称和方法参数数量以及方法参数类型。
6.根据权利要求1所述的一种基于Java智能合约的单个合约并行执行方法,其特征在于,若参数相同,则根据区块中的交易顺序来构建依赖关系,生成DAG图来决定先后顺序,具体如下:
一个区块内的交易并行依赖关系通过建立DAG有向无环图的形式,序号靠后的交易和靠前的交易有参数冲突时,靠前的交易建立一条指向靠后的交易的依赖边,每次执行可以获取所有入度为0的交易来执行,同时相应的更新图中节点的入度情况。
7.一种基于Java智能合约的单个合约并行执行装置,其特征在于,包括:
注册模块,用于判断Java智能合约中的方法中是否带有@Parallel注解,分析带有@Parallel注解的Java智能合约的方法的Java字节码,判断是否属于成功注册的的可并行执行的合约方法;
解析模块,用于当发起合约调用时,先获取被调用合约是否有成功注册的可并行执行的合约方法,若当前区块中有多笔交易都是调用的可并行执行的合约方法,智能合约执行器将对交易中传递给合约方法的参数进行分析,当调用合约的参数不同时,则将该合约方法进行并行执行;若参数相同,则根据区块中的交易顺序来构建依赖关系,生成DAG图来决定先后顺序。
8.根据权利要求7所述的一种基于Java智能合约的单个合约并行执行装置,其特征在于,所述注册模块包括:
取参单元,用于获取到带有@Parallel注解的Java智能合约的方法的参数个数和类型,且已知一个Java智能合约的方法获取参数是通过从当前方法栈帧的本地变量表中获取,当一个方法栈帧被调用时,可知方法栈帧的本地变量表中的变量即为当前方法的参数;
第一解析判断单元,用于解析从本地变量表中获取出来的方法参数在整个方法字节码中,是否有被修改类型指令操作或者作为参数去调用其他方法,若不满足条件则注册失败;
第二解析判断单元,用于判断该参数是否只能被@StoreField的持久化变量使用,若不满足条件,则也会导致注册失败。
9.一种设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一项所述的一种基于Java智能合约的单个合约并行执行方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一项所述的一种基于Java智能合约的单个合约并行执行方法。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201911180710.6A CN110968437A (zh) | 2019-11-27 | 2019-11-27 | 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 |
| JP2022510861A JP7394211B2 (ja) | 2019-08-19 | 2020-08-19 | スマートコントラクトの並行実行の方法、装置、機器、及び媒体 |
| US17/636,366 US12287776B2 (en) | 2019-08-19 | 2020-08-19 | Method, apparatus and device for parallel execution of smart contract, and medium |
| PCT/CN2020/109984 WO2021032115A1 (zh) | 2019-08-19 | 2020-08-19 | 智能合约并行执行的方法、装置、设备和介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201911180710.6A CN110968437A (zh) | 2019-11-27 | 2019-11-27 | 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN110968437A true CN110968437A (zh) | 2020-04-07 |
Family
ID=70031802
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201911180710.6A Pending CN110968437A (zh) | 2019-08-19 | 2019-11-27 | 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN110968437A (zh) |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111738858A (zh) * | 2020-06-28 | 2020-10-02 | 深圳前海微众银行股份有限公司 | 一种区块链交易数据并行解码的方法及装置 |
| CN111767097A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 调用智能合约的方法及装置、电子设备、存储介质 |
| CN112200672A (zh) * | 2020-09-30 | 2021-01-08 | 上海翌派科技有限公司 | 一种智能合约处理方法及装置 |
| CN112199204A (zh) * | 2020-12-04 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中处理交易的方法和装置 |
| CN112287400A (zh) * | 2020-09-29 | 2021-01-29 | 卓尔智联(武汉)研究院有限公司 | 超级账本中的交易排序方法、装置和计算机设备 |
| CN112348551A (zh) * | 2020-09-25 | 2021-02-09 | 北京淇瑀信息科技有限公司 | 控制广告投放渠道的方法、装置和电子设备 |
| WO2021032115A1 (zh) * | 2019-08-19 | 2021-02-25 | 杭州趣链科技有限公司 | 智能合约并行执行的方法、装置、设备和介质 |
| CN112445543A (zh) * | 2020-11-26 | 2021-03-05 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
| CN112508574A (zh) * | 2021-02-03 | 2021-03-16 | 北京全息智信科技有限公司 | 一种区块链的并行交易执行方法、装置和电子设备 |
| CN114237775A (zh) * | 2022-02-21 | 2022-03-25 | 众连智能科技有限公司 | 一种并行执行方法、装置、电子设备及存储介质 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108846659A (zh) * | 2018-06-13 | 2018-11-20 | 深圳前海微众银行股份有限公司 | 基于区块链的转账方法、装置及存储介质 |
| US20190087793A1 (en) * | 2017-08-31 | 2019-03-21 | Brown University | Adding concurrency to smart contracts |
| CN109951547A (zh) * | 2019-03-15 | 2019-06-28 | 百度在线网络技术(北京)有限公司 | 事务请求并行处理方法、装置、设备和介质 |
| CN110135985A (zh) * | 2019-04-04 | 2019-08-16 | 杭州抖音科技有限公司 | 一种区块链上交易的并行执行方法及系统 |
| CN110300985A (zh) * | 2018-12-28 | 2019-10-01 | 阿里巴巴集团控股有限公司 | 基于智能合约白名单在区块链网络中并行执行交易 |
-
2019
- 2019-11-27 CN CN201911180710.6A patent/CN110968437A/zh active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190087793A1 (en) * | 2017-08-31 | 2019-03-21 | Brown University | Adding concurrency to smart contracts |
| CN108846659A (zh) * | 2018-06-13 | 2018-11-20 | 深圳前海微众银行股份有限公司 | 基于区块链的转账方法、装置及存储介质 |
| CN110300985A (zh) * | 2018-12-28 | 2019-10-01 | 阿里巴巴集团控股有限公司 | 基于智能合约白名单在区块链网络中并行执行交易 |
| CN109951547A (zh) * | 2019-03-15 | 2019-06-28 | 百度在线网络技术(北京)有限公司 | 事务请求并行处理方法、装置、设备和介质 |
| CN110135985A (zh) * | 2019-04-04 | 2019-08-16 | 杭州抖音科技有限公司 | 一种区块链上交易的并行执行方法及系统 |
Cited By (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021032115A1 (zh) * | 2019-08-19 | 2021-02-25 | 杭州趣链科技有限公司 | 智能合约并行执行的方法、装置、设备和介质 |
| US12287776B2 (en) | 2019-08-19 | 2025-04-29 | Hangzhou Hyperchain Technology Co., Ltd. | Method, apparatus and device for parallel execution of smart contract, and medium |
| CN111738858A (zh) * | 2020-06-28 | 2020-10-02 | 深圳前海微众银行股份有限公司 | 一种区块链交易数据并行解码的方法及装置 |
| CN111767097A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 调用智能合约的方法及装置、电子设备、存储介质 |
| CN112348551A (zh) * | 2020-09-25 | 2021-02-09 | 北京淇瑀信息科技有限公司 | 控制广告投放渠道的方法、装置和电子设备 |
| CN112287400A (zh) * | 2020-09-29 | 2021-01-29 | 卓尔智联(武汉)研究院有限公司 | 超级账本中的交易排序方法、装置和计算机设备 |
| CN112200672A (zh) * | 2020-09-30 | 2021-01-08 | 上海翌派科技有限公司 | 一种智能合约处理方法及装置 |
| CN112200672B (zh) * | 2020-09-30 | 2023-03-17 | 上海翌派科技有限公司 | 一种智能合约处理方法 |
| CN112445543B (zh) * | 2020-11-26 | 2023-03-10 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
| CN112445543A (zh) * | 2020-11-26 | 2021-03-05 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
| CN112199204A (zh) * | 2020-12-04 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中处理交易的方法和装置 |
| CN112199204B (zh) * | 2020-12-04 | 2021-03-12 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中处理交易的方法和装置 |
| CN112508574A (zh) * | 2021-02-03 | 2021-03-16 | 北京全息智信科技有限公司 | 一种区块链的并行交易执行方法、装置和电子设备 |
| CN114237775A (zh) * | 2022-02-21 | 2022-03-25 | 众连智能科技有限公司 | 一种并行执行方法、装置、电子设备及存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110968437A (zh) | 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 | |
| CN110096857B (zh) | 区块链系统的权限管理方法、装置、设备和介质 | |
| CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
| CN110297689B (zh) | 智能合约执行方法、装置、设备及介质 | |
| CN110941528B (zh) | 一种基于故障的日志埋点设置方法、装置及系统 | |
| JP7394211B2 (ja) | スマートコントラクトの並行実行の方法、装置、機器、及び媒体 | |
| CN107526625B (zh) | 一种基于字节码检查的Java智能合约安全检测方法 | |
| CN110401634A (zh) | 一种Web应用漏洞检测规则引擎实现方法及终端 | |
| CN111290958B (zh) | 一种调试智能合约的方法及装置 | |
| CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
| CN115268847A (zh) | 区块链智能合约的生成方法、装置及电子设备 | |
| CN111984228A (zh) | 一种接口文档的处理方法、装置、计算机设备和存储介质 | |
| US11531763B1 (en) | Automated code generation using analysis of design diagrams | |
| US8676627B2 (en) | Vertical process merging by reconstruction of equivalent models and hierarchical process merging | |
| CN109032631A (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
| CN114218110A (zh) | 财务数据的对账测试方法、装置、计算机设备及存储介质 | |
| CN103186463B (zh) | 确定软件的测试范围的方法和系统 | |
| CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
| CN117370984A (zh) | 组件安全检测方法、装置、计算机设备及存储介质 | |
| US20250265338A1 (en) | System and method for improving security of software development life cycles | |
| CN114119243A (zh) | 基于区块链的池融资管理方法、装置、介质和电子设备 | |
| US9064042B2 (en) | Instrumenting computer program code by merging template and target code methods | |
| CN114491662B (zh) | 一种基于区块链的数据资产审计方法、系统及设备 | |
| CN113901773B (zh) | 数据核算方法、装置、电子设备及存储介质 | |
| CN116628461A (zh) | 一种数据合规处理方法、装置以及设备 |
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 | ||
| RJ01 | Rejection of invention patent application after publication | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200407 |