CN112764897B - 任务请求的处理方法、装置、***及计算机可读存储介质 - Google Patents
任务请求的处理方法、装置、***及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112764897B CN112764897B CN202011641801.8A CN202011641801A CN112764897B CN 112764897 B CN112764897 B CN 112764897B CN 202011641801 A CN202011641801 A CN 202011641801A CN 112764897 B CN112764897 B CN 112764897B
- Authority
- CN
- China
- Prior art keywords
- task
- task requests
- contract
- data dependency
- requests
- 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
- 238000003672 processing method Methods 0.000 title abstract description 14
- 238000000034 method Methods 0.000 claims abstract description 110
- 238000012545 processing Methods 0.000 claims abstract description 108
- 230000008569 process Effects 0.000 claims abstract description 68
- 238000012546 transfer Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 15
- 230000007246 mechanism Effects 0.000 description 19
- 230000006978 adaptation Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000003307 slaughter Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种任务请求的处理方法、装置、***及计算机可读存储介质,用于根据任务请求之间识别出的数据依赖关系以及所需调用的智能合约之间的合约冲突关系,实现更为高效的并行处理效率。方法包括:获取区块链平台中待处理的多个第一任务请求,第一任务请求用于请求区块链平台处理目标任务;识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系;根据数据依赖关系以及不同智能合约,对多个第一任务请求进行划分,得到多个任务请求集合,其中,任务请求集合中包括配置了执行顺序的多个第二任务请求;指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求。
Description
技术领域
本申请涉及领域,具体涉及一种任务请求的处理方法、装置、***及计算机可读存储介质。
背景技术
目前,多数区块链平台中,使用的是串行执行的任务执行方式。因为区块链上的任务存在先后顺序,某一个任务可能需要依赖之前的某个任务执行结果才能正确执行,区块链为保证任务执行结果在各个节点上的一致性,按照链上区块的顺序以及任务在区块中的顺序进行串行执行:获取区块链上待执行的块号为N的区块,按区块内任务的执行顺序串行执行每个任务,当区块的所有任务都执行完以后将执行记录持久化到存储,然后获取下一个待执行的块号为N+1的区块,按照区块内任务的执行顺序串行执行每个任务,当区块内的所有任务都执行完以后将执行记录持久化到存储,继续获取下一个待执行的块号为N+2的区块…。
而在快速执行任务的应用需求下,区块链技术中,则可引入并行执行的任务执行方式,通过分析任务之间的相关性,或者说关联性,根据分析出的相关性,对各任务进行划分,得到不同的任务组,如此,这些任务组之间,在认为并不存在相关性的情况下,可并行执行这些任务组,从而达到提高任务执行效率的目的。
而在现有的相关技术的研究过程中,发明人发现,现有的并行执行方式,在处理效率上仍存在一定的限制,若能继续提高并行执行效率,显然,对于区块链的应用是有利的。
发明内容
本申请提供了一种任务请求的处理方法、装置、***及计算机可读存储介质,用于根据任务请求之间识别出的数据依赖关系以及所需调用的智能合约之间的合约冲突关系,促使更为精确且有效的任务请求分组方式,如此,对于这些任务可实现更为高效的并行处理效率。
第一方面,本申请提供了一种任务请求的处理方法,方法包括:
获取区块链平台中待处理的多个第一任务请求,第一任务请求用于请求区块链平台处理目标任务;
识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系;
根据数据依赖关系以及不同智能合约,对多个第一任务请求进行划分,得到多个任务请求集合,其中,任务请求集合中包括配置了执行顺序的多个第二任务请求;
指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求。
结合本申请第一方面,在本申请第一方面第一种可能的实现方式中,识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系,包括:
识别多个第一任务请求中分别所需调用的第一智能合约以及第二智能合约;
以第一智能合约的合约地址以及需要调用第一智能合约的任务请求的用户地址两者为第一判断单位,以及以第二智能合约的合约地址以及需要调用第二智能合约的任务请求的用户地址两者为第二判断单位,判断第一判断单位与第二判断单位两者之间是否存在地址上的相关性;
若是,则确定第一合约冲突关系,其中,第一合约冲突关系用于指示第一智能合约与第二智能合约之间存在冲突。
结合本申请第一方面,在本申请第一方面第二种可能的实现方式中,识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系,包括:
识别多个第一任务请求中分别调用的相同的第三智能合约;
分析调用第三智能合约执行多个第三任务请求时读写的数据结构是否存在交集;
若是,则确定第二合约冲突关系,其中,第二合约冲突关系用于指示第三智能合约在执行多个第三任务请求时存在冲突。
结合本申请第一方面,在本申请第一方面第三种可能的实现方式中,识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系,包括:
识别多个第一任务请求中分别调用的相同的第三智能合约;
分析多个第三任务请求在第三智能合约中分别所需调用的不同合约内容;
判断不同合约内容是否配置有并行标识,其中,并行标识用于标识不同合约内容之间已预先确定为未存在冲突;
若是,则确定第三合约冲突关系,其中,第三合约冲突关系用于指示多个第三任务请求在调用第三智能合约时未存在冲突。
结合本申请第一方面或者第一方面任一种可能的实现方式,在本申请第一方面第四种可能的实现方式中,识别多个第一任务请求之间存在的数据依赖关系,包括:
根据多个第一任务请求对应的应用场景,从数据依赖关系确定策略集合中确定多个第一任务请求适配的目标数据依赖关系确定策略,其中,数据依赖关系确定策略集中包含不同应用场景适配的不同数据依赖关系确定策略;
根据目标数据依赖关系确定策略,识别多个第一任务请求之间存在的数据依赖关系。
结合本申请第一方面第四种可能的实现方式,在本申请第一方面第五种可能的实现方式中,数据依赖关系确定策略集合中包括转账应用场景适配的数据依赖关系确定策略,转账应用场景适配的数据依赖关系确定策略包括:判断转账处理是否涉及相同转入账号或者相同转出账号,若是,则确定数据依赖关系。
结合本申请第一方面或者第一方面任一种可能的实现方式,在本申请第一方面第六种可能的实现方式中,方法由区块链平台中的区块链节点设备的第一进程执行,多个任务请求集合中的任务请求的并行执行由区块链平台中的区块链节点设备的第二进程执行,多个任务请求集合中的任务请求的执行结果的存储由区块链平台中的区块链节点设备的第三进程执行。
结合本申请第一方面或者第一方面任一种可能的实现方式,在本申请第一方面第七种可能的实现方式中,获取区块链平台中待处理的多个第一任务请求,包括:
从区块链平台中待处理的多个区块中获取多个第一任务请求。
结合本申请第一方面或者第一方面任一种可能的实现方式,在本申请第一方面第八种可能的实现方式中,识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系,包括:
对多个第一任务请求进行预执行处理;
在预执行处理过程中,识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系。
第二方面,本申请提供了一种任务请求的处理装置,装置包括:
获取单元,用于获取区块链平台中待处理的多个第一任务请求,第一任务请求用于请求区块链平台处理目标任务;
识别单元,用于识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系;
划分单元,用于根据数据依赖关系以及不同智能合约,对多个第一任务请求进行划分,得到多个任务请求集合,其中,任务请求集合中包括配置了执行顺序的多个第二任务请求;
指示单元,用于指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求。
结合本申请第二方面,在本申请第二方面第一种可能的实现方式中,识别单元,具体用于:
识别多个第一任务请求中分别所需调用的第一智能合约以及第二智能合约;
以第一智能合约的合约地址以及需要调用第一智能合约的任务请求的用户地址两者为第一判断单位,以及以第二智能合约的合约地址以及需要调用第二智能合约的任务请求的用户地址两者为第二判断单位,判断第一判断单位与第二判断单位两者之间是否存在地址上的相关性;
若是,则确定第一合约冲突关系,其中,第一合约冲突关系用于指示第一智能合约与第二智能合约之间存在冲突。
结合本申请第二方面,在本申请第二方面第二种可能的实现方式中,识别单元,具体用于:
识别多个第一任务请求中分别调用的相同的第三智能合约;
分析调用第三智能合约执行多个第三任务请求时读写的数据结构是否存在交集;
若是,则确定第二合约冲突关系,其中,第二合约冲突关系用于指示第三智能合约在执行多个第三任务请求时存在冲突。
结合本申请第二方面,在本申请第二方面第三种可能的实现方式中,识别单元,具体用于:
识别多个第一任务请求中分别调用的相同的第三智能合约;
分析多个第三任务请求在第三智能合约中分别所需调用的不同合约内容;
判断不同合约内容是否配置有并行标识,其中,并行标识用于标识不同合约内容之间已预先确定为未存在冲突;
若是,则确定第三合约冲突关系,其中,第三合约冲突关系用于指示多个第三任务请求在调用第三智能合约时未存在冲突。
结合本申请第二方面或者第二方面任一种可能的实现方式,在本申请第二方面第四种可能的实现方式中,识别单元,具体用于:
根据多个第一任务请求对应的应用场景,从数据依赖关系确定策略集合中确定多个第一任务请求适配的目标数据依赖关系确定策略,其中,数据依赖关系确定策略集中包含不同应用场景适配的不同数据依赖关系确定策略;
根据目标数据依赖关系确定策略,识别多个第一任务请求之间存在的数据依赖关系。
结合本申请第二方面第四种可能的实现方式,在本申请第二方面第五种可能的实现方式中,数据依赖关系确定策略集合中包括转账应用场景适配的数据依赖关系确定策略,转账应用场景适配的数据依赖关系确定策略包括:判断转账处理是否涉及相同转入账号或者相同转出账号,若是,则确定数据依赖关系。
结合本申请第二方面或者第二方面任一种可能的实现方式,在本申请第二方面第六种可能的实现方式中,装置由区块链平台中的区块链节点设备的第一进程执行,多个任务请求集合中的任务请求的并行执行由区块链平台中的区块链节点设备的第二进程执行,多个任务请求集合中的任务请求的执行结果的存储由区块链平台中的区块链节点设备的第三进程执行。
结合本申请第二方面或者第二方面任一种可能的实现方式,在本申请第二方面第七种可能的实现方式中,获取单元,具体用于:
从区块链平台中待处理的多个区块中获取多个第一任务请求。
结合本申请第二方面或者第二方面任一种可能的实现方式,在本申请第二方面第八种可能的实现方式中,识别单元,具体用于:
对多个第一任务请求进行预执行处理;
在预执行处理过程中,识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系。
第三方面,本申请还提供了一种任务请求的处理***,***包括多个区块链节点设备,区块链节点设备包括处理器和存储器,存储器中存储有计算机程序,多个处理器调用存储器中的计算机程序时执行如执行本申请第一方面或者本申请第一方面任一种可能的实现方式提供的方法。
第四方面,本申请还提供了一种计算机可读存储介质,计算机可读存储介质存储有多条指令,指令适于处理器进行加载,以执行本申请第一方面或者本申请第一方面任一种可能的实现方式提供的方法。
从以上内容可得出,本申请具有以下的有益效果:
针对于区块链中任务请求的并行处理场景,本申请在获取区块链平台中待处理的多个第一任务请求后,识别这些请求之间存在的数据依赖关系以及识别分别所需调用的智能合约之间存在的合约冲突关系,再根据数据依赖关系以及不同智能合约,对多个第一任务请求进行划分,得到多个任务请求集合,其中,如此,可指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求,在分组过程中,由于结合了任务请求之间识别出的数据依赖关系以及所需调用的智能合约之间的合约冲突关系两者,促使了更为精确且有效的任务请求分组方式,不仅适用于单合约场景,更可适用于多合约场景,如此,对于这些任务请求可实现更为高效的并行处理效率,提高了***的处理能力,有利于区块链技术的应用以及推广。
附图说明
图1为本申请任务请求的执行的一种场景示意图;
图2为本申请任务请求的处理方法的一种流程示意图;
图3为本申请识别合约冲突关系的一种流程示意图;
图4为本申请识别合约冲突关系的另一种流程示意图;
图5为本申请识别合约冲突关系的又一种流程示意图;
图6为本申请识别数据依赖关系的一种流程示意图;
图7为本申请多进程机制的一种结构示意图;
图8为本申请任务请求的处理装置的一种结构示意图;
图9为本申请区块链节点设备的一种结构示意图。
具体实施方式
首先,在介绍本申请之前,先介绍下本申请关于应用背景的相关内容。
本申请提供的任务请求的处理方法、装置以及计算机可读存储介质,可应用于任务请求的处理***上,用于根据任务请求之间识别出的数据依赖关系以及所需调用的智能合约之间的合约冲突关系,促使更为精确且有效的任务请求分组方式,如此,对于这些任务可实现更为高效的并行处理效率。
本申请提及的任务请求的处理方法,其执行主体可以为任务请求的处理装置,或者集成了该装置的任务请求的处理***,可以理解,该处理***包含于区块链平台,或者为区块链平台本身,***由不同的区块链节点设备组成,这些区块链设备可以为服务器设备、物理主机或者用户设备(User Equipment,UE)等不同类型的设备,通过配置区块链平台涉及的应用程序,经审核通过后加入了区块链平台。
其中,任务请求的处理装置可以采用硬件或者软件的方式实现,UE具体可以为智能手机、平板电脑、笔记本电脑、掌上电脑、台式电脑或者个人数字助理(Personal DigitalAssistant,PDA)等终端设备,区块链节点设备还可以以设备集群的形式配置。
以图1所示的本申请任务请求的执行的一种场景示意图为例,任务请求集合100以及任务请求集合200为划分得到的视为可并行执行的两个任务请求集合,在任务请求集合100中,任务请求101a、任务请求102a所需调用的是智能合约a,任务请求103b所需调用的是智能合约b,智能合约a与智能合约b之间存在识别出的合约冲突关系,所以放在了同一个任务请求集合中,并根据两合约之间的冲突关系确定了在调用智能合约a的任务请求101a以及任务请求102a之后执行,而任务请求101a以及任务请求102a之间通过考虑两请求之间的数据依赖关系,则确定先执行任务请求101a再执行任务请求102a;
在任务请求集合200中,任务请求201c以及任务请求202c所需调用的是智能合约c,由于与任务请求集合100中的任务请求并不存在请求之间的数据依赖关系以及并不存在请求所需调用智能合约之间的合约冲突关系,因此,任务请求集合100与任务请求集合200之间,为处于可并行执行的关系,如此,可按照任务请求集合中的任务请求的执行顺序,并行执行两任务请求集合中的任务请求。
其中,可以理解的是,对于图1所示场景,其任务请求集合、任务请求集合中的任务请求的以及任务请求所需执行的智能合约的数量设置,仅为举例,不应作为对本申请的限定。
图2示出了本申请任务请求的处理方法的一种流程示意图,如图2示出的,本申请提供的任务请求的处理方法,具体可包括如下步骤:
步骤S201,获取区块链平台中待处理的多个第一任务请求,第一任务请求用于请求区块链平台处理目标任务;
步骤S202,识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系;
步骤S203,根据数据依赖关系以及不同智能合约,对多个第一任务请求进行划分,得到多个任务请求集合,其中,任务请求集合中包括配置了执行顺序的多个第二任务请求;
步骤S204,指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求。
在图1所示场景的基础上,从图2所示实施例可看出,针对于区块链中任务请求的并行处理场景,本申请在获取区块链平台中待处理的多个第一任务请求后,识别这些请求之间存在的数据依赖关系以及识别分别所需调用的智能合约之间存在的合约冲突关系,再根据数据依赖关系以及不同智能合约,对多个第一任务请求进行划分,得到多个任务请求集合,如此,可指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求,在分组过程中,由于结合了任务请求之间识别出的数据依赖关系以及所需调用的智能合约之间的合约冲突关系两者,促使了更为精确且有效的任务请求分组方式,不仅适用于单合约场景,更可适用于多合约场景,如此,对于这些任务请求可实现更为高效的并行处理效率,提高了***的处理能力,有利于区块链技术的应用以及推广。
以下继续对图2所示的各步骤以及在实际应用中可能采用的具体实施方式进行详细阐述:
在本申请中,可以理解的是,任务请求的处理方法是从任务请求的处理***的***角度进行说明的,而该***应用于区块链平台,其在应用本申请提供的任务请求的处理方法时,基于区块链平台本身的工作机制,存在一共识机制,即,对于涉及的部分或者全部数据处理,是在各区块链节点设备进行投票,并投票通过后方采取的数据处理,其采取的共识协议(协议的内容可以理解为描述如何进行投票以及如何确定投票通过结果),可采用不同类型的共识协议,例如PoW、PoS、BFT或者RAFT等共识协议,具体可随实际需要调整,在此不做限定。
本申请任务请求的处理方法,所针对的是任务请求的处理***所需执行的任务请求,以实际应用中涉及到的交易***为例,所针对的任务请求则可以为交易***中涉及的交易请求,该交易请求通俗点来说,则可以理解为一笔交易。
当然,在实际应用中,任务请求的处理***所需执行的任务请求,可随***具体的应用场景以及***中的不同应用需求而调整,具体不做限定。
例如,任务请求的处理***包含于或者直接为电子证据的存证***,如此,任务请求可以为电子证据的上链请求(存证请求)、查询请求甚至下载请求;又例如,任务请求的处理***包含于或者直接为生猪数据的回溯***,如此,任务请求可以为针对生猪养殖数据、生猪屠宰数据、生猪运输数据、生猪检疫数据甚至生猪销售数据等不同生猪数据,所发起的上链请求、查询请求或者下载请求。
当获取到当前任意数目或者预设数目的所需执行的任务请求后,则可对这些请求,进行本申请合约冲突关系以及数据依赖关系的识别。
1.合约冲突关系
可以理解,在区块链平台中,任务请求的处理是在对应智能合约规范的处理内容下执行的,或者说,是通过调用智能合约执行任务请求的,而在该情况下,本申请则额外的考虑不同任务请求在执行时所需调用的智能合约之间的合约冲突关系,以根据该合约冲突关系进行任务请求的划分。
以下则列举本申请提出的三种适于实用的合约冲突关系的识别方式。
1.1地址
参阅图3示出的本申请识别合约冲突关系的一种流程示意图,以合约地址进行合约冲突关系的识别处理,可包括如下步骤S301至步骤S303:
步骤S301,识别多个第一任务请求中分别所需调用的第一智能合约以及第二智能合约;
举例而言,在智能合约的合约冲突关系的识别处理中,一般是以两两任务请求分别所需调用的智能合约为单位,进行识别的。
而当前确定的两个智能合约,分别记为第一智能合约以及第二智能合约。
步骤S302,以第一智能合约的合约地址以及需要调用第一智能合约的任务请求的用户地址两者为第一判断单位,以及以第二智能合约的合约地址以及需要调用第二智能合约的任务请求的用户地址两者为第二判断单位,判断第一判断单位与第二判断单位两者之间是否存在地址上的相关性,若是,则触发步骤S303;
作为一种具体的实现方式,本申请则考虑从地址入手,来识别合约冲突关系。
可以理解,任务请求在调用智能合约进行任务处理时,可涉及到智能合约本身的合约地址,也可涉及到任务请求本身的用户地址,该用户地址,以转账应用场景为例,通常可涉及到转入账户以及转出账户这两个类型的用户地址。
地址之间的相关性,并不一定属于完全相同的关系,也有可能存在等同地址、类似地址的关系,其地址之间的相关性的判断方式,可随实际需要调整,具体在此不做限定。
例如,可以直接根据地址的字符是否完全一致来确定相关度;又或者,可通过欧氏距离计算方式分析地址之间的相关度。
当然,在实际应用中,区块链平台中,不同的地址可能还出现互相嵌套的情况,例如,一个任务请求的用户地址可能是在另一个智能合约的合约地址的基础上部署的,也因此,本申请在判断两两任务请求所需调用智能合约之间的合约冲突关系时,对应同一个任务请求的合约地址以及用户地址,或者两个任务请求的合约地址以及用户地址,在背后可能也存在着地址之间互相嵌套的情况,这也属于一种地址上的相关性。
步骤S303,确定第一合约冲突关系,其中,第一合约冲突关系用于指示第一智能合约与第二智能合约之间存在冲突。
如此,当确定了存在地址上的相关性时,则可确定两智能合约之间存在着冲突。
应当理解的是,此处所提及的两智能合约之间存在着冲突,可以是指两智能合约本身之间,也可以是指调用两智能合约的任务请求之间,甚至还可以是指一智能合约和调用另一智能合约的任务请求之间,由于地址上存在的相关性,因此存在着冲突。
而若未存在冲突,即,未存在上述地址导致的冲突,显然,两个任务请求在执行时,可采取并行处理。
可发现,该基于地址所确定的合约冲突关系,尤其适用于多智能合约场景,如此根据确定的合约冲突关系,可有效且简便地达到一种跨合约的并行处理机制。
1.2读写的数据结构
参阅图4示出的本申请识别合约冲突关系的另一种流程示意图,以读写的数据结构进行合约冲突关系的识别处理,可包括如下步骤S401至步骤S403:
步骤S401,识别多个第一任务请求中分别调用的相同的第三智能合约;
可以理解,当存在两种任务请求分别所需调用的智能合约为同一智能合约时,一般可默认这两个任务请求在执行时存在冲突,但是本申请考虑到一个智能合约中有多个的合约内容,在该情况下也可通过进一步的细化识别机制来判断两者在执行时分别调用的合约内容是否会真的存在冲突。
步骤S402,分析调用第三智能合约执行多个第三任务请求时读写的数据结构是否存在交集,若是,则触发步骤S403;
作为一种适于实用的实现方式,本申请则可以调用智能合约来执行任务请求时读写的数据结构是否存在交集,来确定调用的智能合约之间是否存在冲突。
其中,该读写的数据结构,是指智能合约中的合约内容的具体呈现方式。
步骤S403,确定第二合约冲突关系,其中,第二合约冲突关系用于指示第三智能合约在执行多个第三任务请求时存在冲突。
如果在数据结构上存在交集,则可确定两个任务请求在调用同一智能合约时存在着冲突。
其中,该数据结构,在实际应用中,应当理解的是,还存在一种情况,即,数据结构包括多层的数据结构,当第一层数据结构相同时,第一层数据结构中的第二层数据结构若不同,若以第二层数据结构为单位来分析读写的的数据结构是否存在交集的话,显然,两者是会被确定为未存在交集的。例如,map的add、delete方法,参数不同就可进行并行。
如此,可看出,通过读写的数据结构是否存在交集时,其数据结构的层次是可随实际需要调整的,以适应细颗粒度的交集判断方式。
可发现,该基于数据结构的交集所确定的合约冲突关系,尤其适用于单智能合约场景,如此根据确定的合约冲突关系,即使在调用同一智能合约的情况下,也能实现并行处理机制。
1.3并行标识
参阅图5示出的本申请识别合约冲突关系的又一种流程示意图,以并行标识进行合约冲突关系的识别处理,可包括如下步骤S501至步骤S504:
步骤S501,识别多个第一任务请求中分别调用的相同的第三智能合约;
可以理解,当存在两种任务请求分别所需调用的智能合约为同一智能合约时,一般可默认这两个任务请求在执行时存在冲突,但是本申请考虑到一个智能合约中有多个的合约内容,在该情况下也可通过进一步的细化识别机制来判断两者在执行时分别调用的合约内容是否会真的存在冲突。
步骤S502,分析多个第三任务请求在第三智能合约中分别所需调用的不同合约内容;
对应的,当存在调用同一智能合约时,可判断两两任务请求分别在该智能合约中所需调用的合约内容。
步骤S503,判断不同合约内容是否配置有并行标识,其中,并行标识用于标识不同合约内容之间已预先确定为未存在冲突,若是,则触发步骤S504;
本申请可预先在智能合约不同的合约内容配置并行标识,以标识不同合约内容之间是否可执行并行处理机制。
可以理解,在并行标识的配置,一般可由工作人员手动配置,或者结合历史并行处理经验进行配置。
例如,若通过上述读写的数据结构确定未存在合约冲突关系时,则可为这两数据结构对应的合约内容配置并行标识。
此时,可发现的是,并行标识的配置,是可以在上文通过读写的数据结构进行合约冲突关系的识别处理的基础上进行的,而上文中通过读写的数据结构进行合约冲突关系的识别处理,不仅可以为实时判断数据结构的交集来确定合约冲突关系,也可能采用并行标识的设置,来确定预先已确定的数据结构的交集关系,显然,这两种是否可进行并行处理的判断机制,在实际应用中,还可能存在混用的情况。
步骤S504,确定第三合约冲突关系,其中,第三合约冲突关系用于指示多个第三任务请求在调用第三智能合约时未存在冲突。
如此,通过预先配置的并行标识,则可实现更为快速的是否可并行处理的判断,以此促进更为快速的并行处理效率。
可发现,该基于并行标识所确定的合约冲突关系,尤其适用于单智能合约场景,如此根据确定的合约冲突关系,即使在调用同一智能合约的情况下,也能实现并行处理机制。
此外,上述后两者示出的单合约情况下对于合约冲突关系的确定,也可适用于跨合约情况,即,也可用于确定不同智能合约存在的合约冲突关系,当然,这两者,更适用于单合约情况。
2.数据依赖关系
可以理解的是,一个任务请求的执行可能依赖于另一份任务请求的执行结果,该情况可构成两任务请求之间的数据依赖关系,该数据依赖关系的识别处理,可以为现有技术中任务请求串行执行机制所采用的识别方式,也可以为其他类型的识别方式,具体在此不做限定。
作为本申请提出的一种适于实用且可提高数据依赖关系识别精确地的实现方式,参阅图6示出的本申请识别数据依赖关系的一种流程示意图,任务请求之间的数据依赖关系的识别处理,可包括:
步骤S601,根据多个第一任务请求对应的应用场景,从数据依赖关系确定策略集合中确定多个第一任务请求适配的目标数据依赖关系确定策略,其中,数据依赖关系确定策略集中包含不同应用场景适配的不同数据依赖关系确定策略;
可以理解,相比于现有技术中采用固定的数据依赖关系确定策略来识别当前任务请求之间的数据依赖关系,本申请则考虑实际应用中的不同应用场景,分别配置不同的数据依赖关系确定策略,如此在存在多个任务请求的情况下,可根据这些任务请求所对应的应用场景,挑选出适配的数据依赖关系确定策略进行两两任务请求之间的数据依赖关系的识别。
如此,达到适应混合应用场景的任务请求之间的数据依赖关系的精确识别,尤其是当结合上述提及的合约冲突关系的识别结果后,可达到更为精确且有效的任务请求分组方式,从而可实现更为精确、高效的并行处理。
步骤S602,根据目标数据依赖关系确定策略,识别多个第一任务请求之间的数据依赖关系。
当确定当前适配的目标数据依赖关系确定策略后,则可根据该确定策略,进行任务请求之间的数据依赖关系的识别。
可以理解的是,在本申请中所提及的不同应用场景,可以是随实际需要对实际应用场景进行细化、细分得到的,或者也可以是对历史应用场景进行划分、聚类得到的,其应用场景的划分方式,由于其灵活的划分特点,具体在此不做限定。
其中,以转账应用场景为例,其适配的数据依赖关系确定策略可包括:
在判断两个涉及到转账应用场景的任务请求之间的数据依赖关系时,可判断两者的转账处理是否涉及相同转入账号或者相同转出账号,若是,则确定数据依赖关系。
如此,若两任务请求在转账应用场景中存在同一账户,则可划入同一任务请求集合,其中,该任务请求集合可建立并查集,甚至可将该集合作为一个新的交易块。
当确定了合约冲突关系以及数据依赖关系后,则可将存在合约冲突或者数据依赖的任务请求放置在不同的任务请求集合中,将未存在合约冲突或者存在数据依赖的任务请求放置在同一任务请求集合中,完成任务请求的划分,得到不同的任务请求集合,这些任务请求集合之间,则可通过并行处理的方式来完成任务的处理。
而在任务请求集合中,则可进行执行顺序的排序,例如在识别出的数据依赖关系的基础上,进行排序。
确定了任务请求集合后,则可分发布任务,指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求。
此外,对于任务请求的确认、划分以及执行等相应的处理环节,在现有技术中,区块链节点是为采用单进程的方式进行处理的。
而本申请,则进一步的引入了多进程的方式,来分别处理不同的处理环节,以进一步提高这些处理环节的处理效率。
举例而言,上述任务请求的确认、划分以及发布,可由区块链平台中的区块链节点设备的第一进程执行,而该多个任务请求集合中的任务请求的并行执行由区块链平台中的区块链节点设备的第二进程执行,其次,该多个任务请求集合中的任务请求的执行结果的存储由区块链平台中的区块链节点设备的第三进程执行。
结合图7示出的本申请多进程机制的一种结构示意图,在本申请,将单进程拆分为了多进程,即,包括区块链主进程(第一进程)、执行进程(第二进程)以及存储进程(第三进程)。
下面以任务请求为交易***中的交易为例,进行举例说明。
从整体来看,处理流程主要包括:
1.区块链主进程运行共识协议,产生经过共识的区块,之后主进程将会对一个区块中的交易进行分析,将其拆分为多个不相关的可并行的交易块,以任务的形式发布。
2.若干执行进程则通过订阅或类似的方案获取执行任务,向存储进程发送读请求,完成交易执行,返回执行结果至主进程,执行结果将以读写集形式存在。
3.主进程分析执行结果,即读写集,判断同一区块内的交易块之间是否冲突,如果没有冲突,进行所有读写集的合并,通知存储进程,完成写入;如果有冲突则将存在冲突的交易块重新以任务形式发布,执行进程重新执行,等待执行结果。
而在每个进程中,区块链主进程,其处理内容,主要包括:
1.通过共识协议,确认区块N所包含的交易列表与交易顺序;
此处的共识协议可以使用任意协议,包括PoW、PoS、BFT、RAFT等等共识协议。
2.对区块N中的交易列表进行分析,将区块中的交易拆分为多个不相关的交易块;
关于交易可并行处理的分析,其具体内容可参照上文的已说明内容,也可继续参考下文涉及的其他内容,具体在此不做展开说明。
3.主进程发布任务,编号为N1、N2、N3……Nk;
发布任务可通过消息中间件或任意形式实现。
其中,发布N号区块任务后,主进程可流水线地对N+1号区块进行预分析,无需等待N号彻底执行完成。
4.主进程收集编号为N1、N2、N3……Nk的执行结果。
如果发现冲突,将可用的冲突信息增加至预分析的判断依据中,并重新从第2步开始执行,且任务编号从Nk+1开始,避免旧版本消息对***造成影响;如果发现无冲突,则将编号N与归并后的写集更新至存储进程。
执行进程,其数据处理,主要包括:
1.通过消息中间件等渠道订阅得到任务Ni,依次执行其中的交易;
假设Ni中存在s笔交易。
2.执行第j笔交易;
需要读取数据时,如果本地有缓存数据,直接使用本地数据。否则发送读取请求至存储进程,读取请求中包含了编号N与需要读取的数据key值。
如果得到了合法的返回结果,即可解析得到正确的数据值,用以执行交易j;如果返回结果非法,直接放弃任务Ni的执行。
交易j执行过程中,对数据所做的所有修改都不会更新至存储进程,都将暂存于本地,用于后续交易的执行。
交易j执行完成后,记录交易j执行过程中产生的所有读写集。
3.完成第j笔交易执行后,执行j+1笔交易,重复第2步;
4.完成所有交易执行后,获得s笔交易的所有读写集,封装后,以编号Ni返回执行结果至主进程。
存储进程,其数据处理,主要包括:
1.维护当前存储状态版本号v;
2.接收读请求,如果读请求中携带的编号N与版本号相等,即进行查询,返回查询结果;如果不等,直接返回非法结果;
3.接收写请求,如果写请求中携带的编号N与当前存储状态版本号v+1相等,则接收此写请求,写入数据,并将版本号更新为v+1;否则,返回非法结果。
可以理解,设置的各进程之间可完全解耦,很少甚至无需维护任何复杂的交互协议,从而执行进程可以达到近乎无上限增加的特点。
根据本申请的上述内容,可发现,本申请所提出的并行处理机制,相比于现有技术中的并行处理机制,具有更佳灵活以及精确的特点,尤其可适用于跨合约场景,对于执行时需要调用不同智能合约的任务请求,也可实现并行处理机制。
而本申请在移植进现有的区块链平台中时,所针对的任务请求,可以为原区块链平台中确定的待处理的任务请求,例如,原区块链平台中,通常为将一定时间范围内的任务请求根据智能合约进行初步的划分,得到多个区块,这些区块中包括了多个任务请求,而现有技术中的并行处理机制则是以区块为单位,依次对每个区块中的任务请求执行并行处理,前一个区块中的任务请求处理完毕后,再执行后一个区块中的任务请求。
而当应用本申请后,由于跨合约的并行处理机制,因此不仅可以针对单个区块中的任务请求执行并行处理,也可针对多个区块中的任务请求执行并行处理。
如此,在原有的区块链平台的工作机制框架下,本申请初始确定的任务请求,是可从区块链平台中带处理的多个区块中获取到的。
此外,为更好的实现本申请任务请求的处理方法的应用价值,本申请还可采用预分析,或者说预执行的处理机制,当下个区块中的任务请求还未进入处理阶段时,提前进行数据依赖关系以及合约冲突关系的识别,提前进行并行处理的安排,如此当上一个区块执行完毕,该区块中的任务请求进行执行阶段时,可直接按照预先已经按照的并行处理方案,进行并行处理,进一步提高并行处理效率,达到顺畅的流水线操作的特点。
对应的,对于任务请求之间的数据依赖关系以及合约冲突关系,可包括:
对多个第一任务请求进行预执行处理;
在预执行处理过程中,识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系。
可以理解,该预分析,是基于任务请求之间存在以区块、时间段等初始划分方式得到的任务请求集合为单位进行的,当在执行第一个任务请求集合时,可提前对后一个执行顺序的任务请求集合进行并行处理的预分析。
当然,对应于本申请,区块链平台也可避免原有的区块的设置,直接将一定时间内的零散的任务请求通过本申请任务请求的处理方法,进行划分以及并行处理。
以上是本申请任务请求的处理方法的说明,为便于更好的实施本申请提供的任务请求的处理方法,本申请还提供了任务请求的处理装置。
参阅图8,图8为本申请任务请求的处理装置的一种结构示意图,在本申请中,任务请求的处理装置800具体可包括如下结构:
获取单元801,用于获取区块链平台中待处理的多个第一任务请求,第一任务请求用于请求区块链平台处理目标任务;
识别单元802,用于识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系;
划分单元803,用于根据数据依赖关系以及不同智能合约,对多个第一任务请求进行划分,得到多个任务请求集合,其中,任务请求集合中包括配置了执行顺序的多个第二任务请求;
指示单元804,用于指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求。
结合本申请第二方面,在本申请第二方面第一种可能的实现方式中,识别单元802,具体用于:
识别多个第一任务请求中分别所需调用的第一智能合约以及第二智能合约;
以第一智能合约的合约地址以及需要调用第一智能合约的任务请求的用户地址两者为第一判断单位,以及以第二智能合约的合约地址以及需要调用第二智能合约的任务请求的用户地址两者为第二判断单位,判断第一判断单位与第二判断单位两者之间是否存在地址上的相关性;
若是,则确定第一合约冲突关系,其中,第一合约冲突关系用于指示第一智能合约与第二智能合约之间存在冲突。
结合本申请第二方面,在本申请第二方面第二种可能的实现方式中,识别单元802,具体用于:
识别多个第一任务请求中分别调用的相同的第三智能合约;
分析调用第三智能合约执行多个第三任务请求时读写的数据结构是否存在交集;
若是,则确定第二合约冲突关系,其中,第二合约冲突关系用于指示第三智能合约在执行多个第三任务请求时存在冲突。
结合本申请第二方面,在本申请第二方面第三种可能的实现方式中,识别单元802,具体用于:
识别多个第一任务请求中分别调用的相同的第三智能合约;
分析多个第三任务请求在第三智能合约中分别所需调用的不同合约内容;
判断不同合约内容是否配置有并行标识,其中,并行标识用于标识不同合约内容之间已预先确定为未存在冲突;
若是,则确定第三合约冲突关系,其中,第三合约冲突关系用于指示多个第三任务请求在调用第三智能合约时未存在冲突。
结合本申请第二方面或者第二方面任一种可能的实现方式,在本申请第二方面第四种可能的实现方式中,识别单元802,具体用于:
根据多个第一任务请求对应的应用场景,从数据依赖关系确定策略集合中确定多个第一任务请求适配的目标数据依赖关系确定策略,其中,数据依赖关系确定策略集中包含不同应用场景适配的不同数据依赖关系确定策略;
根据目标数据依赖关系确定策略,识别多个第一任务请求之间存在的数据依赖关系。
结合本申请第二方面第四种可能的实现方式,在本申请第二方面第五种可能的实现方式中,数据依赖关系确定策略集合中包括转账应用场景适配的数据依赖关系确定策略,转账应用场景适配的数据依赖关系确定策略包括:判断转账处理是否涉及相同转入账号或者相同转出账号,若是,则确定数据依赖关系。
结合本申请第二方面或者第二方面任一种可能的实现方式,在本申请第二方面第六种可能的实现方式中,装置由区块链平台中的区块链节点设备的第一进程执行,多个任务请求集合中的任务请求的并行执行由区块链平台中的区块链节点设备的第二进程执行,多个任务请求集合中的任务请求的执行结果的存储由区块链平台中的区块链节点设备的第三进程执行。
结合本申请第二方面或者第二方面任一种可能的实现方式,在本申请第二方面第七种可能的实现方式中,获取单元801,具体用于:
从区块链平台中待处理的多个区块中获取多个第一任务请求。
结合本申请第二方面或者第二方面任一种可能的实现方式,在本申请第二方面第把种可能的实现方式中,识别单元802,具体用于:
对多个第一任务请求进行预执行处理;
在预执行处理过程中,识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系。
本申请还提供了一种任务请求的处理***,***包括多个区块链节点设备,区块链节点设备包括处理器和存储器,存储器中存储有计算机程序,多个处理器调用存储器中的计算机程序时执行如执行本申请第一方面或者本申请第一方面任一种可能的实现方式提供的方法。
参阅图9,图9示出了本申请区块链节点设备的一种结构示意图,具体的,本申请区块链节点设备包括处理器901、存储器902以及输入输出设备903,处理器901用于执行存储器902中存储的计算机程序时实现如图2至图6对应任意实施例中任务请求的处理方法的各步骤;或者,处理器901用于执行存储器902中存储的计算机程序时实现如图8对应实施例中各单元的功能,存储器902用于存储处理器901执行上述图2至图6对应任意实施例中任务请求的处理方法所需的计算机程序。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器902中,并由处理器901执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。
区块链节点设备可包括,但不仅限于处理器901、存储器902、输入输出设备903。本领域技术人员可以理解,示意仅仅是区块链节点设备的示例,并不构成对区块链节点设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如区块链节点设备还可以包括网络接入设备、总线等,处理器901、存储器902、输入输出设备903以及网络接入设备等通过总线相连。
处理器901可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是区块链节点设备的控制中心,利用各种接口和线路连接整个设备的各个部分。
存储器902可用于存储计算机程序和/或模块,处理器901通过运行或执行存储在存储器902内的计算机程序和/或模块,以及调用存储在存储器902内的数据,实现计算机装置的各种功能。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器901用于执行存储器902中存储的计算机程序时,具体可实现以下功能:
获取区块链平台中待处理的多个第一任务请求,第一任务请求用于请求区块链平台处理目标任务;
识别多个第一任务请求之间存在的数据依赖关系以及识别多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系;
根据数据依赖关系以及不同智能合约,对多个第一任务请求进行划分,得到多个任务请求集合,其中,任务请求集合中包括配置了执行顺序的多个第二任务请求;
指示区块链平台中的区块链节点设备并行执行多个任务请求集合中的任务请求。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的任务请求的处理装置、设备及其相应单元的具体工作过程,可以参考如图2至图6对应任意实施例中任务请求的处理方法的说明,具体在此不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请如图2至图6对应任意实施例中任务请求的处理方法中的步骤,具体操作可参考如图2至图6对应任意实施例中任务请求的处理方法的说明,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(Read Only Memory,ROM)、随机存取记忆体(Random Access Memory,RAM)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请如图2至图6对应任意实施例中任务请求的处理方法中的步骤,因此,可以实现本申请如图2至图6对应任意实施例中任务请求的处理方法所能实现的有益效果,详见前面的说明,在此不再赘述。
以上对本申请提供的任务请求的方法、装置、***以及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种任务请求的处理方法,其特征在于,所述方法包括:
获取区块链平台中待处理的多个第一任务请求,所述第一任务请求用于请求所述区块链平台处理目标任务;
识别所述多个第一任务请求之间存在的数据依赖关系以及识别所述多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系;
根据所述数据依赖关系以及所述不同智能合约,对所述多个第一任务请求进行划分,得到多个任务请求集合,其中,所述任务请求集合中包括配置了执行顺序的多个第二任务请求;
指示所述区块链平台中的区块链节点设备并行执行所述多个任务请求集合中的任务请求;
其中,所述识别所述多个第一任务请求之间存在的数据依赖关系,包括:根据所述多个第一任务请求对应的应用场景,从数据依赖关系确定策略集合中确定所述多个第一任务请求适配的目标数据依赖关系确定策略,其中,所述数据依赖关系确定策略集中包含不同应用场景适配的不同数据依赖关系确定策略;根据所述目标数据依赖关系确定策略,识别所述多个第一任务请求之间存在的所述数据依赖关系;
其中,所述根据所述数据依赖关系以及所述不同智能合约,对所述多个第一任务请求进行划分,得到多个任务请求集合包括:当确定了合约冲突关系以及数据依赖关系后,将存在合约冲突或者数据依赖的任务请求放置在不同的任务请求集合中,将未存在合约冲突或者存在数据依赖的任务请求放置在同一任务请求集合中,完成任务请求的划分,得到不同的任务请求集合,这些任务请求集合之间,则可通过并行处理的方式来完成任务的处理;
其中,所述方法由所述区块链平台中的区块链节点设备的第一进程执行,所述多个任务请求集合中的任务请求的并行执行由所述区块链平台中的区块链节点设备的第二进程行,所述多个任务请求集合中的任务请求的执行结果的存储由所述区块链平台中的区块链节点设备的第三进程执行。
2.根据权利要求1所述的方法,其特征在于,所述识别所述多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系,包括:
识别所述多个第一任务请求中分别所需调用的第一智能合约以及第二智能合约;
以所述第一智能合约的合约地址以及需要调用所述第一智能合约的任务请求的用户地址两者为第一判断单位,以及以所述第二智能合约的合约地址以及需要调用所述第二智能合约的任务请求的用户地址两者为第二判断单位,判断所述第一判断单位与所述第二判断单位两者之间是否存在地址上的相关性;
若是,则确定第一合约冲突关系,其中,所述第一合约冲突关系用于指示所述第一智能合约与所述第二智能合约之间存在冲突。
3.根据权利要求1所述的方法,其特征在于,所述识别所述多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系,包括:
识别所述多个第一任务请求中分别调用的相同的第三智能合约;
分析调用所述第三智能合约执行多个第三任务请求时读写的数据结构是否存在交集;
若是,则确定第二合约冲突关系,其中,所述第二合约冲突关系用于指示所述第三智能合约在执行所述多个第三任务请求时存在冲突。
4.根据权利要求1所述的方法,其特征在于,所述识别所述多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系,包括:
识别所述多个第一任务请求中分别调用的相同的第三智能合约;
分析多个第三任务请求在所述第三智能合约中分别所需调用的不同合约内容;
判断所述不同合约内容是否配置有并行标识,其中,所述并行标识用于标识所述不同合约内容之间已预先确定为未存在冲突;
若是,则确定第三合约冲突关系,其中,所述第三合约冲突关系用于指示所述多个第三任务请求在调用所述第三智能合约时未存在冲突。
5.根据权利要求1所述的方法,其特征在于,所述数据依赖关系确定策略集合中包括转账应用场景适配的数据依赖关系确定策略,所述转账应用场景适配的数据依赖关系确定策略包括:判断转账处理是否涉及相同转入账号或者相同转出账号,若是,则确定所述数据依赖关系。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述识别所述多个第一任务请求之间存在的数据依赖关系以及识别所述多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系,包括:
对所述多个第一任务请求进行预执行处理;
在预执行处理过程中,识别所述多个第一任务请求之间存在的所述数据依赖关系以及识别所述多个第一任务请求分别所需调用的智能合约之间存在的所述合约冲突关系。
7.一种任务请求的处理装置,其特征在于,所述装置包括:
获取单元,用于获取区块链平台中待处理的多个第一任务请求,所述第一任务请求用于请求所述区块链平台处理目标任务;
识别单元,用于识别所述多个第一任务请求之间存在的数据依赖关系以及识别所述多个第一任务请求分别所需调用的智能合约之间存在的合约冲突关系;
划分单元,用于根据所述数据依赖关系以及所述不同智能合约,对所述多个第一任务请求进行划分,得到多个任务请求集合,其中,所述任务请求集合中包括配置了执行顺序的多个第二任务请求;
指示单元,用于指示所述区块链平台中的区块链节点设备并行执行所述多个任务请求集合中的任务请求;
其中,所述识别单元识别所述多个第一任务请求之间存在的数据依赖关系时,具体用于根据所述多个第一任务请求对应的应用场景,从数据依赖关系确定策略集合中确定所述多个第一任务请求适配的目标数据依赖关系确定策略,其中,所述数据依赖关系确定策略集中包含不同应用场景适配的不同数据依赖关系确定策略;根据所述目标数据依赖关系确定策略,识别所述多个第一任务请求之间存在的所述数据依赖关系;
其中,所述划分单元具体用于根据所述数据依赖关系以及所述不同智能合约,对所述多个第一任务请求进行划分,得到多个任务请求集合包括:当确定了合约冲突关系以及数据依赖关系后,将存在合约冲突或者数据依赖的任务请求放置在不同的任务请求集合中,将未存在合约冲突或者存在数据依赖的任务请求放置在同一任务请求集合中,完成任务请求的划分,得到不同的任务请求集合,这些任务请求集合之间,则可通过并行处理的方式来完成任务的处理;
其中,所述装置由所述区块链平台中的区块链节点设备的第一进程执行,所述多个任务请求集合中的任务请求的并行执行由所述区块链平台中的区块链节点设备的第二进程行,所述多个任务请求集合中的任务请求的执行结果的存储由所述区块链平台中的区块链节点设备的第三进程执行。
8.一种任务请求的处理***,其特征在于,所述***包括多个区块链节点设备,所述区块链节点设备包括处理器和存储器,所述存储器中存储有计算机程序,多个所述处理器调用所述存储器中的计算机程序时执行如权利要求1至6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011641801.8A CN112764897B (zh) | 2020-12-31 | 2020-12-31 | 任务请求的处理方法、装置、***及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011641801.8A CN112764897B (zh) | 2020-12-31 | 2020-12-31 | 任务请求的处理方法、装置、***及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764897A CN112764897A (zh) | 2021-05-07 |
CN112764897B true CN112764897B (zh) | 2024-03-22 |
Family
ID=75698549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011641801.8A Active CN112764897B (zh) | 2020-12-31 | 2020-12-31 | 任务请求的处理方法、装置、***及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764897B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113867903B (zh) * | 2021-12-06 | 2022-04-01 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的并行冲突域确定方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019072305A2 (en) * | 2018-12-28 | 2019-04-18 | Alibaba Group Holding Limited | PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS |
CN109951547A (zh) * | 2019-03-15 | 2019-06-28 | 百度在线网络技术(北京)有限公司 | 事务请求并行处理方法、装置、设备和介质 |
CN110321219A (zh) * | 2019-05-06 | 2019-10-11 | 百度在线网络技术(北京)有限公司 | 一种事务请求的并行执行方法、装置、设备和介质 |
WO2019203735A1 (en) * | 2018-04-19 | 2019-10-24 | Vechain Foundation Limited | Transaction processing |
CN110806923A (zh) * | 2019-10-29 | 2020-02-18 | 百度在线网络技术(北京)有限公司 | 一种区块链任务的并行处理方法、装置、电子设备和介质 |
WO2020182134A1 (zh) * | 2019-03-11 | 2020-09-17 | 京东方科技集团股份有限公司 | 区块链共识任务协调方法、区块链共识任务协调装置、区块链共识任务处理方法、区块链节点装置、区块链***和存储介质 |
CN111683043A (zh) * | 2020-04-26 | 2020-09-18 | 华东师范大学 | 面向联盟链的基于可信执行环境的智能合约并发执行方法 |
CN112150163A (zh) * | 2020-11-26 | 2020-12-29 | 北京微芯区块链与边缘计算研究院 | 区块链的合约交易并行执行方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190087793A1 (en) * | 2017-08-31 | 2019-03-21 | Brown University | Adding concurrency to smart contracts |
US11070360B2 (en) * | 2018-08-13 | 2021-07-20 | International Business Machines Corporation | Parallel transaction validation and block generation in a blockchain |
US11138600B2 (en) * | 2019-02-05 | 2021-10-05 | Capital One Services, Llc | Smart contract regulation |
-
2020
- 2020-12-31 CN CN202011641801.8A patent/CN112764897B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019203735A1 (en) * | 2018-04-19 | 2019-10-24 | Vechain Foundation Limited | Transaction processing |
WO2019072305A2 (en) * | 2018-12-28 | 2019-04-18 | Alibaba Group Holding Limited | PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS |
WO2020182134A1 (zh) * | 2019-03-11 | 2020-09-17 | 京东方科技集团股份有限公司 | 区块链共识任务协调方法、区块链共识任务协调装置、区块链共识任务处理方法、区块链节点装置、区块链***和存储介质 |
CN109951547A (zh) * | 2019-03-15 | 2019-06-28 | 百度在线网络技术(北京)有限公司 | 事务请求并行处理方法、装置、设备和介质 |
CN110321219A (zh) * | 2019-05-06 | 2019-10-11 | 百度在线网络技术(北京)有限公司 | 一种事务请求的并行执行方法、装置、设备和介质 |
CN110806923A (zh) * | 2019-10-29 | 2020-02-18 | 百度在线网络技术(北京)有限公司 | 一种区块链任务的并行处理方法、装置、电子设备和介质 |
CN111683043A (zh) * | 2020-04-26 | 2020-09-18 | 华东师范大学 | 面向联盟链的基于可信执行环境的智能合约并发执行方法 |
CN112150163A (zh) * | 2020-11-26 | 2020-12-29 | 北京微芯区块链与边缘计算研究院 | 区块链的合约交易并行执行方法及装置 |
Non-Patent Citations (2)
Title |
---|
基于区块链的制造服务可信交易方法;王强;刘长春;周保茹;;计算机集成制造***(第12期);全文 * |
基于区块链的智能合约技术与应用综述;贺海武;延安;陈泽华;;计算机研究与发展(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112764897A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
CN110427386B (zh) | 数据处理方法、装置及计算机存储介质 | |
WO2022134797A1 (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN112015595B (zh) | 主从数据库的切换方法、计算设备及存储介质 | |
CN111309805B (zh) | 数据库的数据读写方法及装置 | |
CN116028455A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN111694639A (zh) | 进程容器地址的更新方法、装置和电子设备 | |
CN112764897B (zh) | 任务请求的处理方法、装置、***及计算机可读存储介质 | |
CN112328325A (zh) | 模型文件的执行方法、装置、终端设备及存储介质 | |
CN112596669A (zh) | 一种基于分布式存储的数据处理方法及装置 | |
CN111008220A (zh) | 数据源的动态识别方法及装置、存储介质和电子装置 | |
CN111046004A (zh) | 一种数据文件存储方法、装置、设备及存储介质 | |
CN110609707A (zh) | 在线数据处理***生成方法、装置及设备 | |
CN110474954B (zh) | 基于区块链的文件分享方法、装置、计算机设备及可读存储介质 | |
CN109783717B (zh) | 查询任务处理方法、***、服务器集群及装置、计算机可读存储介质 | |
CN113282347A (zh) | 插件运行方法、装置、设备及存储介质 | |
CN112100208A (zh) | 一种操作请求的转发方法和装置 | |
CN113032820A (zh) | 文件存储方法、访问方法、装置、设备及存储介质 | |
CN112104735A (zh) | 一种文件传输方法、***、装置及电子设备 | |
CN110543351A (zh) | 数据处理方法以及计算机设备 | |
CN114518844B (zh) | 一种数据处理方法 | |
CN114296640B (zh) | 用于加速计算的数据驱动方法、装置、设备和存储介质 | |
CN111090629B (zh) | 一种数据文件存储方法、装置、设备及存储介质 | |
CN109377177B (zh) | 流程处理方法、装置、设备和计算机可读存储介质 | |
US11144236B2 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium for storing program |
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 |