CN116628285B - 区块链交易数据查询方法及装置 - Google Patents
区块链交易数据查询方法及装置 Download PDFInfo
- Publication number
- CN116628285B CN116628285B CN202310901218.3A CN202310901218A CN116628285B CN 116628285 B CN116628285 B CN 116628285B CN 202310901218 A CN202310901218 A CN 202310901218A CN 116628285 B CN116628285 B CN 116628285B
- Authority
- CN
- China
- Prior art keywords
- block
- transaction
- bloom filter
- target
- attribute
- 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
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000013500 data storage Methods 0.000 claims abstract description 15
- 238000005457 optimization Methods 0.000 claims description 40
- 239000013598 vector Substances 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 6
- 239000000284 extract Substances 0.000 claims description 3
- 230000006870 function Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 240000002044 Rhizophora apiculata Species 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Computational Linguistics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种区块链交易数据查询方法及装置,方法包括:根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块;从目标区块对应的预存储在区块链网络内的属性红黑树索引中,查找交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取交易查询关键字对应的交易数据。本申请能够在降低区块链网络中节点数据存储压力的基础上,有效提高区块链交易数据查询的效率及可靠性,能够有效降低区块链交易数据查询的时间成本和资源成本。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及区块链交易数据查询方法及装置。
背景技术
区块链网络因其具有的可追溯、不可篡改的特性,广泛应用于金融、政务、教育等众多领域,尤其可以作为金融交易的数据存储载体。随着区块链的普及和应用范围的扩大,每个区块链节点上存储的数据量也在增加。除了在所有节点中完全备份相同的区块数据外,还存储状态数据、索引数据等信息,以提高节点链上内容的查询速度。使得节点存储对资源的消耗越来越大。因此,可以采用链上链下结合的方式来解决这一问题。
目前,现有的链上链下交易数据存储方式,链上数据被存储在区块链系统中,按照区块结构组织;而大规模的交易数据则由链下数据库管理,存储在链下数据库文件中。为了对链下数据的查询进行优化,交易数据保存在链下数据库中,将数据索引储存在区块链上。
然而,现有的链上链下交易数据存储方式虽然可以降低区块链中节点的存储压力,但在进行查询操作时,需要通过单一的查询方式遍历区块链网络中的通过单一通过键值对数据库构建的索引,由于链下交易数据量巨大,遍历其对应的索引也需要耗费较长的时间和资源,这也造成了区块链交易数据查询技术面临的查询效率低下的问题。
发明内容
鉴于此,本申请实施例提供了区块链交易数据查询方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷。
本申请的一个方面提供了一种区块链交易数据查询方法,包括:
根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块;
从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据。
在本申请的一些实施例中,在所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块之前,还包括:
接收针对区块链网络的交易数据查询请求,其中,该交易数据查询请求中包含有目标交易属性值;
判断所述交易数据查询请求中是否还包含有查询时间范围,若否,则将所述目标交易属性值作为当前的交易查询关键字;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块,包括:
根据预存储在区块链网络中的布隆过滤器索引对应的各个多区块布隆过滤器,确定当前的目标交易属性值对应的区块范围,其中,所述布隆过滤器索引包括多个所述多区块布隆过滤器和多个单区块布隆过滤器,各个所述多区块布隆过滤器之间各自对应的各个区块不同,各个所述单区块布隆过滤器之间各自对应的单个区块也不同,所述区块范围中包含有至少一个区块的唯一标识;
根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块。
在本申请的一些实施例中,在所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块之前,还包括:
若经判断获知所述交易数据查询请求中还包含有查询时间范围,则将所述目标交易属性值和所述查询时间范围作为当前的交易查询关键字;
自预存储在所述区块链网络内的时间红黑树索引中查询所述查询时间范围对应的区块范围,其中,所述时间红黑树索引用于存储各个时间戳与各个所述区块的唯一标识之间的对应关系;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块,包括:
根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块。
在本申请的一些实施例中,所述多区块布隆过滤器用于存储多个区块的唯一标识和各个交易优化属性值之间的对应关系;所述单区块布隆过滤器用于存储单个所述区块的唯一标识和各个交易优化属性值之间的对应关系;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引对应的各个多区块布隆过滤器,确定当前的目标交易属性值对应的区块范围,包括:
基于预设的布隆过滤器属性优化规则,生成所述目标交易属性值对应的目标交易优化属性值;
在各个多区块布隆过滤器中查找所述目标交易优化属性值对应的区块范围;
相对应的,所述根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块,包括:
在所述区块范围中的各个区块分别对应的单区块布隆过滤器中,查找所述目标交易优化属性值对应的目标区块。
在本申请的一些实施例中,所述布隆过滤器属性优化规则包括:
若交易属性为交易哈希值,则生成与该交易属性相同的交易优化属性值;
若交易属性为所述交易数据查询请求对应的发送用户地址,则在该发送用户地址之前增加发送标识,以作为该交易属性对应的交易优化属性值;
若交易属性为所述交易数据查询请求对应的接收用户地址,则在该接收用户地址之前增加接收标识,以作为该交易属性对应的交易优化属性值;
若交易属性为交易金额,则根据该交易金额所属的数值范围选取该数值范围对应的桶,并基于该桶的桶标识生成所述交易属性对应的交易优化属性值。
在本申请的一些实施例中,所述属性红黑树索引用于存储唯一对应的区块的各个交易属性值和各个链下地址信息之间的对应关系,每个所述链下地址信息中均包含有:以链表形式存储的至少一个数据库文件中的交易数据存储地址;
相对应的,所述从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据,包括:
从所述目标区块对应的预存储在所述区块链网络中的属性红黑树索引中,查找所述目标交易属性值对应的链表;
将所述链表中包含有的各个数据库文件中的交易数据存储地址均发送至所述交易数据查询请求的发出方,以使该发出方根据所述链表中包含有的各个数据库文件中的交易数据存储地址自对应的数据库中提取所述目标交易属性值对应的交易数据。
在本申请的一些实施例中,还包括:
根据交易数据更新结果在区块链网络中实时更新所述布隆过滤器索引、属性红黑树索引和时间红黑树索引。
在本申请的一些实施例中,还包括:
将所述布隆过滤器索引对应的列向量转化为字符串,并对该字符串进行加密以得到该布隆过滤器的哈希值,在所述区块链网络中的各个区块的区块头中均存储前一区块中的所述布隆过滤器的哈希值以作为所述布隆过滤器索引的安全性验证值;
和/或,基于所述时间红黑树索引和所述属性红黑树索引中各自的节点的键值对,分别采用所述布隆过滤器和所述数据库,对所述时间红黑树索引和所述属性红黑树索引进行安全性验证。
本申请的另一个方面提供了一种区块链交易数据查询装置,包括:
布隆过滤器查询模块,用于根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块;
属性红黑树查询模块,用于从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据。
本申请的第三个方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的区块链交易数据查询方法。
本申请的第四个方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的区块链交易数据查询方法。
本申请提供的区块链交易数据查询方法,根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块;从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据,为区块链交易数据建立基于红黑树和布隆过滤器的索引,通过使用索引对于链下数据库中大量的交易数据进行查询的优化,能够在降低区块链网络中节点数据存储压力的基础上,有效提高区块链交易数据查询的效率及可靠性,使得区块链的查询更加高效且支持多种类型的查询方式,能够有效降低区块链交易数据查询的时间成本和资源成本,进而能够保证区块链网络的运行稳定性及可靠性。
本申请的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本申请的实践而获知。本申请的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本申请实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本申请能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。附图中的部件不是成比例绘制的,而只是为了示出本申请的原理。为了便于示出和描述本申请的一些部分,附图中对应部分可能被放大,即,相对于依据本申请实际制造的示例性装置中的其它部件可能变得更大。在附图中:
图1为本申请一实施例中的区块链交易数据查询方法的第一种流程示意图。
图2为本申请一实施例中的区块链交易数据查询方法的第二种流程示意图。
图3为本申请一举例中的布隆过滤器索引的结构示意图。
图4为本申请另一举例中的时间红黑树索引的结构示意图。
图5为本申请一实施例中的区块链交易数据查询方法的第三种流程示意图。
图6为本申请另一举例中的属性红黑树索引的结构示意图。
图7为本申请另一举例中的属性红黑树索引中的链表举例示意图。
图8为本申请应用实例中的层次索引查询的流程示意图。
图9为本申请应用实例中的查询性能测的测试结果示意图。
图10为本申请一实施例中的区块链交易数据查询装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本申请做进一步详细说明。在此,本申请的示意性实施方式及其说明用于解释本申请,但并不作为对本申请的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本申请,在附图中仅仅示出了与根据本申请的方案密切相关的结构和/或处理步骤,而省略了与本申请关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本申请的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
区块链技术是一种可追溯的、去中心化的、安全的分布式技术。因其可追溯性和不可篡改性现在已经广泛应用于金融、政务、教育等众多领域。可以理解的是,区块链是由许多区块组成的链式结构,在区块中包含区块头和区块体。区块头包含区块中一些元数据和同时还有指向前一个块的哈希指针,区块体包含交易的数据。这种结构使得区块链具有可追溯、不可篡改的特性。每个网络中的节点并参与到交易的验证和处理中,而且所有的节点都有相同的副本,这意味着没有一个中心化的机构可以独自控制整个网络,这也是区块链去中心化特性的体现。
然而随着区块链的普及和应用范围的扩大,每个区块链节点上存储的数据量也在增加。这些数据需要在每个节点上进行存储和同步,给存储带来了压力。这种多节点高冗余机制一方面给区块链带来了全网数据及时共享、及时更新和一致的优势,但同时也带来了节点存储信息爆炸的问题。除了在所有节点中完全备份相同的区块数据外,还存储状态数据、索引数据等信息,以提高节点链上内容的查询速度。因此,节点存储对资源的消耗越来越大。由于区块链中的数据只是添加不会涉及到删除操作,因此运行时间越长,节点的负载就越高。当进行查询操作时,需要遍历整个区块链,并从中找到所需的数据。由于区块链数据量巨大,这种遍历操作的时间和资源成本非常高,这也造成了区块链技术面临的存取效率低下的问题。
同时,现有的区块链支持的查询方式较为单一,只能支持简单的访问方式。现有的区块链技术提供的索引机制,仅支持基于区块号、区块哈希的数据检索和对于交易哈希的检索。例如,在基于区块链的金融交易系统中,区块数据使用文件的形式进行存储。其中使用的索引,是通过key-value数据库Level DB构建的,在进行交易查询时。索引的键为交易哈希或区块号,值为区块链文件名和所对应交易在文件中的偏移量。因此在进行例如某属性值的范围查询时,还需要遍历整个区块链结构,筛选出符合条件的交易,查询的效率较低。
因此,当前的区块链技术自身存在着节点存储压力大、存取效率低、查询方式单一的问题。现在常用的方法采用链上链下结合的方式,链上数据被存储在区块链系统中,按照区块结构组织。大规模数据则由链下数据库管理,存储在链下数据库文件中。为了对链下数据的查询进行优化,交易数据保存在链下数据库中,将数据索引储存在区块链上。然而,现有的链上链下交易数据存储方式虽然可以降低区块链中节点的存储压力,但在进行查询操作时,需要通过单一的查询方式遍历区块链网络中的通过单一通过键值对数据库构建的索引,由于链下交易数据量巨大,遍历其对应的索引也需要耗费较长的时间和资源,这也造成了区块链交易数据查询技术面临的查询效率低下的问题。
基于此,为了在降低区块链网络中节点数据存储压力的基础上,有效提高区块链交易数据查询的效率及可靠性,本申请实施例分别提供一种区块链交易数据查询方法、用于执行该区块链交易数据查询方法的区块链交易数据查询装置、实体设备和计算机可读存储介质,通过对于链下数据库文件的查询进行优化,使得区块链的查询更加高效。
具体通过下述实施例进行详细说明。
基于此,本申请实施例提供一种可由区块链交易数据查询装置实现的区块链交易数据查询方法,参见图1,所述区块链交易数据查询方法具体包含有如下内容:
步骤100:根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块。
在本申请的一个或多个实施例中,布隆过滤器索引是指以布隆过滤器的数据结构构建得到的索引,布隆过滤器索引还可以具体称为基于属性的布隆过滤器索引。
可以理解的是,布隆过滤器(Bloom Filter)是一种空间效率极高的随机数据结构,它具体的储存结构是通过位向量的方式。利用位向量简洁地表示一个集合,并能够判断一个元素是否属于该集合。布隆过滤器是一种基于多哈希函数映射的数据结构,将数据同多个hash(哈希)函数运算后映射到一个初始化为全0的 m (m大于1)维位向量中,相比于传统的比较模式而言,大幅减小了匹配存储空间及比较时间,对于数据量较大的查询有着较大优势。与常用的二叉树、哈希表、链表相比,由于其本身并不储存数据本身,布隆过滤器占的空间较小。同时对于查询的时间复杂度而言,布隆过滤器的时间复杂度O(k)为常数级别,其仅与使用的哈希函数数量有关。
在本申请的一个或多个实施例中,交易查询关键字是指当前待进行交易数据查询的特征信息,且交易查询关键字中至少包含有一种目标交易属性值。可以理解的是,目标交易属性值是指当前待查询的一个交易属性值,且目标交易属性值和交易属性值均是指交易属性的具体数值。
其中,所述交易属性可以根据实际应用需要设置成任意分类,例如,所述交易属性的类型可以包含有:交易哈希值、交易数据查询请求对应的发送用户地址、交易数据查询请求对应的接收用户地址以及交易金额等等,进而提高用户进行区块链交易数据查询的选择多样性,使得区块链交易数据的查询能够支持多种类型的查询方式。
步骤200:从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据。
在步骤200中,属性红黑树索引具体是指基于属性的红黑树索引,该红黑树索引是指采用红黑树这种数据结构来构建得到的索引。
可以理解的是,红黑树是一种自平衡的二叉搜索树,它向树中每个节点添加一个变量来记录节点的颜色,红色和黑色。从根到叶的任何路径的颜色约束是最长的路径不超过最短路径的两倍,从而达到近似的平衡。它通过左旋、右旋和改变结点的颜色来保持近似的平衡。红黑树有一个独特的优势,即插入和删除最多可以旋转三次,因此在对于频繁的插入操作来说具有很好的性能。同时对于红黑树的查询性能,红黑树查询的时间复杂度为O(log n)。
从上述描述可知,本申请实施例提供的区块链交易数据查询方法,能够在降低区块链网络中节点数据存储压力的基础上,有效提高区块链交易数据查询的效率及可靠性,能够有效降低区块链交易数据查询的时间成本和资源成本,进而能够保证区块链网络的运行稳定性及可靠性。
为了进一步提高区块链交易数据查询的准确性、效率及查询方式的多样性,在本申请实施例提供的一种区块链交易数据查询方法中,参见图2,所述区块链交易数据查询方法中的步骤100之前还具体包含有如下内容:
步骤010:接收针对区块链网络的交易数据查询请求,其中,该交易数据查询请求中包含有目标交易属性值;
步骤020:判断所述交易数据查询请求中是否还包含有查询时间范围,若否,则执行步骤030;
步骤030:将所述目标交易属性值作为当前的交易查询关键字。
在区块链交易查询情境下,直接结合布隆过滤器和红黑树会产生以下的问题:
布隆过滤器的误判问题,布隆过滤器虽然查询速度较快,但是会存在误判的现象,使得在验证不属于集合中的元素时可能会出现误判。
为了解决这一问题,除了可以通过设定布隆过滤器的参数来降低误判概率,本申请还通过多区块布隆过滤器和单区块布隆过滤器同时使用,进行双重的验证,减小误判现象的发生概率。相对应的,在步骤030之后执行的所述区块链交易数据查询方法中的步骤100具体包含有如下内容:
步骤110:根据预存储在区块链网络中的布隆过滤器索引对应的各个多区块布隆过滤器,确定当前的目标交易属性值对应的区块范围,其中,所述布隆过滤器索引包括多个所述多区块布隆过滤器和多个单区块布隆过滤器,各个所述多区块布隆过滤器之间各自对应的各个区块不同,各个所述单区块布隆过滤器之间各自对应的单个区块也不同,所述区块范围中包含有至少一个区块的唯一标识。
参见图3,布隆过滤器索引可以作为区块链交易数据查询方法中索引中的第二层索引,由两个部分组成。分别为多区块布隆过滤器和单区块布隆过滤器。多区块布隆过滤器将区块链数据中的区块分组,每组包含的区块数量相同。多区块布隆过滤器包含了多个区块中交易的属性值,如交易哈希等。而对于单区块布隆过滤器,它记录了一个区块内的交易属性值。其中,k为大于2的正整数。
在进行查询时首先由多区块布隆过滤器定位到交易所在的区块组,再由该区块组中的单区块布隆过滤器定位到交易所在的区块。通过多区块布隆过滤器可以提升查询性能,减少比较的次数。根据布隆过滤器的性质,有可能会出现假阳性现象,这种现象可以通过增加列向量的长度和调整哈希函数的数量进行缓解。
因此,由于存储的交易数据更多,多区块布隆过滤器的列向量长度更长,哈希函数的数量也与单区块布隆过滤器不相同。在第二层基于属性的布隆过滤器索引进行查询时,只有多区块布隆过滤器和单区块布隆过滤器同时搜索到需要查询的交易时才会确认区块中包含此交易。因此,通过两种布隆过滤器的双重确认,也降低了布隆过滤器可能出现的误判概率。
步骤120:根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块。
为了进一步提高区块链交易数据查询的效率及查询方式的多样性,在本申请实施例提供的一种区块链交易数据查询方法中,参见图2,所述区块链交易数据查询方法中的步骤100之前以及步骤020之后还具体包含有如下内容:
若经步骤020判断获知所述交易数据查询请求中还包含有查询时间范围,则执行步骤040:将所述目标交易属性值和所述查询时间范围作为当前的交易查询关键字。
步骤050:自预存储在所述区块链网络内的时间红黑树索引中查询所述查询时间范围对应的区块范围,其中,所述时间红黑树索引用于存储各个时间戳与各个所述区块的唯一标识之间的对应关系。
在步骤050中,所述时间红黑树索引是指基于时间建立的红黑树索引,参见图4,该时间红黑树索引可以作为区块链交易数据查询方法中索引中的第一层索引,通过一颗红黑树实现,它以区块的生成时间为键,区块号为值,建立一个可以通过时间范围筛选区块的索引树。当进行查询时,可以通过输入的时间范围遍历红黑树,将要查询的时间范围转换为区块的范围,输出区块范围。
相对应的,在步骤050之后执行的所述区块链交易数据查询方法中的步骤100仅包含有前述的步骤120,即:根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块。
在区块链交易查询情境下,直接结合布隆过滤器和红黑树会产生以下的问题:
需要解决布隆过滤器对不同属性的存储冲突问题,不同的属性可能有相同的属性值。
基于此,本申请通过对于不同属性加入前缀后输入布隆过滤器。使得不必为每一种属性分别使用布隆过滤器,降低了存储压力。具体来说,为了进一步提高区块链交易数据查询中布隆查询的可靠性及有效性,在本申请实施例提供的一种区块链交易数据查询方法中,所述多区块布隆过滤器用于存储多个区块的唯一标识和各个交易优化属性值之间的对应关系;所述单区块布隆过滤器用于存储单个所述区块的唯一标识和各个交易优化属性值之间的对应关系。
相对应的,参见图5,所述区块链交易数据查询方法中的步骤110具体包含有如下内容:
步骤111:基于预设的布隆过滤器属性优化规则,生成所述目标交易属性值对应的目标交易优化属性值。
步骤112:在各个多区块布隆过滤器中查找所述目标交易优化属性值对应的区块范围。
所述区块链交易数据查询方法中的步骤120具体包含有如下内容:
步骤121:在所述区块范围中的各个区块分别对应的单区块布隆过滤器中,查找所述目标交易优化属性值对应的目标区块。
基于此,为了进一步提高布隆过滤器属性优化规则的应用有效性,在区块链交易数据查询方法的一种实施例中,所述布隆过滤器属性优化规则至少包含有如下内容:
(1)若交易属性为交易哈希值,则生成与该交易属性相同的交易优化属性值;
(2)若交易属性为所述交易数据查询请求对应的发送用户地址,则在该发送用户地址之前增加发送标识,以作为该交易属性对应的交易优化属性值;
(3)若交易属性为所述交易数据查询请求对应的接收用户地址,则在该接收用户地址之前增加接收标识,以作为该交易属性对应的交易优化属性值;
(4)若交易属性为交易金额,则根据该交易金额所属的数值范围选取该数值范围对应的桶,并基于该桶的桶标识生成所述交易属性对应的交易优化属性值。
具体来说,对于一般的区块链交易数据,交易的属性可以简单分为三种类型,第一种是以交易哈希为代表的唯一标识交易的属性,它不可重复,因此将其直接写入布隆过滤器中。第二种是以交易发送者ID为代表的可重复出现的字符串。由于一个交易发送者同时可以作为交易接收者,因此将交易发送者的地址加上“S_”的前缀。第三种是以交易金额为代表的数值类型的交易属性,它可以重复并且取值范围较广,我们可以通过分组的方式来进行交易属性范围的构建,使用桶(bucket)来储存交易属性,每个桶互不相交,所有的桶包括了该属性的所有取值,当该区块存在某一桶的交易时,则将桶所对应的名称直接写入布隆过滤器中,为防止不同类型数据的混淆,我们将每个数据前加上标识:如将某一笔交易的交易金额为范围在桶100-200中,假设该桶的标签为100,可以将字符串“Value_100”写入布隆过滤器中。上述的过程可以如下表1所示。
表1.不同交易属性值与布隆过滤器输入值之间的举例对照
在区块链交易查询情境下,直接结合布隆过滤器和红黑树会产生以下的问题:
红黑树是一种键值数据结构,其满足单一匹配数据关系。对于区块链中可能重复出现的属性值,如交易属性值等,单纯的红黑树将不能满足这种查询的需求。
因此本申请将红黑树和链表相结合,当遇到重复出现的属性值时使用链表存储属性值对应的交易所在文件中的地址。基于此,为了进一步提高区块链交易数据查询的可靠性及有效性,在本申请实施例提供的一种区块链交易数据查询方法中,所述属性红黑树索引用于存储唯一对应的区块的各个交易属性值和各个链下地址信息之间的对应关系,每个所述链下地址信息中均包含有:以链表形式存储的至少一个数据库文件中的交易数据存储地址。
具体来说,参见图6,所述属性红黑树索引可以作为区块链交易数据查询方法中索引中的第三层索引,每棵红黑树对应着一个区块中的对应的属性,红黑树结点的键为对应的属性值,交易的数据所对应的数据库文件中的地址偏移量作为红黑树结点的值。
在第三层索引,对于每个需要查询的属性,分别构建红黑树进行查询。红黑树结点中的键为属性值,值为交易所在数据库文件中的偏移量p,这里用文件中的偏移量进行存储。对于一个区块内的区块链中的属性值可能会有重复性,如交易的发送者有可能发出多笔交易。由于红黑树不能储存重复的键,涉及到重复的属性如发送者地址时,普通的红黑树将不能储存所有的交易信息。
因此,对于本申请的红黑树而言,当遇到重复的属性,红黑树会通过链表的方式进行储存。当进行查询时,返回链表中指向的所有交易。参见图7,是对于交易发送者的属性红黑树索引中的链表举例,其中,“offset_1”、“offset_2”和“offset_3”均为数据地址的列表的举例,“Transaction_1”、“Transaction_2”和“Transaction_3” 均为数据库中文件中的交易数据的举例。
相对应的,参见图2及图5,所述区块链交易数据查询方法的步骤200具体包含有如下内容:
步骤210:从所述目标区块对应的预存储在所述区块链网络中的属性红黑树索引中,查找所述目标交易属性值对应的链表。
步骤220:将所述链表中包含有的各个数据库文件中的交易数据存储地址均发送至所述交易数据查询请求的发出方,以使该发出方根据所述链表中包含有的各个数据库文件中的交易数据存储地址自对应的数据库中提取所述目标交易属性值对应的交易数据。
为了进一步提高区块链交易数据存储及查询的可靠性即有效性,在本申请实施例提供的一种区块链交易数据查询方法中,参见图5,所述区块链交易数据查询方法中还具体包含有如下内容:
步骤300:根据交易数据更新结果在区块链网络中实时更新所述布隆过滤器索引、属性红黑树索引和时间红黑树索引。
具体来说,当新区块生成时,首先更新第一层基于时间的红黑树索引,将区块的生成时间和区块号写入第一层索引的红黑树中。新建红黑树结点,通过红黑树的插入算法中的旋转和变色操作保持红黑树的平衡。
对于新区块中的交易信息,新建单区块布隆过滤器的列向量,将交易信息中的属性值通过多哈希函数映射到列向量中。当未写入多区块布隆过滤器的区块数等于多区块布隆过滤器包含的区块数量时,将这组新生成的区块中的交易属性值通过多哈希函数映射到列向量中。
对于第三层基于属性的红黑树索引,提取交易中的属性,分别构建红黑树索引。将属性值和交易数据地址的列表存入红黑树节点中,根据红黑树的插入规则进行平衡。
相对应的,本申请提供的各个索引在区块链上的存储可以通过以下的方式:
1.每个区块存储该区块所对应的交易索引,包括基于属性的红黑树索引和单区块的布隆过滤器索引。基于属性的红黑树索引存储了区块中经验证的交易信息。单区块布隆过滤器存储了所有本区块交易中包含的属性值的集合。
2.基于时间的红黑树索引可以储存在新生成的区块中。由于每当新的区块生成,基于时间的红黑树索引就会进行更新,树状结构会通过旋转和变色操作维持平衡。
3.多区块布隆过滤器可以储存在最后一个包含在多区块布隆过滤器中的区块中。假如多区块布隆过滤器的包含k个区块,则每当新生成k个区块后才新建多区块布隆过滤器。
4.查询时,通过对于链上索引信息的汇总,可以将索引导入内存中,进行对于交易信息的高效查询。
为了进一步提高区块链交易数据存储及查询的可靠性即有效性,在本申请实施例提供的一种区块链交易数据查询方法中,参见图5,所述区块链交易数据查询方法中还具体包含有如下内容:
步骤400:将所述布隆过滤器索引对应的列向量转化为字符串,并对该字符串进行加密以得到该布隆过滤器的哈希值,在所述区块链网络中的各个区块的区块头中均存储前一区块中的所述布隆过滤器的哈希值以作为所述布隆过滤器索引的安全性验证值。
和/或,步骤500:基于所述时间红黑树索引和所述属性红黑树索引中各自的节点的键值对,分别采用所述布隆过滤器和所述数据库,对所述时间红黑树索引和所述属性红黑树索引进行安全性验证。
具体来说,虽然将索引保存在区块链上可以降低区块链上的存储压力,但是也可能会出现被篡改的问题,由于现在区块中仅存储红黑树和布隆过滤器索引,没有了传统区块链中的默克尔树的结构,使得有发生篡改的风险。
对于上述问题,我们可以通过在区块头中保存布隆过滤器的哈希值的方式来验证索引内容没有被篡改。
由于布隆过滤器通过列向量来存储信息,我们可以将其转化为字符串,对字符串进行SHA-256加密。每一个区块头包含上一区块中布隆过滤器的哈希值,从而做到布隆过滤器的安全性。
对于红黑树的安全性可以通过对于红黑树中的节点中的键值对关系,通过布隆过滤器和链下的数据库来检验是否存在被篡改的情况。具体安全验证方法如下:
(1)遍历红黑树的结点,获得结点的键K(交易属性值)和值V(链下数据库中交易的地址)。
(2)将K输入单区块布隆过滤器和多区块布隆过滤器,如果有一结果为阴性,则可验证红黑树被篡改。
(3)若结果均为阳性,则使用V访问链下数据库的交易数据,获取交易中对应的属性值是否与K对应,若对应,则红黑树中的数据没有被篡改。
为了进一步说明本申请提供的技术方案,本申请还提供一种区块链交易数据查询方法的具体应用实例,参见图8,所述区块链交易数据查询方法具体体现为一种层次索引查询过程,具体包含有如下内容:
(1)输入查询的条件,判断是否包含时间范围索引,如果包括则使用第一层红黑树索引进行范围查询返回包含区块范围的集合。
(2)遍历多区块布隆过滤器对于集合内的属性进行查询,得到需要进行查询的区块范围,如果包含时间范围则仅遍历时间范围内的集合进行查询。获得符合条件的区块集合。
(3)遍历上一步区块集合所对应的单区块布隆过滤器,确定符合查询条件的区块号集合。
(4)使用与查询条件属性相应的红黑树进行查询,获得交易所在文件中的指针得到结果集。
(5)在文件中读取交易所在的指针输出结果集,完成查询。
在进行复杂查询时,可以分别对于不同属性条件进行查询,分别得到查询结果,将查询结果取并集,即可完成查询。
本申请应用实例使用真实的区块链交易数据集进行仿真测试,与现有的数据库技术进行性能对比,以及与仅使用红黑树和仅使用布隆过滤器简单结合红黑树进行性能对比。
交易数据集共计300万条交易数据。实验环境为Windows11系统,Java(JDK1.8)环境,数据库为MySQL 5.7.19,Level DB 1.17。
数据集一个区块具有100-300笔交易。使用查询语句Q1“SELECT * FROM datasetWHERE hash=‘hashValue’”进行测试。
由于交易哈希为每个交易独有的,而具有一般性,可以较好的体现出查询的性能。因此使用Q1对于查询的性能进行对比。
实验分别对比传统数据库MySQL、LevelDB和本申请中的索引方法的查询性能,同时与MySQL中常用的的B树索引进行对比,具体测试情况如图9所示。分别使用MySQL建立B树索引、本申请的三层索引、仅单区块布隆过滤器和红黑树索引、仅红黑树索引进行查询。
可以看出本申请使用的三层索引结构的查询速度是几种查询中最快的,而对于使用了B树索引的MySQL和LevelDB则次之。可以看出通过多区块布隆过滤器的索引结构可以大幅提升索引的效率,它只需要对于数量较少的多区块布隆过滤器进行遍历,就可以缩小查询的范围,从而进一步定位到查询的位置。仅使用单区块布隆过滤器和红黑树的查询方式需要遍历与区块数量相同的单区块布隆过滤器,所消耗的时间进一步增加。仅使用红黑树的查询方式需要遍历与区块数量相同的红黑树,由于红黑树的查找效率低于布隆过滤器,因此所消耗的时间又会进一步增加。
由此可知,本申请应用实例提供的区块链交易数据查询方法,针对当前的区块链技术自身存在着节点存储压力大、存取效率低等问题,本申请的目的是为区块链交易数据建立基于红黑树和布隆过滤器的索引,通过使用索引对于链下数据库中大量的交易数据进行查询的优化。
本申请的索引结构主要可以实现以下几种基本操作:
(1)给定时间范围获取区块内全部交易数据。
(2)给定交易中某一属性范围或属性值获取交易数据。
(3)同时对于时间范围和属性条件进行查询。
这种方法可以直接在链上的信息索引中进行查询,利用多层次的索引,极大地提高了查询效率,同时它还补充传统区块链索引技术的不足,可以进行属性范围的查询和时间范围查询。
具体来说,本申请应用实例提供的区块链交易数据查询方法针对传统区块链查询性能差的问题,设计了基于红黑树和布隆过滤器的多层次的索引,结合红黑树和布隆过滤器的优点,对于区块链交易信息进行高效的检索。
本申请应用实例提供的区块链交易数据查询方法针对区块链查询属性种类较少的问题,将交易中不同属性加上不同的前缀输入布隆过滤器中,使得布隆过滤器可以对交易中的不同属性进行识别。对于红黑树进行改进,在储存重复的属性值时可以通过列表的方式对于重复属性值所属的不同交易进行完整的记录。
本申请应用实例提供的区块链交易数据查询方法设计了多区块布隆过滤器,可以对于一组区块中的属性进行查询操作,提升查询速度。将多区块布隆过滤器和单区块布隆过滤器相结合,减少需要遍历的区块数量。同时,两层的确认机制降低了布隆过滤器的假阳性现象出现的概率。
综上,本申请应用实例提出基于红黑树和布隆过滤器的区块链交易数据查询方法,其优点在于针对传统区块链查询性能较差的问题和区块链查询属性种类较少的问题建立了多层次的索引,使得区块链的查询可以通过该索引高效的进行检索,提高了查询效率。同时它还补充传统区块链索引技术的不足,可以进行对于不同交易属性的查询和时间范围查询。在存储效率方面,原始交易数据可能占用较大的存储空间。通过将原始交易数据存储在链下数据库中,可以显著减少区块链的存储需求,从而提高存储效率。只保留索引数据在区块链中,可以大幅减少每个区块链节点需要存储的数据量,降低了节点的存储压力。隐私保护方面,原始交易数据通常包含敏感信息,如交易金额、参与方身份等。将原始交易数据存储在链下数据库中可以提供更好的隐私保护。区块链上的索引只包含对原始交易数据的引用,而不直接暴露敏感信息。这样可以限制对敏感数据的访问,并提高用户的隐私安全性。
从软件层面来说,本申请还提供一种用于执行所述区块链交易数据查询方法中全部或部分内的区块链交易数据查询装置,参见图10,所述区块链交易数据查询装置具体包含有如下内容:
布隆过滤器查询模块10,用于根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块。
属性红黑树查询模块20,用于从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据。
本申请提供的区块链交易数据查询装置的实施例具体可以用于执行上述实施例中的区块链交易数据查询方法的实施例的处理流程,其功能在此不再赘述,可以参照上述区块链交易数据查询方法实施例的详细描述。
所述区块链交易数据查询装置进行区块链交易数据查询的部分可以在区块链网络中的节点(服务器或客户端设备)中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器,用于区块链交易数据查询的具体处理。
上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
上述服务器与所述客户端设备端之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(Remote Procedure Call Protocol,远程过程调用协议)、REST协议(Representational State Transfer,表述性状态转移协议)等。
从上述描述可知,本申请实施例提供的区块链交易数据查询装置,能够在降低区块链网络中节点数据存储压力的基础上,有效提高区块链交易数据查询的效率及可靠性,能够有效降低区块链交易数据查询的时间成本和资源成本,进而能够保证区块链网络的运行稳定性及可靠性。
本申请实施例还提供了一种电子设备,该电子设备可以包括处理器、存储器、接收器及发送器,处理器用于执行上述实施例提及的区块链交易数据查询方法,其中处理器和存储器可以通过总线或者其他方式连接,以通过总线连接为例。该接收器可通过有线或无线方式与处理器、存储器连接。
处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-ProgrammableGate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本申请实施例中的区块链交易数据查询方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的区块链交易数据查询方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器中,当被所述处理器执行时,执行实施例中的区块链交易数据查询方法。
在本申请的一些实施例中,用户设备可以包括处理器、存储器和收发单元,该收发单元可包括接收器和发送器,处理器、存储器、接收器和发送器可通过总线系统连接,存储器用于存储计算机指令,处理器用于执行存储器中存储的计算机指令,以控制收发单元收发信号。
作为一种实现方式,本申请中接收器和发送器的功能可以考虑通过收发电路或者收发的专用芯片来实现,处理器可以考虑通过专用处理芯片、处理电路或通用芯片实现。
作为另一种实现方式,可以考虑使用通用计算机的方式来实现本申请实施例提供的服务器。即将实现处理器,接收器和发送器功能的程序代码存储在存储器中,通用处理器通过执行存储器中的代码来实现处理器,接收器和发送器的功能。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述区块链交易数据查询方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本申请中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征
以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (7)
1.一种区块链交易数据查询方法,其特征在于,包括:
根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块;
从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据;
在所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块之前,还包括:
接收针对区块链网络的交易数据查询请求,其中,该交易数据查询请求中包含有目标交易属性值;
判断所述交易数据查询请求中是否还包含有查询时间范围,若否,则将所述目标交易属性值作为当前的交易查询关键字;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块,包括:
根据预存储在区块链网络中的布隆过滤器索引对应的各个多区块布隆过滤器,确定当前的目标交易属性值对应的区块范围,其中,所述布隆过滤器索引包括多个所述多区块布隆过滤器和多个单区块布隆过滤器,各个所述多区块布隆过滤器之间各自对应的各个区块不同,各个所述单区块布隆过滤器之间各自对应的单个区块也不同,所述区块范围中包含有至少一个区块的唯一标识;
根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块;
在所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块之前,还包括:
若经判断获知所述交易数据查询请求中还包含有查询时间范围,则将所述目标交易属性值和所述查询时间范围作为当前的交易查询关键字;
自预存储在所述区块链网络内的时间红黑树索引中查询所述查询时间范围对应的区块范围,其中,所述时间红黑树索引用于存储各个时间戳与各个所述区块的唯一标识之间的对应关系;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块,包括:
根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块;
所述多区块布隆过滤器用于存储多个区块的唯一标识和各个交易优化属性值之间的对应关系;所述单区块布隆过滤器用于存储单个所述区块的唯一标识和各个交易优化属性值之间的对应关系;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引对应的各个多区块布隆过滤器,确定当前的目标交易属性值对应的区块范围,包括:
基于预设的布隆过滤器属性优化规则,生成所述目标交易属性值对应的目标交易优化属性值;
在各个多区块布隆过滤器中查找所述目标交易优化属性值对应的区块范围;
相对应的,所述根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块,包括:
在所述区块范围中的各个区块分别对应的单区块布隆过滤器中,查找所述目标交易优化属性值对应的目标区块。
2.根据权利要求1所述的区块链交易数据查询方法,其特征在于,所述布隆过滤器属性优化规则包括:
若交易属性为交易哈希值,则生成与该交易属性相同的交易优化属性值;
若交易属性为所述交易数据查询请求对应的发送用户地址,则在该发送用户地址之前增加发送标识,以作为该交易属性对应的交易优化属性值;
若交易属性为所述交易数据查询请求对应的接收用户地址,则在该接收用户地址之前增加接收标识,以作为该交易属性对应的交易优化属性值;
若交易属性为交易金额,则根据该交易金额所属的数值范围选取该数值范围对应的桶,并基于该桶的桶标识生成所述交易属性对应的交易优化属性值。
3.根据权利要求1所述的区块链交易数据查询方法,其特征在于,所述属性红黑树索引用于存储唯一对应的区块的各个交易属性值和各个链下地址信息之间的对应关系,每个所述链下地址信息中均包含有:以链表形式存储的至少一个数据库文件中的交易数据存储地址;
相对应的,所述从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据,包括:
从所述目标区块对应的预存储在所述区块链网络中的属性红黑树索引中,查找所述目标交易属性值对应的链表;
将所述链表中包含有的各个数据库文件中的交易数据存储地址均发送至所述交易数据查询请求的发出方,以使该发出方根据所述链表中包含有的各个数据库文件中的交易数据存储地址自对应的数据库中提取所述目标交易属性值对应的交易数据。
4.根据权利要求1或2所述的区块链交易数据查询方法,其特征在于,还包括:
根据交易数据更新结果在区块链网络中实时更新所述布隆过滤器索引、属性红黑树索引和时间红黑树索引。
5.根据权利要求1或2所述的区块链交易数据查询方法,其特征在于,还包括:
将所述布隆过滤器索引对应的列向量转化为字符串,并对该字符串进行加密以得到该布隆过滤器的哈希值,在所述区块链网络中的各个区块的区块头中均存储前一区块中的所述布隆过滤器的哈希值以作为所述布隆过滤器索引的安全性验证值;
和/或,基于所述时间红黑树索引和所述属性红黑树索引中各自的节点的键值对,分别采用所述布隆过滤器和所述数据库,对所述时间红黑树索引和所述属性红黑树索引进行安全性验证。
6.一种区块链交易数据查询装置,其特征在于,包括:
布隆过滤器查询模块,用于根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块;
属性红黑树查询模块,用于从所述目标区块对应的预存储在所述区块链网络内的属性红黑树索引中,查找所述交易查询关键字对应的链下地址信息,以自该链下地址信息对应的链下数据库中提取所述交易查询关键字对应的交易数据;
所述区块链交易数据查询装置还用于执行下述内容:
在所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块之前,还包括:
接收针对区块链网络的交易数据查询请求,其中,该交易数据查询请求中包含有目标交易属性值;
判断所述交易数据查询请求中是否还包含有查询时间范围,若否,则将所述目标交易属性值作为当前的交易查询关键字;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块,包括:
根据预存储在区块链网络中的布隆过滤器索引对应的各个多区块布隆过滤器,确定当前的目标交易属性值对应的区块范围,其中,所述布隆过滤器索引包括多个所述多区块布隆过滤器和多个单区块布隆过滤器,各个所述多区块布隆过滤器之间各自对应的各个区块不同,各个所述单区块布隆过滤器之间各自对应的单个区块也不同,所述区块范围中包含有至少一个区块的唯一标识;
根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块;
在所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块之前,还包括:
若经判断获知所述交易数据查询请求中还包含有查询时间范围,则将所述目标交易属性值和所述查询时间范围作为当前的交易查询关键字;
自预存储在所述区块链网络内的时间红黑树索引中查询所述查询时间范围对应的区块范围,其中,所述时间红黑树索引用于存储各个时间戳与各个所述区块的唯一标识之间的对应关系;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引,确定当前的交易查询关键字对应的目标区块,包括:
根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块;
所述多区块布隆过滤器用于存储多个区块的唯一标识和各个交易优化属性值之间的对应关系;所述单区块布隆过滤器用于存储单个所述区块的唯一标识和各个交易优化属性值之间的对应关系;
相对应的,所述根据预存储在区块链网络中的布隆过滤器索引对应的各个多区块布隆过滤器,确定当前的目标交易属性值对应的区块范围,包括:
基于预设的布隆过滤器属性优化规则,生成所述目标交易属性值对应的目标交易优化属性值;
在各个多区块布隆过滤器中查找所述目标交易优化属性值对应的区块范围;
相对应的,所述根据所述区块范围中的各个区块分别对应的单区块布隆过滤器确定所述目标交易属性值对应的目标区块,包括:
在所述区块范围中的各个区块分别对应的单区块布隆过滤器中,查找所述目标交易优化属性值对应的目标区块。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述的区块链交易数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310901218.3A CN116628285B (zh) | 2023-07-21 | 2023-07-21 | 区块链交易数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310901218.3A CN116628285B (zh) | 2023-07-21 | 2023-07-21 | 区块链交易数据查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116628285A CN116628285A (zh) | 2023-08-22 |
CN116628285B true CN116628285B (zh) | 2023-11-03 |
Family
ID=87638506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310901218.3A Active CN116628285B (zh) | 2023-07-21 | 2023-07-21 | 区块链交易数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116628285B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783971A (zh) * | 2020-12-30 | 2021-05-11 | 杭州趣链科技有限公司 | 交易记录方法、交易查询方法、电子设备及存储介质 |
CN113704248A (zh) * | 2021-07-12 | 2021-11-26 | 北京邮电大学 | 一种基于外置索引的区块链查询优化方法 |
CN113961598A (zh) * | 2021-10-25 | 2022-01-21 | 中国科学院沈阳计算技术研究所有限公司 | 一种新型区块链链上数据高速检索模型 |
WO2022048077A1 (zh) * | 2020-09-02 | 2022-03-10 | 杭州趣链科技有限公司 | 区块链交易查询方法、系统、计算机设备和存储介质 |
CN115048377A (zh) * | 2022-06-10 | 2022-09-13 | 东北大学 | 一种混合存储区块链环境下的时空关键字查询方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10929473B2 (en) * | 2018-09-27 | 2021-02-23 | Palo Alto Research Center Incorporated | Integrated index blocks and searching in blockchain systems |
-
2023
- 2023-07-21 CN CN202310901218.3A patent/CN116628285B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022048077A1 (zh) * | 2020-09-02 | 2022-03-10 | 杭州趣链科技有限公司 | 区块链交易查询方法、系统、计算机设备和存储介质 |
CN112783971A (zh) * | 2020-12-30 | 2021-05-11 | 杭州趣链科技有限公司 | 交易记录方法、交易查询方法、电子设备及存储介质 |
CN113704248A (zh) * | 2021-07-12 | 2021-11-26 | 北京邮电大学 | 一种基于外置索引的区块链查询优化方法 |
CN113961598A (zh) * | 2021-10-25 | 2022-01-21 | 中国科学院沈阳计算技术研究所有限公司 | 一种新型区块链链上数据高速检索模型 |
CN115048377A (zh) * | 2022-06-10 | 2022-09-13 | 东北大学 | 一种混合存储区块链环境下的时空关键字查询方法 |
Non-Patent Citations (2)
Title |
---|
Research on Industrial Internet Traceability Technology Based on Blockchai;C. Liu, Z. Wang;2022 IEEE 14th International Conference on Advanced Infocomm Technology (ICAIT);第286-291页 * |
面向混合索引的区块链系统的可查询性优化;郑浩瀚;申德荣;聂铁铮;寇月;;计算机科学(10);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116628285A (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11182366B2 (en) | Comparing data stores using hash sums on disparate parallel systems | |
CN106326381B (zh) | 基于MapDB构建的HBase数据检索方法 | |
US9077669B2 (en) | Efficient lookup methods for ternary content addressable memory and associated devices and systems | |
CN103544261B (zh) | 一种海量结构化日志数据全局索引管理方法及装置 | |
US10503923B1 (en) | Centralized data store for multiple data processing environments | |
CN103077208B (zh) | 统一资源定位符匹配处理方法及装置 | |
US11151138B2 (en) | Computer program for processing a pivot query | |
CN105574054A (zh) | 一种分布式缓存范围查询方法、装置及系统 | |
WO2022237569A1 (zh) | 一种交易验重方法、装置、设备以及介质 | |
WO2021017305A1 (zh) | 数据的查询方法、装置、电子设备及计算机可读存储介质 | |
CN111680489A (zh) | 目标文本的匹配方法和装置、存储介质及电子设备 | |
US10592153B1 (en) | Redistributing a data set amongst partitions according to a secondary hashing scheme | |
Zhuang et al. | Optimizing information leakage in multicloud storage services | |
CN116628285B (zh) | 区块链交易数据查询方法及装置 | |
US10678754B1 (en) | Per-tenant deduplication for shared storage | |
CN108062277B (zh) | 一种电子凭据数据访问方法、装置及系统 | |
US11526516B2 (en) | Method, apparatus, device and storage medium for generating and processing a distributed graph database | |
US11222003B1 (en) | Executing transactions for a hierarchy of data objects stored in a non-transactional data store | |
KR102274656B1 (ko) | 블록체인 네트워크에서 데이터를 관리하기 위한 기법 | |
CN110825747B (zh) | 一种信息存取方法、装置和介质 | |
CN114547034A (zh) | 一种数据查询的方法、装置、设备及存储介质 | |
CN111563083A (zh) | 报表数据查询方法、装置及系统 | |
WO2019128905A1 (zh) | 一种网络通信方法及装置 | |
US11924102B2 (en) | Minimizing deviation from average latency of table lookups | |
Zhou et al. | A slice-based encryption scheme for IPFS |
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 |