CN117194392A - 基于区块链系统的交易数据处理方法及装置、设备、介质 - Google Patents
基于区块链系统的交易数据处理方法及装置、设备、介质 Download PDFInfo
- Publication number
- CN117194392A CN117194392A CN202210618245.5A CN202210618245A CN117194392A CN 117194392 A CN117194392 A CN 117194392A CN 202210618245 A CN202210618245 A CN 202210618245A CN 117194392 A CN117194392 A CN 117194392A
- Authority
- CN
- China
- Prior art keywords
- bloom filter
- transaction data
- identification information
- value
- identification
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 claims abstract description 112
- 238000001514 detection method Methods 0.000 claims description 112
- 230000008569 process Effects 0.000 claims description 75
- 230000002085 persistent effect Effects 0.000 claims description 69
- 230000002688 persistence Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 21
- 230000001960 triggered effect Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 230000009191 jumping Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 17
- 230000008030 elimination Effects 0.000 description 13
- 238000003379 elimination reaction Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 8
- 238000012512 characterization method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000019771 cognition Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012856 packing Methods 0.000 description 4
- 230000002045 lasting effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Abstract
本申请的实施例公开了一种基于区块链系统的交易数据处理方法及装置、设备、介质。该方法包括:若接收到交易触发方发送的交易数据,则确定区块链系统中当前布隆过滤器的属性值;之后基于属性值与预设属性阈值之间的关系,确定当前布隆过滤器的存储状态;若存储状态表征不能继续存储交易数据,则创建新的布隆过滤器,并基于交易数据的标识信息,确定新的布隆过滤器的标识区间初始值;之后将交易数据存储至带有标识区间初始值的新的布隆过滤器中。本申请的技术方案提升区块链系统中的布隆过滤器的创建合理性,也相应提升了交易数据去重判断的准确率,极大地优化了区块链的交易去重方案。
Description
技术领域
本申请涉及区块链技术领域,具体而言,涉及一种基于区块链系统的交易数据处理方法、基于区块链系统的交易数据处理装置、电子设备,以及计算机可读介质。
背景技术
区块链技术广泛应用于金融、征信、银行等领域,在区块链系统中交易数据去重是一个非常重要的能力,其中在交易数据去重中涉及到布隆过滤器,布隆过滤器是一种比较巧妙的概率型数据结构,核心实现是一个超大的位数组和几个哈希函数,特点是高效地插入和查询,可以用来判断交易数据可能存在或者一定不存在。
相关技术中,通常是创建一个布隆过滤器,并将未重复的交易数据存储至该布隆过滤器中。其中,将未重复的交易数据存储至该布隆过滤器的具体过程是,将交易数据与布隆过滤器中所含有的交易数据进行匹配,如果匹配,那么则可以确定该交易数据是重复的,不将该重复的交易数据存储至布隆过滤器中;基于此,通过布隆过滤器实现了对交易数据的去重判断。
但是,随着交易量的不断累计增大,在交易去重判断的过程中,所创建的一个布隆过滤器已不能满足实际使用需求,创建合理性较差;并且采用所创建的一个布隆过滤器进行交易数据的去重判断的准确率也是相对较低的。
可见,如何提升布隆过滤器的创建合理性,以提升交易数据去重判断的准确率是亟待解决的问题。
发明内容
为解决上述技术问题,本申请的实施例提供了一种基于区块链系统的交易数据处理方法及装置、设备、介质,进而至少在一定程度上提升了布隆过滤器的创建合理性,相应地,提升了交易数据去重判断的准确率。
根据本申请实施例的一个方面,本申请实施例提供了一种基于区块链系统的交易数据处理方法,所述方法包括:若接收到交易触发方发送的交易数据,则确定所述区块链系统中当前布隆过滤器的属性值;基于所述属性值与预设属性阈值之间的关系,确定所述当前布隆过滤器的存储状态;若所述存储状态表征不能继续存储交易数据,则创建新的布隆过滤器,并基于所述交易数据的标识信息,确定所述新的布隆过滤器的标识区间初始值;其中,所述标识信息是与所述交易数据的触发生成过程相对应的数据;将所述交易数据存储至带有所述标识区间初始值的新的布隆过滤器中。
根据本申请实施例的一个方面,本申请实施例提供了一种基于区块链系统的交易数据处理装置,所述装置包括:第一确定模块,配置为若接收到交易触发方发送的交易数据,则确定所述区块链系统中当前布隆过滤器的属性值;第二确定模块,配置为基于所述属性值与预设属性阈值之间的关系,确定所述当前布隆过滤器的存储状态;创建与确定模块,配置为若所述存储状态表征不能继续存储交易数据,则创建新的布隆过滤器,并基于所述交易数据的标识信息,确定所述新的布隆过滤器的标识区间初始值;其中,所述标识信息是与所述交易数据的触发生成过程相对应的数据;存储模块,配置为将所述交易数据存储至带有所述标识区间初始值的新的布隆过滤器中。
在本申请的一个实施例中,基于前述方案,所述第二确定模块,具体配置为:将所述属性值与所述预设属性阈值进行比较;若所述属性值达到所述预设属性阈值,则得到用于表征不能继续存储交易数据的存储状态;若所述属性值未达到所述预设属性阈值,则得到用于表征能够继续存储交易数据的存储状态。
在本申请的一个实施例中,基于前述方案,所述属性值包括存储率;所述第一确定模块,具体配置为:获取所述当前布隆过滤器在创建过程中被分配的存储空间;以及获取所述当前布隆过滤器当前被占用的存储空间;基于所述被分配的存储空间与所述被占用的存储空间,确定所述区块链系统中当前布隆过滤器的存储率。
在本申请的一个实施例中,基于前述方案,所述属性值包括错误判定率;所述第一确定模块,具体配置为:获取所述当前布隆过滤器针对存储过程中交易数据是否存在重复可能性的总判定次数,以及错误判定次数;其中,所述总判定次数与所述错误判定次数都是从所述当前布隆过滤器创建时刻起进行统计得到的;基于所述总判定次数与所述错误判定次数,确定所述区块链系统中当前布隆过滤器的错误判定率。
在本申请的一个实施例中,基于前述方案,所述标识信息是所述交易数据被触发生成时所对应的时间戳;所述创建与确定模块,具体配置为:将所述时间戳作为所述新的布隆过滤器的标识区间初始值;或者,所述标识信息是所述交易数据被触发生成时所对应的排序数量值;所述创建与确定模块,具体配置为:将所述排序数量值作为所述新的布隆过滤器的标识区间初始值。
在本申请的一个实施例中,基于前述方案,所述存储模块,具体配置为:通过多种哈希算法对所述标识信息进行计算,得到所述标识信息对应的多个哈希索引值;确定所述新的布隆过滤器中与所述多个哈希索引值相匹配的位置;对各个位置进行指定数值填充,以实现所述交易数据的存储。
在本申请的一个实施例中,基于前述方案,所述装置还包括:更新模块,配置为若所述存储状态表征能够继续存储交易数据,则基于所述标识信息,更新所述当前布隆过滤器的标识区间终止值;所述存储模块,还配置为将所述交易数据存储至带有所述标识区间终止值的当前布隆过滤器中。
在本申请的一个实施例中,基于前述方案,所述装置还包括:获取模块,配置为若所述存储状态表征不能继续存储交易数据,则获取所述当前布隆过滤器的标识区间初始值和标识区间终止值;其中,所述标识区间初始值与所述标识区间终止值都是基于所述当前布隆过滤器所存储的交易数据的标识信息确定的;作为模块,配置为将所述标识区间初始值和标识区间终止值作为所述当前布隆过滤器的标识区间标签;第一持久化存储模块,配置为将所述当前布隆过滤器与所述当前布隆过滤器的标识区间标签进行关联持久化存储。
在本申请的一个实施例中,基于前述方案,所述装置还包括:第二持久化存储模块,配置为若每检测到所述区块链系统中新生成预设数量个区块,则将节点运行过程中所创建的布隆过滤器进行持久化存储;或者,第三持久化存储模块,配置为若每检测到所述区块链系统中处理预设数量笔交易,则将节点运行过程中所创建的布隆过滤器进行持久化存储。
在本申请的一个实施例中,基于前述方案,所述第二持久化存储模块或所述第三持久化存储模块,具体配置为:获取所述区块链系统中最新区块的区块高度;将所述区块高度与所述节点运行过程中所创建的布隆过滤器进行关联持久化存储。
在本申请的一个实施例中,基于前述方案,所述第一确定模块,包括:检测单元,配置为检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与所述标识信息相匹配的布隆过滤器的获取结果;第一获得单元,配置为若所述获取结果表征获取到与所述标识信息相匹配的布隆过滤器,则基于获取到的布隆过滤器得到所述交易数据是否重复的检测结果;第二获得单元,配置为若所述获取结果表征未获取到与所述标识信息相匹配的布隆过滤器,则确定所述区块链系统中当前布隆过滤器的属性值。
在本申请的一个实施例中,基于前述方案,所述指定持久化存储区域中存储有带有标识区间标签的多个布隆过滤器;所述检测单元,具体配置为:分别检测所述标识信息与所述多个布隆过滤器所对应的标识区间标签的包含情况;若所述多个布隆过滤器中存在包含有所述标识信息的标识区间标签所对应的布隆过滤器,则得到用于表征获取到与所述标识信息相匹配的布隆过滤器的获取结果;若所述多个布隆过滤器中不存在包含有所述标识信息的标识区间标签所对应的布隆过滤器,则得到用于表征未获取到与所述标识信息相匹配的布隆过滤器的获取结果。
在本申请的一个实施例中,基于前述方案,所述检测单元,还具体配置为:基于获取到的布隆过滤器对所述交易数据进行重复性检测,得到第一检测结果;
若所述第一检测结果表征所述交易数据存在重复可能性,则将所述交易数据与预设交易库中含有的交易数据进行匹配,得到第二检测结果;若所述第二检测结果表征所述交易数据与所述预设交易库中含有的交易数据匹配,则得到用于表征所述交易数据重复的检测结果;若所述第二检测结果表征所述交易数据与所述预设交易库中含有的交易数据不匹配,则得到用于表征所述交易数据未重复的检测结果。
在本申请的一个实施例中,基于前述方案,所述检测单元,还具体配置为:通过多种哈希算法对所述标识信息进行计算,得到所述标识信息对应的多个哈希索引值;确定所获取到的布隆过滤器中与所述多个哈希索引值相匹配的位置,并获取所述位置所填充的数值;基于各个数值与预设重复策略的关系,得到所述第一检测结果。
在本申请的一个实施例中,基于前述方案,所述检测单元,还具体配置为:若各个数值均满足所述预设重复策略,则得到用于表征所述交易数据存在重复可能性的第一检测结果;若检测到各个数值中存在不满足所述预设重复策略的数值,则得到用于表征所述交易数据不存在重复可能性的第一检测结果。
在本申请的一个实施例中,基于前述方案,所述检测单元,具体配置为:基于获取到的布隆过滤器对所述交易数据进行重复性检测,得到第三检测结果;以及基于当前布隆过滤器对所述交易数据进行重复性检测,得到第四检测结果;基于所述第三检测结果与所述第四检测结果,得到所述交易数据是否重复的检测结果。
在本申请的一个实施例中,基于前述方案,所述装置还包括:第三确定模块,配置为若检测到节点宕机,则从所述指定持久化存储区域中确定最高的区块高度;执行模块,配置为将所述区块高度的下一个区块高度对应的区块作为起始区块,并将所述起始区块中含有的交易数据分别作为所述交易数据,并跳转执行步骤检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与所述标识信息相匹配的布隆过滤器的获取结果,直至遍历完所述起始区块后的各个区块。
根据本申请实施例的一个方面,本申请实施例提供了一种电子设备,包括一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上所述的基于区块链系统的交易数据处理方法。
根据本申请实施例的一个方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于区块链系统的交易数据处理方法。
根据本申请实施例的一个方面,本申请实施例提供了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上所述的基于区块链系统的交易数据处理方法。
在本申请的实施例提供的技术方案中:
一方面,创建了多个布隆过滤器,相对于相关技术中仅创建一个布隆过滤器而言,满足于交易量不断累计增大以进行存储的应用场景中,创建合理性与灵活性均更高。
一方面,创建新的布隆过滤器时,是基于当前布隆过滤器的属性值与预设属性阈值之间的关系所确定出的当前布隆过滤器的存储状态,并在当前布隆过滤器的存储状态表征不能继续存储交易数据时,触发新的布隆过滤器的创建,以得到一个新的布隆过滤器,并将交易数据存储至所创建的新的布隆过滤器中;这样实现了布隆过滤器的动态创建,并且由于动态创建布隆过滤器的触发是考虑了布隆过滤器本身的属性值,而不再是固定的区块数量,避免了通过存储与固定的区块数量相匹配的交易数据所导致的交易数据有遗漏或重复等现象;因此所动态创建的布隆过滤器合理性更高、准确率更高,从而提升了后期基于动态创建的布隆过滤器进行交易数据去重判断的准确率。
一方面,新的布隆过滤器所带有的标识区间初始值,是基于与交易数据的触发生成过程中相对应的数据(即标识信息)所确定;这样将动态创建的布隆过滤器所带有标识区间初始值与交易数据本身的标识信息进行关联,从而便于后期快速进行交易数据的去重判断,提升了后期基于动态创建的布隆过滤器进行交易数据去重判断的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是区块链网络的结构示意图;
图2是区块链中各区块的连接关系示意图;
图3是可以应用本申请实施例的技术方案的示例性实施环境的示意图;
图4是本申请的一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图5是本申请的另一示例性实施例示出的交易数据存储至布隆过滤器的示意图;
图6是本申请的另一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图7是本申请的另一示例性实施例示出的交易数据存储至布隆过滤器的示意图;
图8是本申请的另一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图9是本申请的另一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图10是本申请的另一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图11是本申请的另一示例性实施例示出的持久化存储区域存储布隆过滤器的示意图;
图12是本申请的另一示例性实施例示出的交易数据存储至布隆过滤器的示意图;
图13是本申请的另一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图14是本申请的另一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图15是本申请的另一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图16是本申请的另一示例性实施例示出的基于区块链系统的交易数据处理方法的流程图;
图17是本申请的一个实施例的基于区块链系统的交易数据处理装置的框图;
图18是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相相同的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相同的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是,在本申请中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在介绍本申请实施例的技术方案之前,先介绍本申请实施例中用到的区块链技术。
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块(即区块),每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
如上,区块链本质上是一个去中心化的数据库,而区块链是由区块链网络中的节点共同维护的。例如请参阅图1,在图1所示的区块链网络中,可以包括多个节点101,多个节点101可以是形成区块链网络的各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该区块链网络内的共享数据。为了保证区块链网络内的信息互通,区块链网络中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如当区块链网络中的任意节点接收到输入信息时,区块链网络中的其它节点便根据共识算法获取该输入信息,将该输入信息作为共享数据进行存储,使得区块链网络中全部节点上存储的数据均一致。
对于区块链网络中的每个节点,均具有与其对应的节点标识,而且区块链网络中的每个节点均可以存储有其它节点的节点标识,以便后续根据其它节点的节点标识,将生成的区块广播至区块链网络中的其它节点。每个节点中可维护一个节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(InternetProtocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息。
区块链网络中的每个节点均存储一条相同的区块链。区块链由多个区块组成,请参阅图2,区块链由多个区块组成,创始块中包括区块头和区块体,区块头中存储有输入信息特征值、版本号、时间戳和难度值等,区块体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值等,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
区块链网络中各个节点可以是服务器,也可以是终端设备。其中服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算(Cloud Computing)、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和智能平台等基础云计算服务的云服务器。其中终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。各个节点之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
前述的云计算是指IT基础设施的交付和使用模式,具体指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(ParallelComputing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
相关技术中,通常是创建一个布隆过滤器,并将未重复的交易数据存储至该布隆过滤器中。其中,将未重复的交易数据存储至该布隆过滤器的具体过程是,将交易数据与布隆过滤器中所含有的交易数据进行匹配,如果匹配,那么则可以确定该交易数据是重复的,不将该重复的交易数据存储至布隆过滤器中;基于此,通过布隆过滤器实现了对交易数据的去重判断。
但是,随着交易量的不断累计增大,在交易去重判断的过程中,所创建的一个布隆过滤器已不能满足实际使用需求,创建合理性较差;并且采用所创建的一个布隆过滤器进行交易数据的去重判断的准确率也是相对较低的。
同时,在创建一个布隆过滤器,通常会创建的过程中指定该布隆过滤器所应该存储的与区块数量相匹配的交易数据,区块数量设置得比较大,例如布隆过滤器中可以存储与10000个区块相匹配的交易数据。其中,布隆过滤器的创建过程依赖于区块打包过程,只有区块打包之后才能基于所打包区块中的交易数据创建布隆过滤器,而区块打包相关逻辑的处理与传递可能会出错,从而会导致所创建的布隆过滤器中所存储的交易数据会有遗漏或重复等;由此,进一步降低了采用所创建的一个布隆过滤器进行交易数据的去重判断的准确率。
基于前述介绍的区块链技术,以及相关技术中布隆过滤器创建合理性较差、以及基于所创建的布隆过滤器进行交易数据去重判断准确率低的问题,本申请的实施例提供了一种基于区块链系统的交易数据处理方案。具体而言,在本申请的一个应用场景中,请参阅图3,主要包含了交易触发方301以及区块链网络302。
可以理解的是,交易触发方301是触发交易生成交易数据的一方,其可以通过任意具有对象输入接口的电子设备触发交易。其中电子设备包括但不限于智能手机、平板、笔记本电脑、计算机、智能语音交互设备、智能家电、车载终端、飞行器等,其中对象输入接口包括但不限于触摸屏、键盘、物理按键、音频拾取装置等。区块链网络302是接收交易数据的一方,其为前述介绍的区块链网络,在此不再赘述。
在本申请的一个实施例中,交易触发方301发送交易数据至区块链网络302,相应地,区块链网络302接收交易触发方发送的交易数据,并确定区块链系统中当前布隆过滤器的属性值;之后基于属性值与预设属性阈值之间的关系,确定当前布隆过滤器的存储状态;如果存储状态表征不能继续存储交易数据,则创建新的布隆过滤器,并基于交易数据的标识信息,确定新的布隆过滤器的标识区间初始值,其中标识信息是与交易数据的触发生成过程相对应的数据;之后将交易数据存储至带有标识区间初始值的新的布隆过滤器中。
第一方面,创建了多个布隆过滤器,相对于相关技术中仅创建一个布隆过滤器而言,满足于交易量不断累计增大以进行存储的应用场景中,创建合理性与灵活性均更高。
第二方面,创建新的布隆过滤器时,是基于当前布隆过滤器的属性值与预设属性阈值之间的关系所确定出的当前布隆过滤器的存储状态,并在当前布隆过滤器的存储状态表征不能继续存储交易数据时,触发新的布隆过滤器的创建,以得到一个新的布隆过滤器,并将交易数据存储至所创建的新的布隆过滤器中;这样实现了布隆过滤器的动态创建,并且由于动态创建布隆过滤器的触发是考虑了布隆过滤器本身的属性值,而不再是固定的区块数量,避免了通过存储与固定的区块数量相匹配的交易数据所导致的交易数据有遗漏或重复等现象;因此所动态创建的布隆过滤器合理性更高、准确率更高,从而提升了后期基于动态创建的布隆过滤器进行交易数据去重判断的准确率。
第三方面,新的布隆过滤器所带有的标识区间初始值,是基于与交易数据的触发生成过程中相对应的数据(即标识信息)所确定;这样将动态创建的布隆过滤器所带有标识区间初始值与交易数据本身的标识信息进行关联,从而便于后期快速进行交易数据的去重判断,提升了后期基于动态创建的布隆过滤器进行交易数据去重判断的效率。
需要说明的是,在本申请的具体实施方式中,涉及到对象相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
以下对本申请实施例的技术方案的各种实现细节进行详细阐述:
请参阅图4,图4是本申请的一个实施例示出的基于区块链系统的交易数据处理方法的流程图,该基于区块链系统的交易数据处理方法可以由区块链网络302中任一节点来执行。如图4所示,该基于区块链系统的交易数据处理方法至少包括步骤S401至步骤S404,详细介绍如下:
步骤S401,若接收到交易触发方发送的交易数据,则确定区块链系统中当前布隆过滤器的属性值。
本申请实施例中交易数据指的是交易触发方发送的与交易相关的交易数据,其是由交易触发方触发所生成的。
可以理解的是,由于本申请实施例中提出动态创建多个布隆过滤器,因此,会涉及到多个布隆过滤器。其中,本申请实施例中当前布隆过滤器指的是当前时刻区块链系统中所对应的最新的一个布隆过滤器,或者说,是创建时刻最晚的一个布隆过滤器。例如设至当前时刻为止,区块链系统中共动态创建有20个布隆过滤器,其中,最晚创建的布隆过滤器所对应的创建时刻为当前时刻的前1秒,那么该最晚创建的布隆过滤器即作为当前布隆过滤器。
本申请实施例中当前布隆过滤器的属性值指的是能够体现当前布隆过滤器与存储所关联的属性数据。
可选地,属性值可以是存储率(也可称为承载率);其中,存储率可以通过以下步骤得到:
获取当前布隆过滤器在创建过程中被分配的存储空间;以及
获取当前布隆过滤器当前被占用的存储空间;
基于被分配的存储空间与被占用的存储空间,确定区块链系统中当前布隆过滤器的存储率。
也即,可选实施例中可以通过当前布隆过滤器被创建时所被分配的存储空间,以及当前布隆过滤器当前被占用的存储空间,确定当前布隆过滤器的存储率。可以理解的是,存储率是一个能够直观体现出当前布隆过滤器存储情况的因素,从而后期可以利用该存储率确定当前布隆过滤器的存储状态。
可选地,属性值可以是错误判定率(也可称为误判率);其中,错误判定率可以通过以下步骤得到:
获取当前布隆过滤器针对存储过程中交易数据是否存在重复可能性的总判定次数,以及错误判定次数;其中,总判定次数与错误判定次数都是从当前布隆过滤器创建时刻起进行统计得到的;
基于总判定次数与错误判定次数,确定区块链系统中当前布隆过滤器的错误判定率。
也即,可选实施例中可以通过当前布隆过滤器针对存储过程中交易数据是否存在重复可能性的总判定次数,以及错误判定次数,确定当前布隆过滤器的错误判定率。可以理解的是,错误判定率是一个能够从侧面体现出当前布隆过滤器存储情况的因素,其通常与存储率呈正比关系,即存储率越高,则错误判定率越高,反之,存储率越低,则错误判定率越低,从而后期可以利用该错误判定率确定当前布隆过滤器的存储状态。
需要说明的是,这里仅是以两种属性值进行示例,在实际应用中,还可以根据具体应用场景进行灵活调整或扩展。
步骤S402,基于属性值与预设属性阈值之间的关系,确定当前布隆过滤器的存储状态。
本申请实施例中确定区块链系统中当前布隆过滤器的属性值,之后可以基于属性值与预设属性阈值之间的关系,确定当前布隆过滤器的存储状态。
可选地,步骤S402中基于属性值与预设属性阈值之间的关系,确定当前布隆过滤器的存储状态的过程,可以包括以下步骤:
将属性值与预设属性阈值进行比较;
若属性值达到预设属性阈值,则得到用于表征不能继续存储交易数据的存储状态;
若属性值未达到预设属性阈值,则得到用于表征能够继续存储交易数据的存储状态。
也即,可选实施例中属性值与预设属性阈值之间的关系存在着两种情况;情况一是,属性值达到预设属性阈值,此时得到的存储状态是表征不能继续存储交易数据的存储状态;情况二是,属性值未达到预设属性阈值,此时得到的存储状态是表征能够继续存储交易数据的存储状态。
可以理解的是,如果属性值是存储率,相应地,预设属性阈值为预设存储率阈值。其中,如果存储率达到预设存储率阈值,则得到用于表征不能继续存储交易数据的存储状态,如果存储率未达到预设存储率阈值,则得到用于表征能够继续存储交易数据的存储状态。
可以理解的是,如果属性值是错误判定率,相应地,预设属性阈值为预设错误判定率阈值。其中,如果错误判定率达到预设错误判定率阈值,则得到用于表征不能继续存储交易数据的存储状态,如果错误判定率未达到预设错误判定率阈值,则得到用于表征能够继续存储交易数据的存储状态。
这样,通过能够体现当前布隆过滤器与存储所关联的属性数据(即属性值),能够简单便捷、准确地确定出与当前布隆过滤器的存储状态,以为后期是否创建新的布隆过滤器提供支持。
步骤S403,若存储状态表征不能继续存储交易数据,则创建新的布隆过滤器,并基于交易数据的标识信息,确定新的布隆过滤器的标识区间初始值;其中,标识信息是与交易数据的触发生成过程相对应的数据。
本申请实施例中存储状态存在着两种表征情况,相应地,也存在两种处理情况;情况一是,存储状态表征不能继续存储交易数据,则此时存在创建新的布隆过滤器的需要,那么可以创建新的布隆过滤器,并可以基于交易数据的标识信息,确定新的布隆过滤器的标识区间初始值;情况二是,存储状态表征能够继续存储交易数据,则此时没有存在创建新的布隆过滤器的需要,无需创建新的布隆过滤器。
可以理解的是,本申请实施例中创建新的布隆过滤器时,为之分配的是一个固定的存储空间,只是在布隆过滤器存储交易数据的过程中,不同布隆过滤器所对应的标识区间初始值和标识区间终止值(两者合并称为标识区间标签)是灵活变化的,其与所存储的交易数据的标识信息相关。
举例说明,例如设区块链系统中共动态创建有2个布隆过滤器,分别为布隆过滤器A、布隆过滤器B,其中在创建布隆过滤器A和布隆过滤器B时,都是分配的100兆存储空间;以存储率为存储状态的判定因素,那么虽然布隆过滤器A和布隆过滤器B都对应存储率95%(即被占用的存储空间为95兆),但是布隆过滤器A对应的标识区间初始值和标识区间终止值和布隆过滤器B对应的标识区间初始值和标识区间终止值是不相同的。
本申请实施例中交易数据中携带有标识信息,该标识信息是与交易数据的触发生成过程相对应的数据。
其中,与交易数据的触发生成过程相对应的数据,可以是交易数据被触发生成时所对应的时间戳;例如在时刻t触发生成交易数据,则交易数据的时间戳为t。相应地,标识信息为时间戳。
其中,与交易数据的触发生成过程相对应的数据,可以是交易数据被触发生成时所对应的排序数量值;例如所触发生成交易数据是第k个,则交易数据的排序数量值为k。相应地,标识信息为排序数量值。
可选地,标识信息是交易数据被触发生成时所对应的时间戳;步骤S403中基于标识信息,确定新的布隆过滤器的标识区间初始值的过程,可以包括以下步骤:
将时间戳作为新的布隆过滤器的标识区间初始值。
举例说明,例如设交易数据中携带的标识信息为时间戳t11,此时创建的新的布隆过滤器为C,那么是将时间戳t11作为新的布隆过滤器C对应的时间区间初始值,即新的布隆过滤器C对应的时间区间标签为[t11,t]。可以理解的是,t是随着后期存储的交易数据的时间戳而定,其中t需晚于t11,例如t为2022年5月17日09:10:05,t11为2022年5月17日09:10:00。
可选地,标识信息是交易数据被触发生成时所对应的排序数量值;步骤S403中基于交易数据的标识信息,确定新的布隆过滤器的标识区间初始值的过程,可以包括以下步骤:
将排序数量值作为新的布隆过滤器的标识区间初始值。
举例说明,例如设交易数据中携带的标识信息为排序数量值k11,此时所创建的新的布隆过滤器为C,那么是将排序数量值k11作为新的布隆过滤器C对应的时间区间初始值,即新的布隆过滤器C对应的数量区间标签为[k11,k]。可以理解的是,k是随着后期存储的交易数据的排序数量值而定,其中k需大于k11,例如k为第12个,k11为第11个。
这样,通过与交易数据的触发生成过程相对应的数据(即标识信息),确定出布隆过滤器所带有的标识区间初始值,建立了交易数据本身的标识信息与标识区间初始值的关联关系,后期可以基于该关联关系快速对交易数据进行去重判断。
步骤S404,将交易数据存储至带有标识区间初始值的新的布隆过滤器中。
本申请实施例中基于交易数据的标识信息,确定新的布隆过滤器的标识区间初始值,之后可以将交易数据存储至带有标识区间初始值的新的布隆过滤器中。
可以理解的是,将交易数据存储至带有标识区间初始值的新的布隆过滤器中时,还可以将该交易数据加入到交易池中,以基于相应处理规则从交易池中获取交易数据进行交易的执行,并基于交易的执行进行区块打包等。
可选地,步骤S404中将交易数据存储至带有标识区间初始值的新的布隆过滤器中的过程,可以包括以下步骤:
通过多种哈希算法对标识信息进行计算,得到标识信息对应的多个哈希索引值;
确定新的布隆过滤器中与多个哈希索引值相匹配的位置;
对各个位置进行指定数值填充,以实现交易数据的存储。
也即,可选实施例中新的布隆过滤器的存储空间为多个位置,每个位置是没有填充任何指定数值的(因为才创建起,还没有存储交易数据),那么可以通过多种哈希算法对标识信息进行计算,得到标识信息对应的多个哈希索引值,并将新的布隆过滤器中与多个哈希索引值相匹配的位置进行指定数值的填充,从而实现将交易数据存储至带有标识区间初始值的新的布隆过滤器中。
其中,可选实施例中多种哈希算法指的是两种及两种以上的哈希算法。
举例说明,例如请参阅图5,设所创建的新的布隆过滤器为C,同时设通过哈希算法hash1、哈希算法hash2,以及哈希算法hash3对交易数据的标识信息tx31进行计算,得到标识信息tx31对应的哈希索引值0、哈希索引值2、哈希索引值6;之后就可以确定出新的布隆过滤器C中与哈希索引值0对应的位置0、与哈希索引值2对应的位置2,以及与哈希索引值6对应的位置6(第2行数字代表位置位),并分别对位置0、位置2,以及位置6进行数值1的填充(第1行数字是位置中所填充的数值),从而实现交易数据的存储。
本申请实施例中动态创建了多个布隆过滤器,满足于交易量不断累计增大以进行存储的应用场景中,并且所动态创建的布隆过滤器合理性更高、灵活性更高,以及准确率更高,从而提升了后期基于动态创建的布隆过滤器进行交易去重判断的准确率。
在本申请的一个实施例中,提供了另一种基于区块链系统的交易数据处理方法,该基于区块链系统的交易数据处理方法可以由区块链网络302中任一节点来执行。如图6所示,该基于区块链系统的交易数据处理方法在图4中所示的步骤S402之后增加了步骤S601至步骤S602。
步骤S601至步骤S602详细介绍如下:
步骤S601,若存储状态表征能够继续存储交易数据,则基于交易数据的标识信息,更新当前布隆过滤器的标识区间终止值。
如前述实施例中所介绍,存储状态存在着两种表征情况,相应地,也存在两种处理情况;情况一是,存储状态表征不能继续存储交易数据,则此时存在创建新的布隆过滤器的需要,那么可以创建新的布隆过滤器,并可以基于交易数据的标识信息,确定新的布隆过滤器的标识区间初始值;情况二是,存储状态表征能够继续存储交易数据,则此时没有存在创建新的布隆过滤器的需要,无需创建新的布隆过滤器,即此时还是利用当前布隆过滤器进行交易数据的存储,以及基于标识信息更新当前布隆过滤器的标识区间终止值。
可以理解的是,当前布隆过滤器的标识区间初始值可以参见前述实施例中新的布隆过滤器的标识区间初始值的由来过程进行推导得到。
可选地,标识信息是交易数据被触发生成时所对应的时间戳;步骤S601中基于标识信息,更新当前布隆过滤器的标识区间终止值的过程,可以包括以下步骤:
将时间戳替换当前布隆过滤器的标识区间终止值。
举例说明,例如设交易数据中携带的标识信息为时间戳t10,此时当前布隆过滤器为B,且设当前布隆过滤器B对应的时间区间标签为[t0,t9],那么是将时间戳t10替换当前布隆过滤器B对应的时间区间终止值t9,即当前布隆过滤器B对应的时间区间标签为[t0,t10]。可以理解的是,t0的由来过程可以参见前述实施例所介绍的新的布隆过滤器的标识区间初始值的由来过程进行推导得到。
可选地,标识信息是交易数据被触发生成时所对应的排序数量值;步骤S601中基于标识信息,更新当前布隆过滤器的标识区间终止值的过程,可以包括以下步骤:
将排序数量值替换当前布隆过滤器的标识区间终止值。
举例说明,例如设交易数据中携带的标识信息为排序数量值k10,此时当前布隆过滤器为B,且设当前布隆过滤器B对应的数量区间标签为[k0,k9],那么是将排序数量值k10替换当前布隆过滤器B对应的数量区间终止值k9,即当前布隆过滤器B对应的数量区间标签为[k0,k10]。可以理解的是,k0的由来过程可以参见前述实施例所介绍的新的布隆过滤器的标识区间初始值的由来过程进行推导得到。
步骤S602,将交易数据存储至带有标识区间终止值的当前布隆过滤器中。
本申请实施例中基于交易数据的标识信息,更新当前布隆过滤器的标识区间终止值,之后可以将交易数据存储至带有标识区间终止值的当前布隆过滤器中。
可选地,步骤S602中将交易数据存储至带有标识区间终止值的当前布隆过滤器中的过程,可以包括以下步骤:
通过多种哈希算法对标识信息进行计算,得到标识信息对应的多个哈希索引值;
确定当前布隆过滤器中与多个哈希索引值相匹配的位置;
对各个位置进行指定数值填充,以实现交易数据的存储。
也即,可选实施例中当前布隆过滤器的存储空间为多个位置,还存在着可以填充指定数值的位置,其与新的布隆过滤器的区别在于新的布隆过滤器由于才创建起,其是还未存储交易数据的,所以所有位置都是未填充指定数值的,而当前布隆过滤器由于并非才创建,所以其是存储有交易数据的,即某些位置是填充有指定数值的。
举例说明,例如请参阅图7,设当前布隆过滤器为B,其已经存储有标识信息tx32的交易数据,同时设通过哈希算法hash1、哈希算法hash2,以及哈希算法hash3对交易数据的标识信息tx32进行计算,得到标识信息tx32对应的哈希索引值0、哈希索引值2、哈希索引值6;之后就可以确定出当前布隆过滤器B中与哈希索引值0对应的位置0、与哈希索引值2对应的位置2,以及与哈希索引值6对应的位置6(第2行数字代表位置位),并分别对位置0、位置2,以及位置6进行数值1的填充(第1行数字是位置中所填充的数值),从而实现交易数据的存储。
需要说明的是,图6所示中步骤S401至步骤S404的详细介绍请参见图4所示的步骤S401至步骤S404,在此不再赘述。
可以理解的是,相关技术中每进行一个交易数据的去重判断,都需要基于过往交易数据创建一个布隆过滤器,然后再基于所创建的一个布隆过滤器进行交易数据的去重判断,在交易量比较小的情况,创建布隆过滤器所需消耗的区块链系统资源是相对较少的,但是随着交易量的不断累计增加,创建布隆过滤器所需消耗的区块链系统资源是相对较大的。也就是说,相关技术中并没有对所创建的一个布隆过滤器进行持久化存储,从而导致每次进行交易数据的去重判断时都需要重新创建一个布隆过滤器,在一定程度上浪费了区块链系统资源,且增加了繁琐的创建过程,在一定程度上也降低了交易数据去重判断的效率。
因此,本申请实施例中将所创建的布隆过滤器都进行持久化存储,从而避免了由于每次都需要基于过往交易数据重新创建布隆过滤器所造成的区块链系统资源浪费的情况,也避免了繁琐的创建过程。
可以理解的是,本申请实施例中持久化存储指的是抛开外界因素的影响(如人为删除),能够进行永久存储。可简单理解为是存储在数据库或磁盘中,该不受断电影响,该区别与存储在内存中,该受断电影响,断电后数据消失。
其中,本申请实施例中将所创建的布隆过滤器都进行持久化存储的过程请参见下述实施例:
在本申请的一个实施例中,提供了另一种基于区块链系统的交易数据处理方法,该基于区块链系统的交易数据处理方法可以由区块链网络302中任一节点来执行。如图8所示,该基于区块链系统的交易数据处理方法在图4中所示的步骤S404之后增加了步骤S801至步骤S803。
步骤S801至步骤S803详细介绍如下:
步骤S801,若存储状态表征不能继续存储交易数据,则获取当前布隆过滤器的标识区间初始值和标识区间终止值;其中,标识区间初始值与标识区间终止值都是基于当前布隆过滤器所存储的交易数据的标识信息确定的。
如前述实施例中所介绍,存储状态存在着两种表征情况;情况一是,存储状态表征不能继续存储交易数据,则此时存在创建新的布隆过滤器的需要,那么可以创建新的布隆过滤器,并可以基于标识信息,确定新的布隆过滤器的标识区间初始值;情况二是,存储状态表征能够继续存储交易数据,则此时是利用当前布隆过滤器进行交易数据的存储,以及基于标识信息更新当前布隆过滤器的标识区间终止值。
可以理解的是,情况一时,还可以获取当前布隆过滤器的标识区间初始值和标识区间终止值,以将获取到的标识区间初始值和标识区间终止值作为当前布隆过滤器的标识区间标签。
步骤S802,将标识区间初始值和标识区间终止值作为当前布隆过滤器的标识区间标签。
可选地,标识区间初始值可以是时间区间初始值,相应地,标识区间终止值可以是时间区间终止值,此时标识区间标签为时间区间标签。
可选地,标识区间初始值可以是数量区间初始值,相应地,标识区间终止值可以是数量区间终止值,此时标识区间标签为数量区间标签。
步骤S803,将当前布隆过滤器与当前布隆过滤器的标识区间标签进行关联持久化存储。
本申请实施例中是在当前布隆过滤器的存储状态表征不能继续存储交易数据时,将其与其对应的标识区间标签进行关联持久化存储,该可以理解为每当一个布隆过滤器不能继续存储交易数据时,则对其进行持久化存储。
可以理解的是,由于本申请实施例中提出动态创建多个布隆过滤器,考虑到交易数据的去重判断的效率;因此,本申请实施例中是将布隆过滤器与布隆过滤器的标识区间标签进行关联持久化存储。这样标识区间标签可以作为从多个布隆过滤器中获取到相应布隆过滤器的依据,从而后期只需要基于获取到的布隆过滤器进行交易数据的去重判断即可,而不再是基于多个布隆过滤器分别进行交易数据的去重判断,由此便可以在极大程度上提升交易数据的去重判断的效率。其中,具体的交易数据的去重判断过程请参见下述实施例的介绍。
举例说明,例如请参见下表1所示,为一种示例的关联持久化存储方式。
布隆过滤器 | 时间区间标签 |
B | [t0,t10] |
C | [t11,t25] |
…… | …… |
表1
或者,请参见下表2所示,为另一种示例的关联持久化存储方式。
布隆过滤器 | 数量区间标签 |
B | [k0,k10] |
C | [k11,k25] |
…… | …… |
表2
需要说明的是,图8所示中步骤S401至步骤S404的详细介绍请参见图4所示的步骤S401至步骤S404,在此不再赘述。
在本申请的一个实施例中,提供了另一种基于区块链系统的交易数据处理方法,该基于区块链系统的交易数据处理方法可以由区块链网络302中任一节点来执行。如图9所示,该基于区块链系统的交易数据处理方法在图4中所示的步骤S404之后增加了步骤S901。
步骤S901详细介绍如下:
步骤S901,若每检测到区块链系统中新生成预设数量个区块,则将节点运行过程中所创建的布隆过滤器进行持久化存储。
如前述实施例中所介绍,可以每当一个布隆过滤器不能继续存储交易数据时,则对其进行持久化存储,即一次仅对一个布隆过滤器进行持久化存储。
可以理解的是,考虑到对布隆过滤器进行持久化存储所消耗的区块链系统资源;因此,本申请实施例中可以是每检测到区块链系统中新生成预设数量个区块,则将所创建的布隆过滤器(可能是一个也可能是多个)进行持久化存储,例如每生成n个区块同步持久化存储一次。这样可以对所进行持久化存储的布隆过滤器有一个量化的认知,因为区块对应有一个最大的存储交易量(例如100笔等),那么基于预设数量个区块的生成,则可以确定总共最大的存储交易量(例如5个区块,则总共最大的存储交易量为500笔),所以在区块链系统中新生成预设数量个区块的时间段内,所创建的布隆过滤器的数量在极大程度上会与之相匹配。
也即,本申请实施例中没有采用每隔预设时间段对所创建的布隆过滤器进行持久化存储,因为不同时间段所创建的布隆过滤器的数量并不相同,该是没有一个量化的认知的,而基于预设数量个区块的生成,则可以有一个量化的认知。
通常情况下,采用每检测到区块链系统中新生成预设数量个区块,则将节点运行过程中所创建的布隆过滤器进行持久化存储的方式,都是针对多个布隆过滤器进行持久化存储,这样能够最大程度上减少对布隆过滤器进行持久化存储所消耗的区块链系统资源。
可选地,步骤S901中将节点运行过程中所创建的布隆过滤器进行持久化存储的过程,可以包括以下步骤:
获取区块链系统中最新区块的区块高度;
将区块高度与节点运行过程中所创建的布隆过滤器进行关联持久化存储。
可以理解的是,由于本申请实施例中提出动态创建多个布隆过滤器,考虑节点宕机后重新创建布隆过滤器的效率;因此,本申请实施例中是将区块高度与节点运行过程中所创建的布隆过滤器进行关联持久化存储。这样当节点宕机时就可以明确确定应该从哪一个区块开始重新进行交易数据的重放(即重新创建布隆过滤器,并将交易数据存储至布隆过滤中),从而可以避免不知道持久化存储的是哪些区块的交易数据,而只能从第一个区块开始重新进行交易数据的重放所导致的节点宕机后重新创建布隆过滤器的效率低的问题,由此便可以在极大程度上提升节点宕机后重新创建布隆过滤器的效率。其中,具体的进行交易数据的重放过程请参见下述实施例的介绍。
需要说明的是,图9所示中步骤S401至步骤S404的详细介绍请参见图4所示的步骤S401至步骤S404,在此不再赘述。
在本申请的一个实施例中,提供了另一种基于区块链系统的交易数据处理方法,该基于区块链系统的交易数据处理方法可以由区块链网络302中任一节点来执行。如图10所示,该基于区块链系统的交易数据处理方法在图4中所示的步骤S404之后增加了步骤S1001。
步骤S1001详细介绍如下:
步骤S1001,若每检测到区块链系统中处理预设数量笔交易,则将节点运行过程中所创建的布隆过滤器进行持久化存储。
如前述实施例中所介绍,可以每当一个布隆过滤器不能继续存储交易数据时,则对其进行持久化存储,即一次仅对一个布隆过滤器进行持久化存储。
可以理解的是,考虑到对布隆过滤器进行持久化存储所消耗的区块链系统资源;因此,本申请实施例中可以是每检测到区块链系统中处理预设数量笔交易,则将所创建的布隆过滤器(可能是一个也可能是多个)进行持久化存储,例如每检测到处理n笔交易同步持久化存储一次。这样可以对所进行持久化存储的布隆过滤器有一个量化的认知,因为在区块链系统中处理预设数量笔交易的时间段内,所创建的布隆过滤器的数量在极大程度上会与之相匹配。
也即,本申请实施例中没有采用每隔预设时间段对所创建的布隆过滤器进行持久化存储,因为不同时间段所创建的布隆过滤器的数量并不相同,该是没有一个量化的认知的,而基于预设数量笔交易的处理,则可以有一个量化的认知。
通常情况下,采用每检测到区块链系统中处理预设数量笔交易,则将节点运行过程中所创建的布隆过滤器进行持久化存储的方式,都是针对多个布隆过滤器进行持久化存储,这样能够最大程度上减少对布隆过滤器进行持久化存储所消耗的区块链系统资源。
可以理解的是,由于本申请实施例中提出动态创建多个布隆过滤器,考虑节点宕机后重新创建布隆过滤器的效率;因此,本申请实施例中是将区块高度与节点运行过程中所创建的布隆过滤器进行关联持久化存储。这样当节点宕机时就可以明确确定应该从哪一个区块开始重新进行交易数据的重放(即重新创建布隆过滤器,并将交易数据存储至布隆过滤中),从而可以避免不知道持久化存储的是哪些区块的交易数据,而只能从第一个区块开始重新进行交易数据的重放所导致的节点宕机后重新创建布隆过滤器的效率低的问题,由此便可以在极大程度上提升节点宕机后重新创建布隆过滤器的效率。其中,具体的进行交易数据的重放过程请参见下述实施例的介绍。
需要说明的是,图10所示中步骤S401至步骤S404的详细介绍请参见图4所示的步骤S401至步骤S404,在此不再赘述。
需要说明的是,前述实施例是从布隆过滤器的创建角度进行的阐述,下述实施例将从利用持久化存储的布隆过滤器进行交易数据的去重判断的角度进行阐述;其中,可以理解的是,在对交易数据进行去重判断的过程中也会涉及到布隆过滤器的创建。
请参阅图11,为一种示例的指定持久化存储区域中所存储的多个布隆过滤器,其中包括布隆过滤器A、布隆过滤器B,以及布隆过滤器C。在实际应用中,指定持久化存储区域中存储的布隆过滤器数量可以灵活调整。
请参阅图12,为布隆过滤器A、布隆过滤器B,以及布隆过滤器C各自所存储交易数据的情况。
请参阅图13,图13是本申请的一个实施例示出的基于区块链系统的交易数据处理方法的流程图,该基于区块链系统的交易数据处理方法可以由区块链网络302中任一节点来执行。如图13所示,该基于区块链系统的交易数据处理方法可以包括步骤S1301至步骤S1303、步骤S402至步骤S404。
步骤S1301至步骤S1303详细介绍如下:
步骤S1301,检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与标识信息相匹配的布隆过滤器。
本申请实施例中接收到交易触发方发送的交易数据,之后可以检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与标识信息相匹配的布隆过滤器的获取结果。
可选地,指定持久化存储区域中存储有带有标识区间标签的多个布隆过滤器;步骤S1301中检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与标识信息相匹配的布隆过滤器的获取结果的过程,可以包括以下步骤:
分别检测标识信息与多个布隆过滤器所对应的标识区间标签的包含情况;
若多个布隆过滤器中存在包含有标识信息的标识区间标签所对应的布隆过滤器,则得到用于表征获取到与标识信息相匹配的布隆过滤器的获取结果;
若多个布隆过滤器中不存在包含有标识信息的标识区间标签所对应的布隆过滤器,则得到用于表征未获取到与标识信息相匹配的布隆过滤器的获取结果。
举例说明,例如设交易数据中携带的标识信息为时间戳t2,指定持久化存储区域中存储有布隆过滤器A、布隆过滤器B,其中布隆过滤器A对应的时间区间标签1为[t1,t3],布隆过滤器B对应的时间区间标签2为[t4,t10];那么是分别检测时间戳t2与时间区间标签1[t1,t3]的包含情况,以及检测时间戳t2与时间区间标签2[t4,t10]的包含情况,明显地,时间戳t2包含在时间区间标签1[t1,t3]内,此时获取结果为获取到与时间戳t2相匹配的布隆过滤器A。而设交易数据中携带的标识信息为时间戳t13,明显地,此时获取结果为未获取到与时间戳t13相匹配的布隆过滤器。
或者,设交易数据中携带的标识信息为排序数量值k3,指定持久化存储区域中存储有布隆过滤器A、布隆过滤器B,其中布隆过滤器A对应的数量区间标签1为[k1,k3],布隆过滤器B对应的数量区间标签2为[k4,k10];那么是分别检测排序数量值k3与数量区间标签1[k1,k3]的包含情况,以及检测排序数量值标签k3与数量区间标签2[k4,k10]的包含情况,明显地,排序数量值k3包含在数量区间标签1[k1,k3]内,此时获取结果为获取到与排序数量值k3相匹配的布隆过滤器A。而设交易数据中携带的标识信息为排序数量值k13,明显地,此时获取结果为未获取到与排序数量值k13相匹配的布隆过滤器。
步骤S1302,若获取结果表征获取到与标识信息相匹配的布隆过滤器,则基于获取到的布隆过滤器得到交易数据是否重复的检测结果。
本申请实施例中获取结果存着着两种情况,相应地,也存在两种处理情况;其中情况一是,获取到与标识信息相匹配的布隆过滤器,则此时可以基于获取到的布隆过滤器得到交易数据是否重复的检测结果。
可选地,步骤S1302中基于获取到的布隆过滤器得到交易数据是否重复的检测结果,可以包括以下步骤:
基于获取到的布隆过滤器对交易数据进行重复性检测,得到第一检测结果;
若第一检测结果表征交易数据存在重复可能性,则将交易数据与预设交易库中含有的交易数据进行匹配,得到第二检测结果;
若第二检测结果表征交易数据与预设交易库中含有的交易数据匹配,则得到用于表征交易数据重复的检测结果;
若第二检测结果表征交易数据与预设交易库中含有的交易数据不匹配,则得到用于表征交易数据未重复的检测结果。
也即,可选实施例中基于获取到的布隆过滤器得到交易数据是否重复的检测结果,涉及到两个检测过程;过程一是,基于获取到的布隆过滤器对交易数据进行重复性检测,得到第一检测结果;过程二是,在第一检测结果表征交易数据存在重复可能性时,则将交易数据与预设交易库中含有的交易数据进行匹配,得到第二检测结果。如果第二检测结果表征交易数据与预设交易库中含有的交易数据匹配,则得到用于表征交易数据重复的检测结果;如果第二检测结果表征交易数据与预设交易库中含有的交易数据不匹配,则得到用于表征交易数据未重复的检测结果。
可选地,基于获取到的布隆过滤器对交易数据进行重复性检测,得到第一检测结果的过程,可以包括以下步骤:
通过多种哈希算法对标识信息进行计算,得到标识信息对应的多个哈希索引值;
确定所获取到的布隆过滤器中与多个哈希索引值相匹配的位置,并获取位置所填充的数值;
基于各个数值与预设重复策略的关系,得到第一检测结果。
举例说明,例如请再参阅图12,设接收到交易触发方发送的交易数据,交易数据的标识信息为tx13,且设获取与标识信息tx13相匹配的布隆过滤器为布隆过滤器A,则通过哈希算法hash1、哈希算法hash2,以及哈希算法hash3对标识信息tx13进行计算,得到标识信息tx13对应的哈希索引值0、哈希索引值2、哈希索引值6;之后就可以确定出布隆过滤器A中与哈希索引值0对应的位置0、与哈希索引值2对应的位置2,以及与哈希索引值6对应的位置6,并分别获取位置0、位置2,以及位置6所填充的数值1;之后基于所获取到的3个数值1与预设重复策略的关系,得到第一检测结果。
其中,可选实施例中基于各个数值与预设重复策略的关系,得到第一检测结果,可以包括两种情况;情况一是,若各个数值均满足预设重复策略,则得到用于表征交易数据存在重复可能性的第一检测结果;情况二是,若检测到各个数值中存在不满足预设重复策略的数值,则得到用于表征交易数据不存在重复可能性的第一检测结果。
可以理解的是,可选实施例中预设重复策略指的是用于判定交易数据是否重复的策略,具体体现在布隆过滤器中每个位置的数值。例如预设重复策略1为所有位置所填充的数值均为1时,表征该交易数据重复;或者预设重复策略2为所有位置所填充的数值均为0时,表征该交易数据重复。在实际应用中,预设重复策略可以根据具体应用场景进行灵活调整。
举例说明,例如承接前述示例,设预设重复策略为所有位置所填充的数值均为1,而所获取到的3个数值也均为1,则此时得到的是用于表征交易数据存在重复可能性的第一检测结果。如果所获取到的3个数值存在一个或多个数值不为1,则此时得到的是用于表征交易数据不存在重复可能性的第一检测结果。
可选地,步骤S1302中基于获取到的布隆过滤器得到交易数据是否重复的检测结果,可以包括以下步骤:
基于获取到的布隆过滤器对交易数据进行重复性检测,得到第三检测结果;以及
基于当前布隆过滤器对交易数据进行重复性检测,得到第四检测结果;
基于第三检测结果与第四检测结果,得到交易数据是否重复的检测结果。
也即,可选实施例中基于获取到的布隆过滤器得到交易数据是否重复的检测结果,涉及到两个检测过程;过程一是,基于获取到的布隆过滤器对交易数据进行重复性检测,得到第三检测结果(同第一检测结果);过程二是,基于当前布隆过滤器对交易数据进行重复性检测,得到第四检测结果。如果第三检测结果或者第四检测结果中存在一个表征交易数据存在重复可能性的检测结果,则得到用于表征交易数据重复的检测结果;如果第三检测结果或者第四检测结果中不存在表征交易数据存在重复可能性的检测结果,则得到用于表征交易数据未重复的检测结果。
步骤S1303,若获取结果表征未获取到与标识信息相匹配的布隆过滤器,则确定区块链系统中当前布隆过滤器的属性值。
本申请实施例中获取结果存着着两种情况,相应地,也存在两种处理情况;其中情况二是,未获取到与标识信息相匹配的布隆过滤器,则此时可以确定区块链系统中当前布隆过滤器的属性值。
需要说明的是,图13所示中步骤S402至步骤S404的详细介绍请参见图4所示的步骤S402至步骤S404,在此不再赘述。
本申请实施例中由于将布隆过滤器与标识区间标签关联存储在指定持久化存储区域中,这样可以快速从多个布隆过滤器中获取到与标识信息相匹配的布隆过滤器,进而利用该获取到的布隆过滤器进行交易数据的去重判断,而不再是基于多个布隆过滤器分别进行交易数据的去重判断,提升了交易数据的去重判断的效率。
在本申请的一个实施例中,提供了另一种基于区块链系统的交易数据处理方法,该基于区块链系统的交易数据处理方法可以由区块链网络302中任一节点来执行。如图14所示,该基于区块链系统的交易数据处理方法在图13中所示的步骤S1302之后增加了步骤S1401至步骤S1402。
步骤S1401至步骤S1402详细介绍如下:
步骤S1401,若检测到节点宕机,则从指定持久化存储区域中确定最高的区块高度。
如前述实施例中所介绍,将区块高度与节点运行过程中所创建的布隆过滤器进行关联持久化存储;因此,本申请实施例中如果检测到节点宕机,就可以从指定持久化存储区域中确定最高的区块高度,这样就可以明确最高的区块高度所对应的区块以及该区块之前的交易数据所对应的布隆过滤器都是已经存储好的,不受此次节点宕机的影响。
可选地,本申请实施例中最高的区块高度可以是获取当前时刻区块链系统中所对应的最新一个进行关联持久化存储布隆过滤器的区块高度,或者说,是进行关联持久化存储时刻最晚的一个布隆过滤器的区块高度。例如设至当前时刻为止,区块链系统中共关联持久化存储有20个布隆过滤器,其中,最晚进行关联持久化存储的布隆过滤器所对应的时刻为当前时刻的前1秒,那么该最晚进行关联持久化存储的布隆过滤器的区块高度即作为最高的区块高度。
步骤S1402,将区块高度的下一个区块高度对应的区块作为起始区块,并将起始区块中含有的交易数据作为交易数据,并跳转执行步骤检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与标识信息相匹配的布隆过滤器的获取结果,直至遍历完起始区块后的各个区块。
相应地,此次节点宕机所影响的是该区块高度之后区块的交易数据所对应的布隆过滤器,即该区块高度之后区块的交易数据所对应的布隆过滤器未进行持久化存储;因此,将该区块高度的下一个区块高度对应的区块作为起始区块,并将起始区块中含有的交易数据作为交易数据,以重新创建布隆过滤器,并将交易数据存储至布隆过滤器中。
举例说明,例如设指定持久化存储区域中存储的最高的区块高度为100,当前对应的是区块高度为110的区块,此时节点宕机,那么可以从指定持久化存储区域中确定出最高的区块高度100,则将区块高度101的区块作为起始区块,重新创建布隆过滤器并将交易数据存储至布隆过滤器中,直至遍历到区块高度110的区块。
需要说明的是,图14所示中步骤S1301至步骤S1302的详细介绍请参见图13所示的步骤S1301至步骤S1303,图14所示中步骤S402至步骤S404的详细介绍请参见图4所示的步骤S402至步骤S404,在此不再赘述。
本申请实施例中由于将区块高度与布隆过滤器关联存储在指定持久化存储区域中,这样在节点出现宕机的情况下,就可以通过指定持久化存储区域中所存储的最高的区块高度,进行小部分布隆过滤器的创建,提升了布隆过滤器重新创建的效率,极大优化了区块链中关于交易去重的性能。
以下对本申请实施例的一个具体应用场景进行详细说明:
首先,介绍交易数据的重复检测过程:
请参阅图15,图15是本申请的一个实施例示出的基于区块链系统的交易数据处理方法的流程图。如图15所示,该基于区块链系统的交易数据处理方法至少包括步骤S1501至步骤S1515,详细介绍如下:
步骤S1501,接收交易触发方发送的携带有标识信息的交易数据。
其中,标识信息是与交易数据的触发生成过程相对应的数据。
步骤S1502,检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与标识信息相匹配的布隆布隆过滤器的获取结果。
可选地,指定持久化存储区域中存储有多个带有标识区间标签的布隆过滤器。
步骤S1503,获取结果是否表征获取到与标识信息相匹配的布隆过滤器;若是,则执行步骤S1504,若否,则执行步骤S1512。
可选地,分别检测标识信息与多个布隆过滤器所对应的标识区间标签的包含情况。其中,若标识区间标签是时间区间标签,且标识信息是交易数据被触发生成时所对应的时间戳,则是分别检测时间戳与多个布隆过滤器所对应的时间区间标签的包含情况。其中,若标识区间标签是数量区间标签,且标识信息是交易数据被触发生成时所对应的排序数量值,则是分别检测排序数量值与多个布隆过滤器所对应的数量区间标签的包含情况。
步骤S1504,通过多种哈希算法对标识信息进行计算,得到标识信息对应的多个哈希索引值。
步骤S1505,确定布隆过滤器中与多个哈希索引值相匹配的位置,并获取位置所填充的数值。
步骤S1506,检测各个数值是否均为1;若是,则执行步骤S1507,若否,则执行步骤S1508。
其中,步骤S1504至步骤S1506是基于布隆过滤器对交易数据进行重复性检测的过程。
步骤S1507,检测交易数据是否与预设交易库中含有的交易数据匹配;若是,则执行步骤S1510,若否,则执行步骤S1512。
其中,步骤S1507是基于预设交易库对交易数据进行进一步的重复性检测的过程。
步骤S1508,将位置所填充的数值全部更新为1。
可选地,确定交易数据未重复时,将交易数据存储至布隆过滤器(可能是新生成的布隆过滤器也可能是当前布隆过滤器)中。
步骤S1509,更新布隆过滤器的承载率。
可选地,更新布隆过滤器的承载率,便于后期的使用。
步骤S1510,确定交易数据重复,拒绝将交易数据添加到区块链交易池中。
步骤S1511,确定交易数据未重复,则更新布隆过滤器的误判率。
可选地,更新布隆过滤器的误判率,便于后期的使用。
步骤S1512,检测当前布隆过滤器的承载率或误判率是否达到预设上限阈值;若是,则执行步骤S1513,若否,则执行步骤S1514。
步骤S1513,用标识信息替换当前布隆过滤器对应的标识区间终止值。
步骤S1514,创建新的布隆过滤器。
步骤S1515,将标识信息作为新的布隆过滤器对应的标识区间初始值。
需要说明的是,图15所示中步骤S1501至步骤S1515的详细介绍请参见前述实施例的介绍,在此不再赘述。
其次,介绍节点宕机后布隆过滤器重新创建的过程:
请参阅图16,图16是本申请的一个实施例示出的基于区块链系统的交易数据处理方法的流程图。如图16所示,该基于区块链系统的交易数据处理方法至少包括步骤S1601至步骤S1603,详细介绍如下:
步骤S1601,获取指定持久化存储区域中最高的区块高度。
步骤S1602,将区块高度的下一个区块高度对应的区块作为起始区块,将起始区块中含有的交易数据作为交易数据。
步骤S1603,检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与标识信息相匹配的布隆过滤器的获取结果。
步骤S1604,获取结果是否表征获取到与标识信息相匹配的布隆过滤器;若是,则执行步骤S1605,若否,则执行步骤S1608。
步骤S1605,通过多种哈希算法对交易的标识信息进行计算,得到标识信息对应的多个哈希索引值。
步骤S1606,确定布隆过滤器中与多个哈希索引值相匹配的位置,并获取位置所填充的数值。
步骤S1607,对各个位置填充数值1。
步骤S1608,检测当前布隆过滤器的承载率或误判率是否达到预设上限阈值;若是,则执行步骤S1609,若否,则执行步骤S1610。
步骤S1609,用标识信息替换当前布隆过滤器对应的标识区间终止值。
步骤S1610,创建新的布隆过滤器。
步骤S1611,将标识信息作为新的布隆过滤器对应的标识区间初始值。
本申请实施例中,在节点出现宕机的情况下,可以通过指定持久化存储区域中所存储的最高的区块高度,进行小部分布隆过滤器的创建,提升了布隆过滤器重新创建的效率,极大优化了区块链中关于交易去重的性能。
图17是本申请的一个实施例示出的基于区块链系统的交易数据处理装置的框图。如图17所示,该基于区块链系统的交易数据处理装置包括:
第一确定模块1701,配置为若接收到交易触发方发送的交易数据,则确定区块链系统中当前布隆过滤器的属性值;
第二确定模块1702,配置为基于属性值与预设属性阈值之间的关系,确定当前布隆过滤器的存储状态;
创建与确定模块1703,配置为若存储状态表征不能继续存储交易数据,则创建新的布隆过滤器,并基于交易数据的标识信息,确定新的布隆过滤器的标识区间初始值;其中,标识信息是与交易数据的触发生成过程相对应的数据;
存储模块1704,配置为将交易数据存储至带有标识区间初始值的新的布隆过滤器中。
在本申请的一个实施例中,第二确定模块1702,具体配置为:
将属性值与预设属性阈值进行比较;
若属性值达到预设属性阈值,则得到用于表征不能继续存储交易数据的存储状态;
若属性值未达到预设属性阈值,则得到用于表征能够继续存储交易数据的存储状态。
在本申请的一个实施例中,属性值包括存储率;第一确定模块1701,具体配置为:
获取当前布隆过滤器在创建过程中被分配的存储空间;以及
获取当前布隆过滤器当前被占用的存储空间;
基于被分配的存储空间与被占用的存储空间,确定区块链系统中当前布隆过滤器的存储率。
在本申请的一个实施例中,属性值包括错误判定率;第一确定模块1701,具体配置为:
获取当前布隆过滤器针对存储过程中交易数据是否存在重复可能性的总判定次数,以及错误判定次数;其中,总判定次数与错误判定次数都是从当前布隆过滤器创建时刻起进行统计得到的;
基于总判定次数与错误判定次数,确定区块链系统中当前布隆过滤器的错误判定率。
在本申请的一个实施例中,标识信息是交易数据被触发生成时所对应的时间戳;创建与确定模块1703,具体配置为:
将时间戳作为新的布隆过滤器的标识区间初始值;
或者,
标识信息是交易数据被触发生成时所对应的排序数量值;创建与确定模块1703,具体配置为:
将排序数量值作为新的布隆过滤器的标识区间初始值。
在本申请的一个实施例中,存储模块1704,具体配置为:
通过多种哈希算法对标识信息进行计算,得到标识信息对应的多个哈希索引值;
确定新的布隆过滤器中与多个哈希索引值相匹配的位置;
对各个位置进行指定数值填充,以实现交易数据的存储。
在本申请的一个实施例中,装置还包括:
更新模块,配置为若存储状态表征能够继续存储交易数据,则基于标识信息,更新当前布隆过滤器的标识区间终止值;
存储模块1704,还配置为将交易数据存储至带有标识区间终止值的当前布隆过滤器中。
在本申请的一个实施例中,装置还包括:
获取模块,配置为若存储状态表征不能继续存储交易数据,则获取当前布隆过滤器的标识区间初始值和标识区间终止值;其中,标识区间初始值与标识区间终止值都是基于当前布隆过滤器所存储的交易数据的标识信息确定的;
作为模块,配置为将标识区间初始值和标识区间终止值作为当前布隆过滤器的标识区间标签;
第一持久化存储模块,配置为将当前布隆过滤器与当前布隆过滤器的标识区间标签进行关联持久化存储。
在本申请的一个实施例中,装置还包括:
第二持久化存储模块,配置为若每检测到区块链系统中新生成预设数量个区块,则将节点运行过程中所创建的布隆过滤器进行持久化存储;
或者,
第三持久化存储模块,配置为若每检测到区块链系统中处理预设数量笔交易,则将节点运行过程中所创建的布隆过滤器进行持久化存储。
在本申请的一个实施例中,第二持久化存储模块或第三持久化存储模块,具体配置为:
获取区块链系统中最新区块的区块高度;
将区块高度与节点运行过程中所创建的布隆过滤器进行关联持久化存储。
在本申请的一个实施例中,第一确定模块1701,包括:
检测单元,配置为检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与标识信息相匹配的布隆过滤器的获取结果;
第一获得单元,配置为若获取结果表征获取到与标识信息相匹配的布隆过滤器,则基于获取到的布隆过滤器得到交易数据是否重复的检测结果;
第二获得单元,配置为若获取结果表征未获取到与标识信息相匹配的布隆过滤器,则确定区块链系统中当前布隆过滤器的属性值。
在本申请的一个实施例中,指定持久化存储区域中存储有带有标识区间标签的多个布隆过滤器;检测单元,具体配置为:
分别检测标识信息与多个布隆过滤器所对应的标识区间标签的包含情况;
若多个布隆过滤器中存在包含有标识信息的标识区间标签所对应的布隆过滤器,则得到用于表征获取到与标识信息相匹配的布隆过滤器的获取结果;
若多个布隆过滤器中不存在包含有标识信息的标识区间标签所对应的布隆过滤器,则得到用于表征未获取到与标识信息相匹配的布隆过滤器的获取结果。
在本申请的一个实施例中,检测单元,还具体配置为:
基于获取到的布隆过滤器对交易数据进行重复性检测,得到第一检测结果;
若第一检测结果表征交易数据存在重复可能性,则将交易数据与预设交易库中含有的交易数据进行匹配,得到第二检测结果;
若第二检测结果表征交易数据与预设交易库中含有的交易数据匹配,则得到用于表征交易数据重复的检测结果;
若第二检测结果表征交易数据与预设交易库中含有的交易数据不匹配,则得到用于表征交易数据未重复的检测结果。
在本申请的一个实施例中,检测单元,还具体配置为:
通过多种哈希算法对标识信息进行计算,得到标识信息对应的多个哈希索引值;
确定所获取到的布隆过滤器中与多个哈希索引值相匹配的位置,并获取位置所填充的数值;
基于各个数值与预设重复策略的关系,得到第一检测结果。
在本申请的一个实施例中,检测单元,还具体配置为:
若各个数值均满足预设重复策略,则得到用于表征交易数据存在重复可能性的第一检测结果;
若检测到各个数值中存在不满足预设重复策略的数值,则得到用于表征交易数据不存在重复可能性的第一检测结果。
在本申请的一个实施例中,检测单元,具体配置为:
基于获取到的布隆过滤器对交易数据进行重复性检测,得到第三检测结果;以及
基于当前布隆过滤器对交易数据进行重复性检测,得到第四检测结果;
基于第三检测结果与第四检测结果,得到交易数据是否重复的检测结果。
在本申请的一个实施例中,装置还包括:
第三确定模块,配置为若检测到节点宕机,则从指定持久化存储区域中确定最高的区块高度;
执行模块,配置为将区块高度的下一个区块高度对应的区块作为起始区块,并将起始区块中含有的交易数据分别作为交易数据,并跳转执行步骤检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与标识信息相匹配的布隆过滤器的获取结果,直至遍历完起始区块后的各个区块。
需要说明的是,前述实施例所提供的装置与前述实施例所提供的方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述。
本申请的实施例还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得电子设备实现如前的基于区块链系统的交易数据处理方法。
图18是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图18示出的电子设备的计算机系统1800仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图18所示,计算机系统1800包括中央处理单元(Centra lProcessing Unit,CPU)1801,其可以根据存储在只读存储器(Read-Only Memory,ROM)1802中的程序或者从存储部分1808加载到随机访问存储器(Random Access Memory,RAM)1803中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 1803中,还存储有系统操作所需的各种程序和数据。CPU 1801、ROM 1802以及RAM 1803通过总线1804彼此相连。输入/输出(Input/Output,I/O)接口1805也连接至总线1804。
以下部件连接至I/O接口1805:包括键盘、鼠标等的输入部分1806;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crysta lDisplay,LCD)等以及扬声器等的输出部分1807;包括硬盘等的存储部分1808;以及包括诸如LAN(Loca lAreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1809。通信部分1809经由诸如因特网的网络执行通信处理。驱动器1810也根据需要连接至I/O接口1805。可拆卸介质1811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1810上,以便于从其上读出的计算机程序根据需要被安装入存储部分1808。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1809从网络上被下载和安装,和/或从可拆卸介质1811被安装。在该计算机程序被中央处理单元(CPU)1801执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不相同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本申请的另一方面还提供了一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前所述的基于区块链系统的交易数据处理方法。该计算机可读介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读介质中。计算机设备的处理器从计算机可读介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的基于区块链系统的交易数据处理方法。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术人员根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。
Claims (20)
1.一种基于区块链系统的交易数据处理方法,其特征在于,所述方法包括:
若接收到交易触发方发送的交易数据,则确定所述区块链系统中当前布隆过滤器的属性值;
基于所述属性值与预设属性阈值之间的关系,确定所述当前布隆过滤器的存储状态;
若所述存储状态表征不能继续存储交易数据,则创建新的布隆过滤器,并基于所述交易数据的标识信息,确定所述新的布隆过滤器的标识区间初始值;其中,所述标识信息是与所述交易数据的触发生成过程相对应的数据;
将所述交易数据存储至带有所述标识区间初始值的新的布隆过滤器中。
2.如权利要求1所述的方法,其特征在于,所述基于所述属性值与预设属性阈值之间的关系,确定所述当前布隆过滤器的存储状态,包括:
将所述属性值与所述预设属性阈值进行比较;
若所述属性值达到所述预设属性阈值,则得到用于表征不能继续存储交易数据的存储状态;
若所述属性值未达到所述预设属性阈值,则得到用于表征能够继续存储交易数据的存储状态。
3.如权利要求1所述的方法,其特征在于,所述属性值包括存储率;所述确定所述区块链系统中当前布隆过滤器的属性值,包括:
获取所述当前布隆过滤器在创建过程中被分配的存储空间;以及
获取所述当前布隆过滤器当前被占用的存储空间;
基于所述被分配的存储空间与所述被占用的存储空间,确定所述区块链系统中当前布隆过滤器的存储率。
4.如权利要求1所述的方法,其特征在于,所述属性值包括错误判定率;所述确定所述区块链系统中当前布隆过滤器的属性值,包括:
获取所述当前布隆过滤器针对存储过程中交易数据是否存在重复可能性的总判定次数,以及错误判定次数;其中,所述总判定次数与所述错误判定次数都是从所述当前布隆过滤器创建时刻起进行统计得到的;
基于所述总判定次数与所述错误判定次数,确定所述区块链系统中当前布隆过滤器的错误判定率。
5.如权利要求1所述的方法,其特征在于,所述标识信息是所述交易数据被触发生成时所对应的时间戳;所述基于所述交易数据的标识信息,确定所述新的布隆过滤器的标识区间初始值,包括:
将所述时间戳作为所述新的布隆过滤器的标识区间初始值;
或者,
所述标识信息是所述交易数据被触发生成时所对应的排序数量值;所述基于所述交易数据的标识信息,确定所述新的布隆过滤器的标识区间初始值,包括:
将所述排序数量值作为所述新的布隆过滤器的标识区间初始值。
6.如权利要求1所述的方法,其特征在于,所述将所述交易数据存储至带有所述标识区间初始值的新的布隆过滤器中,包括:
通过多种哈希算法对所述标识信息进行计算,得到所述标识信息对应的多个哈希索引值;
确定所述新的布隆过滤器中与所述多个哈希索引值相匹配的位置;
对各个位置进行指定数值填充,以实现所述交易数据的存储。
7.如权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
若所述存储状态表征能够继续存储交易数据,则基于所述标识信息,更新所述当前布隆过滤器的标识区间终止值;
将所述交易数据存储至带有所述标识区间终止值的当前布隆过滤器中。
8.如权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
若所述存储状态表征不能继续存储交易数据,则获取所述当前布隆过滤器的标识区间初始值和标识区间终止值;其中,所述标识区间初始值与所述标识区间终止值都是基于所述当前布隆过滤器所存储的交易数据的标识信息确定的;
将所述标识区间初始值和标识区间终止值作为所述当前布隆过滤器的标识区间标签;
将所述当前布隆过滤器与所述当前布隆过滤器的标识区间标签进行关联持久化存储。
9.如权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
若每检测到所述区块链系统中新生成预设数量个区块,则将节点运行过程中所创建的布隆过滤器进行持久化存储;
或者,
若每检测到所述区块链系统中处理预设数量笔交易,则将节点运行过程中所创建的布隆过滤器进行持久化存储。
10.如权利要求9所述的方法,其特征在于,所述将节点运行过程中所创建的布隆过滤器进行持久化存储,包括:
获取所述区块链系统中最新区块的区块高度;
将所述区块高度与所述节点运行过程中所创建的布隆过滤器进行关联持久化存储。
11.如权利要求1至6中任一项所述的方法,其特征在于,所述确定所述区块链系统中当前布隆过滤器的属性值,包括:
检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与所述标识信息相匹配的布隆过滤器的获取结果;
若所述获取结果表征获取到与所述标识信息相匹配的布隆过滤器,则基于获取到的布隆过滤器得到所述交易数据是否重复的检测结果;
若所述获取结果表征未获取到与所述标识信息相匹配的布隆过滤器,则确定所述区块链系统中当前布隆过滤器的属性值。
12.如权利要求11所述的方法,其特征在于,所述指定持久化存储区域中存储有带有标识区间标签的多个布隆过滤器;所述检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与所述标识信息相匹配的布隆过滤器的获取结果,包括:
分别检测所述标识信息与所述多个布隆过滤器所对应的标识区间标签的包含情况;
若所述多个布隆过滤器中存在包含有所述标识信息的标识区间标签所对应的布隆过滤器,则得到用于表征获取到与所述标识信息相匹配的布隆过滤器的获取结果;
若所述多个布隆过滤器中不存在包含有所述标识信息的标识区间标签所对应的布隆过滤器,则得到用于表征未获取到与所述标识信息相匹配的布隆过滤器的获取结果。
13.如权利要求11所述的方法,其特征在于,所述基于获取到的布隆过滤器得到所述交易数据是否重复的检测结果,包括:
基于获取到的布隆过滤器对所述交易数据进行重复性检测,得到第一检测结果;
若所述第一检测结果表征所述交易数据存在重复可能性,则将所述交易数据与预设交易库中含有的交易数据进行匹配,得到第二检测结果;
若所述第二检测结果表征所述交易数据与所述预设交易库中含有的交易数据匹配,则得到用于表征所述交易数据重复的检测结果;
若所述第二检测结果表征所述交易数据与所述预设交易库中含有的交易数据不匹配,则得到用于表征所述交易数据未重复的检测结果。
14.如权利要求13所述的方法,其特征在于,所述基于获取到的布隆过滤器对所述交易数据进行重复性检测,得到第一检测结果,包括:
通过多种哈希算法对所述标识信息进行计算,得到所述标识信息对应的多个哈希索引值;
确定所获取到的布隆过滤器中与所述多个哈希索引值相匹配的位置,并获取所述位置所填充的数值;
基于各个数值与预设重复策略的关系,得到所述第一检测结果。
15.如权利要求14所述的方法,其特征在于,所述基于各个数值与预设重复策略的关系,得到所述第一检测结果,包括:
若各个数值均满足所述预设重复策略,则得到用于表征所述交易数据存在重复可能性的第一检测结果;
若检测到各个数值中存在不满足所述预设重复策略的数值,则得到用于表征所述交易数据不存在重复可能性的第一检测结果。
16.如权利要求11所述的方法,其特征在于,所述基于获取到的布隆过滤器得到所述交易数据是否重复的检测结果,包括:
基于获取到的布隆过滤器对所述交易数据进行重复性检测,得到第三检测结果;以及
基于当前布隆过滤器对所述交易数据进行重复性检测,得到第四检测结果;
基于所述第三检测结果与所述第四检测结果,得到所述交易数据是否重复的检测结果。
17.如权利要求11所述的方法,其特征在于,所述方法还包括:
若检测到节点宕机,则从所述指定持久化存储区域中确定最高的区块高度;
将所述区块高度的下一个区块高度对应的区块作为起始区块,并将所述起始区块中含有的交易数据分别作为所述交易数据,并跳转执行步骤检测从指定持久化存储区域所存储的带有标识区间标签的布隆过滤器中,获取与所述标识信息相匹配的布隆过滤器的获取结果,直至遍历完所述起始区块后的各个区块。
18.一种基于区块链系统的交易数据处理装置,其特征在于,所述装置包括:
第一确定模块,配置为若接收到交易触发方发送的交易数据,则确定所述区块链系统中当前布隆过滤器的属性值;
第二确定模块,配置为基于所述属性值与预设属性阈值之间的关系,确定所述当前布隆过滤器的存储状态;
创建与确定模块,配置为若所述存储状态表征不能继续存储交易数据,则创建新的布隆过滤器,并基于所述交易数据的标识信息,确定所述新的布隆过滤器的标识区间初始值;其中,所述标识信息是与所述交易数据的触发生成过程相对应的数据;
存储模块,配置为将所述交易数据存储至带有所述标识区间初始值的新的布隆过滤器中。
19.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述电子设备执行时,使得所述电子设备实现如权利要求1至17中任一项所述的基于区块链系统的交易数据处理方法。
20.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至17中任一项所述的基于区块链系统的交易数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210618245.5A CN117194392A (zh) | 2022-05-30 | 2022-05-30 | 基于区块链系统的交易数据处理方法及装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210618245.5A CN117194392A (zh) | 2022-05-30 | 2022-05-30 | 基于区块链系统的交易数据处理方法及装置、设备、介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117194392A true CN117194392A (zh) | 2023-12-08 |
Family
ID=89002225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210618245.5A Pending CN117194392A (zh) | 2022-05-30 | 2022-05-30 | 基于区块链系统的交易数据处理方法及装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117194392A (zh) |
-
2022
- 2022-05-30 CN CN202210618245.5A patent/CN117194392A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170031948A1 (en) | File synchronization method, server, and terminal | |
US20190140902A1 (en) | Centralized configuration data in a distributed file system | |
CN106933550B (zh) | 全局信息获取、处理及更新方法、装置和系统 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN101771723A (zh) | 数据同步方法 | |
CN109857723B (zh) | 基于可扩容数据库集群的动态数据迁移方法及相关设备 | |
CN112685499A (zh) | 一种工作业务流的流程数据同步方法、装置及设备 | |
CN101778131A (zh) | 数据同步系统 | |
CN101789963A (zh) | 数据同步系统 | |
US10853892B2 (en) | Social networking relationships processing method, system, and storage medium | |
CN109614271A (zh) | 多个集群数据一致性的控制方法、装置、设备及存储介质 | |
CN111414356A (zh) | 数据存储方法、装置、非关系数据库系统及存储介质 | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN111274004B (zh) | 进程实例管理方法、装置及计算机存储介质 | |
CN116304390B (zh) | 时序数据处理方法、装置、存储介质及电子设备 | |
CN117194392A (zh) | 基于区块链系统的交易数据处理方法及装置、设备、介质 | |
US10728323B2 (en) | Method and apparatus for operating infrastructure layer in cloud computing architecture | |
CN107526530B (zh) | 数据处理方法和设备 | |
CN116186082A (zh) | 基于分布式的数据汇总方法、第一服务器和电子设备 | |
CN116107801A (zh) | 交易处理方法及相关产品 | |
CN113849273A (zh) | 接入处理的方法、设备、存储介质及程序产品 | |
CN109525649B (zh) | 一种zookeeper客户端的数据处理方法及装置 | |
CN115373831A (zh) | 数据处理方法、装置以及计算机可读存储介质 | |
CN107704557B (zh) | 操作互斥数据的处理方法、装置、计算机设备和存储介质 | |
CN112738153A (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 |