基于区块链的数据处理方法、装置、设备及可读存储介质转让专利
申请号 : CN202110074890.0
文献号 : CN112395300B
文献日 : 2021-05-25
发明人 : 刘区城 , 李茂材 , 王宗友 , 孔利 , 蓝虎 , 刘攀 , 周开班 , 朱耿良 , 时一防 , 黄焕坤
申请人 : 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
1.一种基于区块链的数据处理方法,其特征在于,包括:将至少两个区块中的交易数据,按照区块高度的顺序以及交易数据序号的顺序添加到执行队列中,从所述执行队列中按序获取至少两个交易数据;所述至少两个交易数据均携带合约信息;所述至少两个交易数据来自不同的区块;
对所述至少两个交易数据并行执行所携带的合约信息对应的合约业务,获取每个合约业务被执行时所生成的并行交易读缓存以及并行交易写缓存;所述至少两个交易数据包括目标交易数据;
在所述至少两个区块分别对应的块缓存中确定已合并交易写缓存,在所述已合并交易写缓存中,获取所述目标交易数据对应的更新交易读缓存;所述已合并交易写缓存所对应的交易数据,在所述执行队列中的位置或添加时间处于所述目标交易数据之前;
对所述目标交易数据对应的并行交易读缓存以及所述更新交易读缓存进行读数据冲突校验,得到校验结果;
根据所述校验结果以及所述目标交易数据对应的并行交易写缓存,确定所述目标交易数据的待合并交易写缓存;
将所述目标交易数据的待合并交易写缓存合并至所述目标交易数据所属的块缓存中,继续对所述目标交易数据的下一个交易数据的待合并交易写缓存进行合并处理。
2.根据权利要求1所述的方法,其特征在于,所述从所述执行队列中按序获取至少两个交易数据,包括:
确定并行执行线程池中空闲线程对应的空闲数量;
若所述空闲数量等于或大于并行执行线程阈值,则通过所述空闲线程从所述执行队列中按序获取所述至少两个交易数据;所述至少两个交易数据的交易数量等于所述空闲数量。
3.根据权利要求1所述的方法,其特征在于,至少两个合约业务包括至少两个智能合约以及至少两个交易执行业务;所述对所述至少两个交易数据并行执行所携带的合约信息对应的合约业务,获取每个合约业务被执行时所生成的并行交易读缓存以及并行交易写缓存,包括:
根据至少两个合约信息中分别包括的合约标识,确定分别用于执行所述至少两个交易数据的智能合约;
根据所述至少两个合约信息中分别包括的业务标识,确定所述至少两个智能合约所分别调用的用于执行所述至少两个交易数据的交易执行业务;
并行执行所述至少两个交易执行业务,获取每个交易执行业务被执行时所生成的并行交易读缓存以及并行交易写缓存。
4.根据权利要求3所述的方法,其特征在于,所述并行执行所述至少两个交易执行业务,获取每个交易执行业务被执行时所生成的并行交易读缓存以及并行交易写缓存,包括:根据所述至少两个交易执行业务,分别为所述至少两个交易数据创建初始交易读缓存以及初始交易写缓存;
并行执行所述至少两个交易执行业务,获取每个交易执行业务被执行时所生成的并行交易读数据以及并行交易写数据;
将每个并行交易读数据存储至对应的初始交易读缓存,得到所述至少两个交易数据分别对应的并行交易读缓存;
将每个并行交易写数据存储至对应的初始交易写缓存,得到所述至少两个交易数据分别对应的并行交易写缓存。
5.根据权利要求1所述的方法,其特征在于,所述在所述已合并交易写缓存中,获取所述目标交易数据对应的更新交易读缓存,包括:按照区块高度从高至低的顺序以及交易数据序号从大至小的顺序,在所述已合并交易写缓存中依次遍历,直至获取到所述目标交易数据所需读取的已合并交易写缓存;
根据所述目标交易数据所需读取的已合并交易写缓存生成所述更新交易读缓存。
6.根据权利要求1所述的方法,其特征在于,所述对所述目标交易数据对应的并行交易读缓存以及所述更新交易读缓存进行读数据冲突校验,得到校验结果,包括:将所述目标交易数据对应的并行交易读缓存中的并行交易读数据确定为目标并行交易读数据;
确定所述目标并行交易读数据的目标对象,获取所述更新交易读缓存中与所述目标对象相关联的更新交易读数据;
对所述目标并行交易读数据以及所述更新交易读数据进行读数据冲突校验,得到所述校验结果。
7.根据权利要求6所述的方法,其特征在于,所述校验结果包括第一校验结果以及第二校验结果;
所述对所述目标并行交易读数据以及所述更新交易读数据进行读数据冲突校验,得到所述校验结果,包括:
将所述目标并行交易读数据以及所述更新交易读数据进行对比;
若所述目标并行交易读数据与所述更新交易读数据相同,则确定所述校验结果为所述第一校验结果;所述第一校验结果用于指示所述目标并行交易读数据与所述更新交易读数据之间不存在读数据冲突;
若所述目标并行交易读数据与所述更新交易读数据不相同,则确定所述校验结果为所述第二校验结果;所述第二校验结果用于指示所述目标并行交易读数据与所述更新交易读数据之间存在读数据冲突。
8.根据权利要求7所述的方法,其特征在于,所述根据所述校验结果以及所述目标交易数据对应的并行交易写缓存,确定所述目标交易数据的待合并交易写缓存,包括:若所述校验结果为所述第一校验结果,则确定所述目标交易数据对应的并行交易写缓存为所述目标交易数据的待合并交易写缓存;
若所述校验结果为所述第二校验结果,则根据所述更新交易读数据以及所述目标交易数据所携带的合约信息,生成所述目标交易数据的待合并交易写缓存。
9.根据权利要求8所述的方法,其特征在于,所述根据所述更新交易读数据以及所述目标交易数据所携带的合约信息,生成所述目标交易数据的待合并交易写缓存,包括:根据所述目标交易数据所携带的合约信息中的合约标识,确定用于执行所述目标交易数据的目标智能合约;
根据所述目标交易数据所携带的合约信息中的业务标识,确定所述目标智能合约所调用的用于执行所述目标交易数据的目标交易执行业务;
根据所述更新交易读数据以及所述目标交易数据,执行所述目标交易执行业务,获取所述目标交易数据对应的目标交易执行结果;
根据所述目标交易执行结果更新所述目标交易数据对应的并行交易写缓存,得到所述目标交易数据的待合并交易写缓存。
10.根据权利要求1所述的方法,其特征在于,所述在所述至少两个区块分别对应的块缓存中确定已合并交易写缓存,包括:获取所述目标交易数据所属的目标区块,确定所述目标区块对应的目标区块高度;
根据交易数据序号的顺序,在所述目标区块中确定已合并交易数据;所述已合并交易数据对应的交易数据序号小于所述目标交易数据对应的交易数据序号;
根据所述目标区块高度从所述至少两个区块中确定已合并区块;所述已合并区块对应的区块高度小于所述目标区块高度;
将所述已合并区块对应的块缓存中的交易写缓存,以及所述已合并交易数据对应的交易写缓存确定为所述已合并交易写缓存。
11.根据权利要求10所述的方法,其特征在于,所述至少两个区块属于分叉区块链,所述分叉区块链包括至少两个分支链分别对应的哈希映射表;每个哈希映射表均包括对应的分支链上的区块高度与区块哈希之间的关联关系;
所述根据所述目标区块高度从所述至少两个区块中确定已合并区块,包括:获取所述目标区块的目标区块哈希,将至少两个哈希映射表中包含所述目标区块哈希的哈希映射表,确定为目标哈希映射表;
在所述目标哈希映射表中,将小于所述目标区块高度的区块高度所关联的区块哈希,确定为已合并区块哈希;
在所述目标哈希映射表对应的分支链上,将所述已合并区块哈希对应的区块确定为所述已合并区块。
12.一种基于区块链的数据处理装置,其特征在于,包括:第一获取模块,用于将至少两个区块中的交易数据,按照区块高度的顺序以及交易数据序号的顺序添加到执行队列中,从所述执行队列中按序获取至少两个交易数据;所述至少两个交易数据均携带合约信息;所述至少两个交易数据来自不同的区块;
第二获取模块,用于对所述至少两个交易数据并行执行所携带的合约信息对应的合约业务,获取每个合约业务被执行时所生成的并行交易读缓存以及并行交易写缓存;所述至少两个交易数据包括目标交易数据;
第三获取模块,用于在所述至少两个区块分别对应的块缓存中确定已合并交易写缓存,在所述已合并交易写缓存中,获取所述目标交易数据对应的更新交易读缓存;所述已合并交易写缓存所对应的交易数据,在所述执行队列中的位置或添加时间处于所述目标交易数据之前;
第一合并模块,用于对所述目标交易数据对应的并行交易读缓存以及所述更新交易读缓存进行读数据冲突校验,得到校验结果;
所述第一合并模块,还用于根据所述校验结果以及所述目标交易数据对应的并行交易写缓存,确定所述目标交易数据的待合并交易写缓存;
第二合并模块,用于将所述目标交易数据的待合并交易写缓存合并至所述目标交易数据所属的块缓存中,继续对所述目标交易数据的下一个交易数据的待合并交易写缓存进行合并处理。
13.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1至11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1‑11任一项所述的方法。
说明书 :
基于区块链的数据处理方法、装置、设备及可读存储介质
技术领域
背景技术
交易数据1、交易数据2、…、交易数据n,则在处理区块m的交易数据时,首先执行交易数据1
对应的合约业务,得到交易数据1的交易执行结果1,再根据交易执行结果1以及交易数据2,
执行交易数据2对应的合约业务,得到交易数据2的交易执行结果2,继续对后面的交易数据
执行对应的合约业务。处理完区块m的交易数据后,再对区块m+1的交易数据1进行处理。
处理效率比较低下。
发明内容
约信息;
交易数据;
执行队列中的位置或添加时间处于目标交易数据之前;
个交易数据均携带合约信息;
个交易数据包括目标交易数据;
所对应的交易数据,在执行队列中的位置或添加时间处于目标交易数据之前;
理。
写缓存;
间不存在读数据冲突;
之间存在读数据冲突。
关系;
计算机设备执行本申请实施例中的方法。
备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该
计算机设备执行本申请实施例中的方法。
的顺序以及交易数据序号的顺序排列的,且可以来源于至少两个区块;获取每个合约业务
被执行时所生成的并行交易读缓存以及并行交易写缓存,由于目标交易数据对应的并行交
易读缓存可能是过旧的交易读缓存,所以先在至少两个区块分别对应的块缓存中确定已合
并交易写缓存,然后在已合并交易写缓存中,获取目标交易数据对应的更新交易读缓存;其
中,已合并交易写缓存所对应的交易数据,在执行队列中的位置或添加时间处于目标交易
数据之前;根据更新交易读缓存,可以确定目标交易数据对应的并行交易读缓存是否是过
旧的交易读缓存,进而可以根据更新交易读缓存以及目标交易数据对应的并行交易写缓存
确定目标交易数据的待合并交易写缓存。上述可知,在一方面,本申请通过并行执行多个区
块中的交易数据,可以提高区块链网络处理交易数据的效率,减少执行队列中大量交易数
据的排队;另一方面,并行执行完多个交易数据后,本申请根据每个交易数据对应的已合并
交易写缓存,可以获取其对应的更新交易读缓存,进而可以根据每个交易数据对应的更新
交易读缓存,确定其对应的并行交易读缓存是否为过旧的交易读缓存,达到校验并行交易
读缓存以及并行交易写缓存的效果,进而可以保证待合并交易写缓存的正确性,从而可以
在提高对交易数据的处理效率的同时,还可以保证块缓存中的数据的正确性。
附图说明
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
具体实施方式
本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式
共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。
前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的
方式进行快速检验。若网络中的节点提议添加一个新的区块,必须经过共识机制对区块达
成共识确认。
易。区块包括区块头(Block Header)以及区块体(Block Body),区块头可以记录当前区块
的元信息,包含当前版本号、前继区块对应的哈希值、时间戳、随机数、默克尔树根(Merkle
Root)的哈希值等数据。区块体可以记录一段时间内所生成的详细数据,包括当前区块经过
验证的、区块创建过程中生成的所有交易记录或是其他信息,可以理解为账本的一种表现
形式。此外,区块体的详细数据可以包括通过默克尔树(Merkle Tree)的哈希过程生成唯一
的Merkle Root记录于区块头。
数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的
哈希值,哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数
据的真实性,以及区块链作为一个整体的完整性。
能合约是指当一个预先编好的条件被触发时,立即执行相应的合同条款,其工作原理类似
于计算机程序的if‑then语句。
络101可以包括区块链节点1011、区块链节点1012、…、区块链节点1013。可以理解的是,上
述区块链网络101可以包括一个或者多个区块链节点,这里将不对区块链节点的数量进行
限制;上述用户终端可以包括一个或者多个用户终端,这里将不对用户终端的数量进行限
制。
之间存在通信连接,例如区块链节点1011与用户终端102之间存在通信连接,区块链节点
1011与用户终端104之间存在通信连接。区块链节点基于接收到的交易数据生成区块,然后
对区块进行上链处理,为了保证各个区块链节点之间的数据互通,每个区块链节点之间可
以存在通信连接,例如区块链节点1011与区块链节点1012之间存在通信连接,区块链节点
1011与区块链节点1013之间存在通信连接等等。
方式,本申请在此不做限制。
响、移动互联网设备(MID,mobile internet device)、POS(Point Of Sales,销售点)机、可
穿戴设备(例如智能手表、智能手环等)等。
但不限于终端或服务器。上述服务器可以是独立的物理服务器,也可以是多个物理服务器
构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存
储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台
等基础云计算服务的云服务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计
算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信
方式进行直接或间接地连接,本申请在此不做限制。
块高度1;将区块高度为m的区块命名为区块m,将区块高度为m叙述成区块高度m,其他区块
高度对应的区块命名亦如此,此处不再一一进行赘述。
节点。计算机设备20a获取至少两个区块20b,至少两个区块20b可以包括3个区块,分别为区
块m,区块m+1以及区块m+2,其中,m为大于1的正整数。可以理解的是,上述至少两个区块20b
可以是计算机设备20a作为出块节点所生成的,也可以是区块链网络中的其他区块链节点
生成的,此处不限定至少两个区块20b的生成出处。
T( m+2,n)。其中,交易数据T(a,b)下标中的a表示交易数据属于区块a,下标中的b表示交易数据
序号,a以及b均为正整数,a小于或等于至少两个区块20b的区块总数量,b小于或等于区块a
中交易数据的总数量。
约信息F(m,n);区块m+1可以包括交易数据T(m+1,1)对应的合约信息F(m+1,1)、…、交易数据T(m+1,n)
对应的合约信息F(m+1,n);区块m+2可以包括交易数据T(m+2,1)对应的合约信息F(m+2,1)、…、交易
数据T(m+2,n)对应的合约信息F(m+2,n)。其中,合约信息F(a,b)下标中的a表示合约信息属于区块
a,下标中的b表示合约信息序号,a以及b均为正整数,且a小于或等于至少两个区块20b的区
块总数量,b小于或等于区块a中合约信息的总数量。其中,图2中的符号“&”可以表示对应关
系。
T(m+2,1)、…、交易数据T(m+2,n)),按照区块高度的顺序以及交易数据序号的顺序添加到执行队
列20c中,如图2所示,在执行队列20c中,区块m所包含的交易数据排在区块m+1所包含的交
易数据,以及区块m+2所包含的交易数据之前,区块m中的交易数据T(m,1)排在交易数据T(m,n)
之前。其中,执行队列20c也可以称作交易队列(Transaction/TxQueue),后续,当执行线程
池(等同于图2所示例的线程池)有空闲线程时,计算机设备20a按序将交易(即交易数据)放
入空闲线程中并行执行。其中,执行线程池也可以称作交易线程池或交易处理池(Tx
Process Pool),执行线程池可以按计算机设备20a所配置文件中指定的池大小,预先生成
对应数量的交易处理线程,交易处理线程(包括空闲线程)负责并行执行交易内的合约业
务。
T(m+1,1)、…、交易数据T(m+1,n),交易数据T(m+2,1)。根据每个交易数据所对应的合约信息,计算
机设备20a在执行线程池中对交易数据T(m,1)、…、交易数据T(m,n),交易数据T(m+1,1)、…、交易
数据T(m+1,n),交易数据T(m+2,1)并行执行对应的合约业务,获取每个合约业务被执行时所生成
的并行交易缓存。
数据集,如图2中所示例的针对交易数据T(m,1)的并行交易读缓存R(m,1),…,针对交易数据
T(m,n)的并行交易读缓存R(m,n),针对交易数据T(m+1,1)的并行交易读缓存R(m+1,1),…,针对交易
数据T(m+1,n)的并行交易读缓存R(m+1,n),针对交易数据T(m+2,1)的并行交易读缓存R(m+2,1)。
缓存W(m,n),针对交易数据T(m+1,1)的并行交易写缓存W(m+1,1),…,针对交易数据T(m+1,n)的并行
交易写缓存W(m+1,n),针对交易数据T(m+2,1)的并行交易写缓存W(m+2,1)。
合约业务、…、合约信息F(m+1,n)对应的合约业务,合约信息F(m+2,1)对应的合约业务,是假设性
地认为上述多个合约业务之间,以及多个合约业务与已合并区块中的合约业务之间是没有
交集、互不影响的,即每个合约业务读取的并行交易读缓存都是不同的数据。在这种情况
下,至少两个并行交易写缓存是至少两个交易数据分别对应的待合并交易写缓存。
区块中的交易(即交易数据)为未确认交易(Unconfirmed Transactions),即交易数据处于
未确认的状态,可以理解为交易数据在全网广播后,区块链节点会不断从交易池中选择交
易数据进行记录(一般根据交易手续费进行排序),并将交易数据记录在区块上,而未确认
交易是指该笔交易尚未被记录在区块链上。
例如,交易数据T(m,1)对应的并行交易读缓存R(m,1),与交易数据T(m+1,1)对应的并行交易读缓
存R(m+1,1)相同,即并行交易读缓存R(m,1)与并行交易读缓存R(m+1,1)存在交集,或者理解成并
行交易读缓存R(m+1,1)是过旧的数据集,故并行执行交易数据T(m,1)对应的合约业务、…、交易
数据T(m+1,1)对应的合约业务,得到的并行交易写缓存W(m+1,1)将不是实时的结果数据。
易数据T(m+1,n),交易数据T(m+2,1)))对应的并行交易写缓存合并至对应的块缓存前,计算机设
备20a需要验证并行交易读缓存是否是交易数据的合法交易读数据,即并行交易读缓存(如
图2中所示例的并行交易读缓存R(m,1)、…、并行交易读缓存R(m,n),并行交易读缓存
R(m+1,1)、…、并行交易读缓存R(m+1,n),并行交易读缓存R(m+2,1))是否是过旧的交易读数据。
是过旧的读取数据。此时,如图2所示,区块m对应的块缓存Km中的并行交易写缓存W(m,1)、…、
并行交易写缓存W(m,n),以及区块m+1对应的块缓存Km+1中的并行交易写缓存W(m+1,1)、…、并行
交易写缓存W(m+1,n),均为交易数据T(m+2,1)的已合并交易写缓存20d。
参见下文图3所对应的实施例中步骤S103的描述,此处不展开。
与更新交易读缓存G(m+2,1)之间不存在读数据冲突,则确定并行交易写缓存W(m+2,1)为交易数
据T(m+2,1)的待合并交易写缓存D(m+2,1);若校验结果指示并行交易读缓存R(m+2,1)与更新交易
读缓存G(m+2,1)之间存在读数据冲突,则根据更新交易读缓存G(m+2,1)以及交易数据T(m+2,1),重
新执行交易数据T(m+2,1)的交易执行业务,得到交易数据T(m+2,1)的交易执行结果,根据该交易
执行结果生成待合并交易写缓存D(m+2,1)。
据T(m+2,2)))的待合并交易写缓存进行合并处理,其合并处理的具体过程,与交易数据T(m+2,1)
的待合并交易写缓存D(m+2,1)的合并处理过程一致。
处理过程可以包括如下步骤。
据均携带合约信息。
个交易数据的交易数量等于空闲数量。
不再进行赘述。
确认及验证,使得该笔交易变得不可逆并防止篡改。
录该交易1的区块将进行第一次确认,并在该区块之后的每一个区块进行再次确认;当确认
数达到六个及以上时,通常认为这笔交易比较安全并难以篡改,此时可以将交易1确定为确
认交易。
记录以生成区块,但该区块还未上链。本申请所述的至少两个区块以及下文提及的缓存数
据库中的区块均为缓存区块,即还未上链的区块。
中,区块m可以包括交易数据T(m,1)、交易数据T(m,2)以及交易数据T(m,3);区块m+1可以包括交
易数据T(m+1,1)、交易数据T(m+1,2)以及交易数据T(m+1,3);区块m+2可以包括交易数据T(m+2,1)、交
易数据T(m+2,2)以及交易数据T(m+2,3)。故执行队列40b可以包括按照区块高度的顺序以及交易
数据序号的顺序进行排列的上述9个交易数据。
中交易数据的总数量。
携带的合约信息;区块m+2可以包括交易数据T(m+2,1)、交易数据T(m+2,2)以及交易数据T(m+2,3)
分别携带的合约信息,如图4所示例的交易数据T(m+2,1)所携带的合约信息F(m+2,1)。
示该线程处于闲置状态,忙碌线程可以表示该线程处于工作状态。
线程E7、忙碌线程E8以及忙碌线程E9,可知并行执行线程池40a目前拥有7个空闲线程,所以
空闲数量等于7。将空闲数量7与并行执行线程阈值进行比较,其中,并行执行线程阈值可根
据硬件情况进行配置,例如并行执行线程阈值等于并行执行线程池40a中总线程的二分之
一,或三分之二,此处不限定并行执行线程阈值与并行执行线程池40a中总线程的关系,可
以根据实际应用场景进行设定,或是根据其他情况进行设定均可。
数量等同的至少两个交易数据,即交易数据T(m,1)、交易数据T(m,2)、交易数据T(m,3)、交易数据
T(m+1,1)、交易数据T(m+1,2)、交易数据T(m+1,3)以及交易数据T(m+2,1),但此时不执行步骤S102,等
到空闲数量等于或大于8时,再通过新增的空闲线程从执行队列40b中按序获取交易数据
T(m+2,2)等,然后执行步骤S102。
据T(m,2)、交易数据T(m,3)、交易数据T(m+1,1)、交易数据T(m+1,2)、交易数据T(m+1,3)以及交易数据
T(m+2,1),如图4所示,将交易数据T(m,1)添加至空闲线程E1中,将交易数据T(m,2)添加至空闲线
程E2中,将交易数据T(m,3)添加至空闲线程E3中,将交易数据T(m+1,1)添加至空闲线程E4中,将
交易数据T(m+1,2)添加至空闲线程E5中,将交易数据T(m+1,3)添加至空闲线程E6中,以及将交易
数据T(m+2,1)添加至空闲线程E7中。
据包括目标交易数据。
能合约;根据至少两个合约信息中分别包括的业务标识,确定至少两个智能合约所分别调
用的用于执行至少两个交易数据的交易执行业务;并行执行至少两个交易执行业务,获取
每个交易执行业务被执行时所生成的并行交易读缓存以及并行交易写缓存。
易数据创建初始交易读缓存以及初始交易写缓存;并行执行至少两个交易执行业务,获取
每个交易执行业务被执行时所生成的并行交易读数据以及并行交易写数据;将每个并行交
易读数据存储至对应的初始交易读缓存,得到至少两个交易数据分别对应的并行交易读缓
存;将每个并行交易写数据存储至对应的初始交易写缓存,得到至少两个交易数据分别对
应的并行交易写缓存。
图4所示例的合约标识111为转账合约标识,则计算机设备可以根据该标识,确定用于执行
交易数据T(m+2,1)的智能合约为转账合约;进一步地,合约信息F(m+2,1)可以包括业务标识,例
如图4所示例的业务标识1111为转移合约标识,则计算机设备可以根据该标识,确定转账合
约所调用的用于执行交易数据T(m+2,1)的交易执行业务为交易转移业务。
确定用于执行交易数据的智能合约以及智能合约所调用的交易执行业务。
始交易写缓存。由于在未并行执行至少两个交易数据分别对应的合约业务之前,每个交易
数据对应的初始交易读缓存以及初始交易写缓存均为空集,因为还未读取数据以及修改数
据,故图4中没有分别画出初始交易读缓存以及初始交易写缓存,均以初始交易缓存表示初
始交易读缓存以及初始交易写缓存。
T(m+1,1)对应的初始交易缓存N(m+1,1)、交易数据T(m+1,2)对应的初始交易缓存N(m+1,2)、交易数据
T(m+1,3)对应的初始交易缓存N(m+1,3),以及交易数据T(m+2,1)对应的初始交易缓存N(m+2,1)。可以
理解的是,初始交易缓存N(m,1)、初始交易缓存N(m,2)、初始交易缓存N(m,3)、初始交易缓存
N(m+1,1)、初始交易缓存N(m+1,2)、初始交易缓存N(m+1,3)以及初始交易缓存N(m+2,1)均为空集。
易数据T(m,2)对应的交易执行业务,交易数据T(m,3)对应的交易执行业务,交易数据T(m+1,1)对
应的交易执行业务,交易数据T(m+1,2)对应的交易执行业务,交易数据T(m+1,3)对应的交易执行
业务,以及交易数据T(m+2,1)对应的交易执行业务。
r(m,1)、交易数据T(m,2)对应的并行交易读数据r(m,2)、交易数据T(m,3)对应的并行交易读数据
r(m,3)、交易数据T(m+1,1)对应的并行交易读数据r(m+1,1)、交易数据T(m+1,2)对应的并行交易读数
据r(m+1,2)、交易数据T(m+1,3)对应的并行交易读数据r(m+1,3),以及交易数据T(m+2,1)对应的并行
交易读数据r(m+2,1)。
T(m+1,1)对应的并行交易写数据w(m+1,1)、交易数据T(m+1,2)对应的并行交易写数据w(m+1,2)、交易
数据T(m+1,3)对应的并行交易写数据w(m+1,3),以及交易数据T(m+2,1)对应的并行交易写数据
w(m+2,1)。
T(m,1)对应的初始交易缓存N(m,1() 包括初始交易读缓存),得到交易数据T(m,1)对应的并行交
易读缓存R(m,1);计算机设备将并行交易读数据r(m,2)存储至交易数据T(m,2)对应的初始交易
缓存N(m,2() 包括初始交易读缓存),得到交易数据T(m,2)对应的并行交易读缓存R(m,2);将并行
交易读数据r(m,3)存储至交易数据T(m,3)对应的初始交易缓存N(m,3() 包括初始交易读缓存),
得到交易数据T(m,3)对应的并行交易读缓存R(m,3);计算机设备将并行交易读数据r(m+1,1)存储
至交易数据T(m+1,1)对应的初始交易缓存N(m+1,1)(包括初始交易读缓存),得到交易数据
T(m+1,1)对应的并行交易读缓存R(m+1,1);…;计算机设备将并行交易读数据r(m+2,1)存储至交易
数据T(m+2,1)对应的初始交易缓存N(m+2,1() 包括初始交易读缓存),得到交易数据T(m+2,1)对应
的并行交易读缓存R(m+2,1)。
T(m,1)对应的初始交易缓存N(m,1() 包括初始交易写缓存),得到交易数据T(m,1)对应的并行交
易写缓存W(m,1);计算机设备将并行交易写数据w(m,2)存储至交易数据T(m,2)对应的初始交易
缓存N(m,2() 包括初始交易写缓存),得到交易数据T(m,2)对应的并行交易写缓存W(m,2);将并行
交易写数据w(m,3)存储至交易数据T(m,3)对应的初始交易缓存N(m,3() 包括初始交易写缓存),
得到交易数据T(m,3)对应的并行交易写缓存W(m,3);计算机设备将并行交易写数据w(m+1,1)存储
至交易数据T(m+1,1)对应的初始交易缓存N(m+1,1)(包括初始交易写缓存),得到交易数据
T(m+1,1)对应的并行交易写缓存W(m+1,1);…;计算机设备将并行交易写数据w(m+2,1)存储至交易
数据T(m+2,1)对应的初始交易缓存N(m+2,1() 包括初始交易写缓存),得到交易数据T(m+2,1)对应
的并行交易写缓存W(m+2,1)。
对应的块缓存(如图4所示例的块缓存Km+2、块缓存Km+1以及块缓存Km)中,但实际应用时,至
少两个并行执行交易读数据之间可能存在冲突,故无法直接将至少两个并行执行交易写数
据合并至对应的块缓存中,需要按序对至少两个并行执行交易读数据进读数据冲突校验,
然后根据校验结果确定是否可以将并行执行写缓存合并至块缓存中。每个并行执行交易写
缓存的合并时机为,所有前序交易(包括前面的区块中的交易数据以及本区块的前序交易)
均已合并完,具体过程请一并参见下文的步骤S103‑步骤S105。
交易数据,在执行队列中的位置或添加时间处于目标交易数据之前。
易数据序号小于目标交易数据对应的交易数据序号;根据目标区块高度从至少两个区块中
确定已合并区块;已合并区块对应的区块高度小于目标区块高度;将已合并区块对应的块
缓存中的交易写缓存,以及已合并交易数据对应的交易写缓存确定为已合并交易写缓存。
据目标交易数据所需读取的已合并交易写缓存生成更新交易读缓存。
库50d中的其他区块对应的区块高度均大于或者等于区块m对应的区块高度。缓存数据库
50d中的区块均为缓存区块,即还未上链的区块,而区块高度大于区块m对应的区块高度的
区块,均为链上区块,即已上链的区块。
是区块503b,其中,区块503b的区块高度为m+3。区块503b可以包括交易数据T(m+3,1)、目标交
易数据T(m+3,2)以及交易数据T(m+3,3),根据交易数据序号的顺序,计算机设备可以确定目标区
块(即区块503b)中的交易数据T(m+3,1)为已合并交易数据。
小于目标区块高度。计算机设备将已合并区块对应的块缓存中的交易写缓存,以及已合并
交易数据对应的交易写缓存确定为已合并交易写缓存。
合并交易写缓存中依次遍历,已合并交易写缓存可以包括块缓存Km+2中的交易写缓存
W(m+2,1)、交易写缓存W(m+2,2)、交易写缓存W(m+2,3),块缓存Km+1中的交易写缓存W(m+1,1)、交易写
缓存W(m+1,2)、交易写缓存W(m+1,3),块缓存Km中的交易写缓存W(m,1)、交易写缓存W(m,2)、交易写
缓存W(m,3),以及块缓存Km+3中的交易写缓存W(m+3,1)。
缓存W(m+3,1)中不存在目标交易数据T(m+3,2)所需读取的数据,则遍历交易写缓存W(m+2,3);同
理,若交易写缓存W(m+2,3)中存在目标交易数据T(m+3,2)所需读取的数据,则计算机设备可以将
交易写缓存W(m+2,3)确定为更新交易写缓存;若交易写缓存W(m+2,3)中不存在目标交易数据
T(m+3,2)所需读取的数据,则遍历下个交易写缓存,直至获取到目标交易数据T(m+3,2)所需读取
的已合并交易写缓存;根据目标交易数据所需读取的已合并交易写缓存,计算机设备生成
更新交易读缓存,如图6所示,交易写缓存W(m+2,2)为更新交易写缓存G(m+3,2)。
象相关联的更新交易读数据;对目标并行交易读数据以及更新交易读数据进行读数据冲突
校验,得到校验结果;根据校验结果、更新交易读数据以及目标交易数据对应的并行交易写
缓存,确定目标交易数据的待合并交易写缓存。
与更新交易读数据相同,则确定校验结果为第一校验结果;第一校验结果用于指示目标并
行交易读数据与更新交易读数据之间不存在读数据冲突;若目标并行交易读数据与更新交
易读数据不相同,则确定校验结果为第二校验结果;第二校验结果用于指示目标并行交易
读数据与更新交易读数据之间存在读数据冲突。
易写缓存;若校验结果为第二校验结果,则根据更新交易读数据以及目标交易数据所携带
的合约信息,生成目标交易数据的待合并交易写缓存。
据目标交易数据所携带的合约信息中的业务标识,确定目标智能合约所调用的用于执行目
标交易数据的目标交易执行业务;根据更新交易读数据以及目标交易数据,执行目标交易
执行业务,获取目标交易数据对应的目标交易执行结果;根据目标交易执行结果更新目标
交易数据对应的并行交易写缓存,得到目标交易数据的待合并交易写缓存。
易写缓存。例如目标交易数据中的目标对象有多个,那么可以根据多个目标对象分别所属
的已合并交易写缓存,得到更新交易读缓存。
定目标并行交易读数据的目标对象60f,即图6所示例的账号60a。
设备根据目标对象60f在更新交易读缓存G(m+3,2)中,获取更新交易读数据60e,即图6所示例
的交易读数据“账号60a余额为120”。
行交易读数据与更新交易读数据60e之间存在读数据冲突,则确定校验结果为第二校验结
果。如图6所示,计算机设备获取目标交易数据T(m+3,2)对应的合约信息F(m+3,2),根据合约信息
F(m+3,2)中的合约标识111,确定用于执行目标交易数据T(m+3,2)的目标智能合约为转账合约,
根据合约信息F(m+3,2)中的业务标识1111,确定转账合约所调用的用于执行目标交易数据
T(m+3,2)的目标交易执行业务为交易转移业务。
交易执行业务,获取目标交易数据T(m+3,2)对应的目标交易执行结果,如图6所示例的交易执
行结果“账号60a余额为100”。根据目标并行交易读数据(即交易读数据“账号60a余额为
100”)以及目标交易数据T(m+3,2),可知并行交易写缓存W(m+3,2)中的目标并行交易写数据为
“账号60a余额为80”。
易写缓存D(m+3,2),如图6所示。
在读数据冲突,进而计算机设备可以确定目标交易数据T(m+3,2)对应的并行交易写缓存
W(m+3,2)为目标交易数据T(m+3,2)的待合并交易写缓存D(m+3,2)。
块的共识结果通过时,可以将缓存数据库50d中块缓存中的数据以及区块共同写入账本。
量,延时表示区块链网络对交易的响应和处理时间。
数量可以减少延时,但不考虑交易吞吐量的方案会导致大量的交易在执行队列中排队,某
些平台必须能够处理大量的并发用户,交易吞吐量过低的技术方案会被直接放弃。
靠性。而本申请正是兼顾交易吞吐量与交易处理延迟的一种方案,多个区块并行以及块内
多个合约并行,可以更快地处理多个区块,不仅能减少交易的处理延迟,而且能提高区块链
的交易吞吐量。
解为图3中的并行交易读数据,S1’表示处理完交易请求T1后的修改数据(也可以理解为图3
中的并行交易写数据),S2’表示处理完交易请求T2后的修改数据(也可以理解为图3中的并
行交易写数据),S3’表示处理完交易请求T3后的修改数据(也可以理解为图3中的并行交易
写数据),S3是合并完交易请求T1、交易请求T2、交易请求T3分别对应的待合并交易写缓存
之后的块缓存。
的顺序以及交易数据序号的顺序排列的,且可以来源于至少两个区块;获取每个合约业务
被执行时所生成的并行交易读缓存以及并行交易写缓存,由于目标交易数据对应的并行交
易读缓存可能是过旧的交易读缓存,所以先在至少两个区块分别对应的块缓存中确定已合
并交易写缓存,然后在已合并交易写缓存中,获取目标交易数据对应的更新交易读缓存;其
中,已合并交易写缓存所对应的交易数据,在执行队列中的位置或添加时间处于目标交易
数据之前;根据更新交易读缓存,可以确定目标交易数据对应的并行交易读缓存是否是过
旧的交易读缓存,进而可以根据更新交易读缓存以及目标交易数据对应的并行交易写缓存
确定目标交易数据的待合并交易写缓存。上述可知,在一方面,本申请通过并行执行多个区
块中的交易数据,可以提高区块链网络处理交易数据的效率,减少执行队列中大量交易数
据的排队;另一方面,并行执行完多个交易数据后,本申请根据每个交易数据对应的已合并
交易写缓存,可以获取其对应的更新交易读缓存,进而可以根据每个交易数据对应的更新
交易读缓存,确定其对应的并行交易读缓存是否为过旧的交易读缓存,达到校验并行交易
读缓存以及并行交易写缓存的效果,进而可以保证待合并交易写缓存的正确性,从而可以
在提高对交易数据的处理效率的同时,还可以保证块缓存中的数据的正确性。
S1031‑步骤S1036为图3所对应实施例中步骤S103的一个具体实施例。
联关系。
区块里的交易信息相同但矿工签名不同或者交易排序不同的区块链,这样的情况叫做分叉
(Fork),此时区块链可以称作分叉区块链。
块502b、区块503b以及区块m+4;区块m的区块高度为m,区块501b的区块高度为m+1,区块
502b的区块高度为m+2,区块503b的区块高度为m+3,区块m+4的区块高度为m+4;另一个分支
链包括区块m以及分叉区块50a,其中,分叉区块50a可以包括区块501a、区块502a以及区块
503a;区块501a的区块高度为m+1,区块502a的区块高度为m+2,区块503a的区块高度为m+3。
度一致,均为m+1;区块502b的区块高度与区块502a的区块高度一致,均为m+2;区块503b的
区块高度与区块503a的区块高度一致,均为m+3;所以仅仅根据区块高度在至少两个区块中
获取目标区块(即区块503b)的已合并区块,将会出现数据紊乱现象,区块503b的前继区块
对应的区块高度为m+2,但是根据图5,可知,区块高度为m+2的区块共有两个,分别为区块
502b以及区块502a,因此需要一种方案,该方案可以准确地为目标区块确定已合并区块。
映射表确定目标区块的已合并区块。如图5所示,缓存数据库50d中包括两个哈希映射表,分
别为哈希映射表1以及哈希映射表2。其中,哈希映射表1中的区块高度可以包括区块高度m+
4、区块高度m+3、区块高度m+2以及区块高度m+1;哈希映射表1中的区块哈希可以包括与区
块高度m+4对应的区块哈希Cb6d3d598e91420a8eca40c4f8e6d608,与区块高度m+3对应的区
块哈希666d3d5ace91420a8eca40c4f84kd608,与区块高度m+2对应的区块哈希
666d3d5ace91420a8eca40c4f84kd60,与区块高度m+1对应的区块哈希333d3dnb8e91420a8
eca40c4f8e6ytrk。
420a8ghj40c4f84kd80y,与区块高度m+2对应的区块哈希546d3d598e9jkl0a8eca40b908e6
d608,与区块高度m+1对应的区块哈希346d3d5dek91420a8eca40c4f84kd222。
对比结果将两个哈希映射表中包含目标区块哈希的哈希映射表,确定为目标哈希映射表
50c,即图5所示例的哈希映射表1,此时,计算机设备可知目标区块来源于哈希映射表1所对
应的分支链上,将包括目标区块的分支链确定为目标分支链,该目标分支链可以包括分叉
区块50b,即区块501b、区块502b、区块503b以及区块m+4。
联的分叉区块哈希,确定为已合并分叉区块哈希,如图5所示例的区块哈希546d3d598e9jk
l0a8eca40b908e6d608,以及区块哈希346d3d5dek91420a8eca40c4f84kd222。
定目标区块的为已合并区块50e可以包括区块502b、区块501b以及区块m。计算机设备将已
合并区块对应的块缓存中的交易写缓存,以及已合并交易数据对应的交易写缓存确定为已
合并交易写缓存,请结合图5以及图6,已合并交易数据可以包括交易数据T(m+3,1),已合并区
块可以包括即区块502b、区块501b以及区块m。
W(m+2,3)、交易写缓存W(m+1,1)、交易写缓存W(m+1,2)、交易写缓存W(m+1,3)、交易写缓存W(m,1)、交易
写缓存W(m,2),以及交易写缓存W(m,3);已合并交易数据对应的交易写缓存可以包括块缓存
Km+3中的交易写缓存W(m+3,1)。
区块确定上链时(该区块在最长链中,例如图5中所示例的目标分支链),即针对区块的共识
结果通过时,可以将缓存数据库50d中块缓存中的数据以及区块共同写入账本。
区块。
的顺序以及交易数据序号的顺序排列的,且可以来源于至少两个区块;获取每个合约业务
被执行时所生成的并行交易读缓存以及并行交易写缓存,由于目标交易数据对应的并行交
易读缓存可能是过旧的交易读缓存,所以先在至少两个区块分别对应的块缓存中确定已合
并交易写缓存,然后在已合并交易写缓存中,获取目标交易数据对应的更新交易读缓存;其
中,已合并交易写缓存所对应的交易数据,在执行队列中的位置或添加时间处于目标交易
数据之前;根据更新交易读缓存,可以确定目标交易数据对应的并行交易读缓存是否是过
旧的交易读缓存,进而可以根据更新交易读缓存以及目标交易数据对应的并行交易写缓存
确定目标交易数据的待合并交易写缓存。上述可知,在一方面,本申请通过并行执行多个区
块中的交易数据,可以提高区块链网络处理交易数据的效率,减少执行队列中大量交易数
据的排队;另一方面,并行执行完多个交易数据后,本申请根据每个交易数据对应的已合并
交易写缓存,可以获取其对应的更新交易读缓存,进而可以根据每个交易数据对应的更新
交易读缓存,确定其对应的并行交易读缓存是否为过旧的交易读缓存,达到校验并行交易
读缓存以及并行交易写缓存的效果,进而可以保证待合并交易写缓存的正确性,从而可以
在提高对交易数据的处理效率的同时,还可以保证块缓存中的数据的正确性。
程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供
的方法中的相应步骤。如图9所示,该数据处理装置1可以包括:第一获取模块11、第二获取
模块12、第三获取模块13、第一合并模块14以及第二合并模块15。
两个交易数据均携带合约信息;
两个交易数据包括目标交易数据;
所对应的交易数据,在执行队列中的位置或添加时间处于目标交易数据之前;
理。
S105,这里不再进行赘述。
量。
再进行赘述。
交易写缓存;
据之间不存在读数据冲突;
数据之间存在读数据冲突。
再进行赘述。
的关联关系;
述。
的顺序以及交易数据序号的顺序排列的,且可以来源于至少两个区块;获取每个合约业务
被执行时所生成的并行交易读缓存以及并行交易写缓存,由于目标交易数据对应的并行交
易读缓存可能是过旧的交易读缓存,所以先在至少两个区块分别对应的块缓存中确定已合
并交易写缓存,然后在已合并交易写缓存中,获取目标交易数据对应的更新交易读缓存;其
中,已合并交易写缓存所对应的交易数据,在执行队列中的位置或添加时间处于目标交易
数据之前;根据更新交易读缓存,可以确定目标交易数据对应的并行交易读缓存是否是过
旧的交易读缓存,进而可以根据更新交易读缓存以及目标交易数据对应的并行交易写缓存
确定目标交易数据的待合并交易写缓存。上述可知,在一方面,本申请通过并行执行多个区
块中的交易数据,可以提高区块链网络处理交易数据的效率,减少执行队列中大量交易数
据的排队;另一方面,并行执行完多个交易数据后,本申请根据每个交易数据对应的已合并
交易写缓存,可以获取其对应的更新交易读缓存,进而可以根据每个交易数据对应的更新
交易读缓存,确定其对应的并行交易读缓存是否为过旧的交易读缓存,达到校验并行交易
读缓存以及并行交易写缓存的效果,进而可以保证待合并交易写缓存的正确性,从而可以
在提高对交易数据的处理效率的同时,还可以保证块缓存中的数据的正确性。
络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于
实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘
(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI‑FI接口)。存
储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non‑volatile memory),例
如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的
存储装置。如图10所示,作为一种计算机存储介质的存储器1005可以包括操作系统、网络通
信模块、用户接口模块以及设备控制应用程序。
设备控制应用程序,以实现:
约信息;
交易数据;
执行队列中的位置或添加时间处于目标交易数据之前;
施例中对数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也
不再进行赘述。
中各个步骤所提供的基于区块链的数据处理方法,具体可参见上述图3、图7以及图8中各个
步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进
行赘述。
存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬
盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡
(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存
储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机
设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者
将要输出的数据。
处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算
机设备可执行前文图3、图7以及图8所分别对应的实施例中对基于区块链的数据处理方法
的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于
已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这
些过程、方法、装置、产品或设备固有的其他步骤单元。
和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这
些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专
业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不
应认为超出本申请的范围。
一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指
令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器
以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用
于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能
的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定
方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令
装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框
或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理
设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处
理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个
流程和/或结构示意一个方框或多个方框中指定的功能的步骤。