CN113256419B - 一种区块链交易检索方法及系统 - Google Patents
一种区块链交易检索方法及系统 Download PDFInfo
- Publication number
- CN113256419B CN113256419B CN202110557494.3A CN202110557494A CN113256419B CN 113256419 B CN113256419 B CN 113256419B CN 202110557494 A CN202110557494 A CN 202110557494A CN 113256419 B CN113256419 B CN 113256419B
- Authority
- CN
- China
- Prior art keywords
- transaction
- state machine
- account
- historical
- retrieval
- 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
Images
Classifications
-
- 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
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- 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)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种区块链交易检索方法及系统,通过查询历史状态机实现对区块链交易的检索,具体通过中间历史状态机与两端历史状态机的比较确认中间历史状态机对应的区块是否有账户地址对应的交易信息,其中,前一次的查询结果确定下一次的查询范围,查询范围从大到小层层缩小范围进行检索,并且每次查询时只需确认查询范围位于中间的历史状态,这样,可以边查询边确认有交易信息的查询范围,避免一些无用数据的检索,不需要遍历每条区块链交易信息,也不需要遍历每个历史状态机,就可以实现区块链交易的检索,大幅提升交易检索效率,降低了检索的复杂度,尤其随着区块链数据量提升,查找效率优势更加明显。
Description
技术领域
本发明属于区块链技术领域,尤其涉及一种区块链交易检索方法及系统。
背景技术
区块链技术基于其不可伪造、全程留痕、可以追溯、公开透明、集体维护等特征,在现实生活中实现了各种各样的功能,不仅得到了安全、可靠的保障,而且极大地方便了现实生活的方方面面。目前主流区块链的交易内容由from,to,nonce,gas,gas price,value,data组成,其中,from是交易源地址,to是交易目的地址,nonce是针对from账户发出交易编号而递增的,每一个编号代表唯一的区块链交易,gas是每笔交易所花费的燃料数量,gasprice是燃料的单价,value是from向to转账的金额,data是交易相关数据。
而现有技术对区块链交易检索的做法是,通过区块号获得区块主体,通过区块主体得到区块链交易列表,进而遍历交易列表,发现源账户或目标账户与查找账户相同,则找出该交易。该方法存在以下缺点:
1)现有区块链交易针对账户检索区块链交易方法效率低:现有方法通过遍历区块的方式查找账户交易,执行大量无效查询,随着区块链数据不断增长,这种查询命中率越来越低。
2)现有区块链交易针对账户检索区块链交易方法对硬件资源要求高:现有方案需要遍历历史区块及其交易列表,需要访问硬盘资源,进而加载到内存中,查找数据量巨大,因此导致需要硬件配置较高。
发明内容
本发明为解决上述技术问题,提供了一种区块链交易检索方法及系统,其技术方案为:
一种区块链交易检索方法,区块链上设有历史状态机,历史状态机用于记录账户的交易更新信息,其中,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机,该方法包括以下步骤:
S1:接收历史交易检索请求,历史交易检索请求包括需要查询的账户地址;
S2:查询最初和最新的历史状态机,确认两者账户地址的交易更新信息是否相同:若不同,则根据最新的历史状态机找到并获取对应区块下账户地址的交易信息并执行下一步骤S3;若相同,则结束检索;
S3:在历史状态机的查询范围内,查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同:
若相对查询范围两端均不同,则根据中间的历史状态机找到并获取对应区块下账户地址的交易信息,并以中间的历史状态机为界线将查询范围一分为二分别重新执行步骤S3;
若相对查询范围一端不同、另一端相同,则确认中间的历史状态机与不同一端的历史状态机之间有没有账户地址的交易信息未检索:若有则以中间的历史状态机至不同端的历史状态机为查询范围重新执行步骤S3;若无则结束当前查询范围的检索。
在其中一个实施例中,交易更新信息包括交易编号和内容状态,其中,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机进一步包括:
若有账户作为源地址执行交易,则更新该账户的交易编号形成新的历史状态机;
若有账户作为目的地址执行交易,则更新该账户的内容状态形成新的历史状态机。
在其中一个实施例中,在步骤S3中,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同进一步包括:
与查询范围两端的历史状态机比较,确认账户地址的交易编号和/或内容状态是否相同。
在其中一个实施例中,在步骤S3执行过程中,与查询范围两端的历史状态机比较,若相对查询范围两端均不同,其中,相对查询范围任意一端的历史状态机,交易编号不同且内容状态相同,则找到并获取的账户地址的交易信息为无效交易信息。
在其中一个实施例中,历史交易检索请求还包括区块链交易检索的初始范围,其中,步骤S2在初始范围内查询最初和最新的历史状态机,步骤S3以初始范围作为历史状态机初始的查询范围。
在其中一个实施例中,步骤S2还包括步骤:确认最初的历史状态机对应区块是否存在账户地址对应的交易信息:将最初的历史状态机与在全部的历史状态机当中最原始的历史状态机进行比较,确认账户地址的交易更新信息是否相同,若不同,则通过最初的历史状态机找到并获取对应区块下账户地址的交易信息,若相同,则确认最初的历史状态机对应区块不存在账户地址对应的交易信息。
在其中一个实施例中,区块链上的各个区块设有一状态机索引,其中,根据状态机索引查找区块对应的历史状态机。
一种区块链交易检索系统,区块链上设有历史状态机,历史状态机用于记录账户的交易更新信息,其中,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机,该装置包括:
接收模块,用于接收历史交易检索请求,历史交易检索请求包括需要查询的账户地址;
初步检索模块,用于查询最初和最新的历史状态机,确认两者账户地址的交易更新信息是否相同:若不同,则根据最新的历史状态机找到并获取对应区块下账户地址的交易信息并继续检索;若相同,则结束检索;
循环检索模块,用于在历史状态机的查询范围内,查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同:
若相对查询范围两端均不同,则根据中间的历史状态机找到并获取对应区块下账户地址的交易信息,并以中间的历史状态机为界线将查询范围一分为二分别重新查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同;
若相对查询范围一端不同、另一端相同,则确认中间的历史状态机与不同一端的历史状态机之间有没有账户地址的交易信息未检索:若有则以中间的历史状态机至不同端的历史状态机为查询范围重新查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同;若无则结束当前查询范围的检索。
在其中一个实施例中,交易更新信息包括交易编号和内容状态,其中,若有账户作为源地址执行交易,则更新该账户的交易编号形成新的历史状态机,若有账户作为目的地址执行交易,则更新该账户的内容状态形成新的历史状态机。
在其中一个实施例中,历史交易检索请求还包括区块链交易检索的初始范围,其中,检索模块在初始范围内查询最初和最新的历史状态机,以及以初始范围作为历史状态机初始的查询范围。
在其中一个实施例中,区块链上的各个区块设有一状态机索引,其中,检索模块用于根据状态机索引查找区块对应的历史状态机。
一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述区块链交易检索方法。
一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述区块链交易检索方法。
本发明与现有技术相比具有以下的优点和积极效果:
1)本发明通过查询历史状态机实现对区块链交易的检索,具体通过中间历史状态机与两端历史状态机的比较确认中间历史状态机对应的区块是否有账户地址对应的交易信息,其中,前一次的查询结果确定下一次的查询范围,查询范围从大到小层层缩小范围进行检索,并且每次查询时只确认查询范围位于中间的历史状态,如此,可以边查询边确认有交易信息的查询范围,避免一些无用数据的检索,不需要遍历每条区块链交易信息,也不需要遍历每个历史状态机,就可以实现区块链交易的检索,大幅提升交易检索效率,降低了检索的复杂度,尤其随着区块链数据量提升,查找效率优势更加明显。
2)本发明通过查询历史状态机实现对区块链交易的检索,排除因IO访问硬件资源的时间成本,节约了时间上的开销,同时大大降低了访问硬件次数,有效降低了硬件成本。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
图1为本发明一个实施例中区块链交易检索方法的整体流程图;
图2为本发明一个实施例中区块链交易检索系统的结构框图。
附图标记说明:
1-接收模块;2-初步检索模块;3-循环检索模块。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
区块链简单地说就是一种去中心化的分布式账本数据库,区块链技术本质上是一种数据库技术,每个区块就像一个硬盘,把信息全部保存下来,再通过密码学技术进行加密,这些被保存的信息就无法被篡改。区块链具有去中心化、开放性、独立性、安全性、匿名性的特征,可以应用到生活的众多方面,其中,在众多应用中,交易是区块链的最常用的应用,使得区块链交易信息在区块链中占据数据存储的一大部分,数据量大进一步使得区块链交易检索变的十分困难,传统遍历每一条交易信息的检索方式显然已无法满足数据日益更新的现有区块链,这就需要一种更加高效快速的区块链交易检索方法。
第一实施例
为解决上述问题,参看图1,本实施例提出一种区块链交易检索方法,区块链上设有历史状态机,历史状态机用于记录账户的交易更新信息,其中,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机,该方法包括以下步骤:
S1:接收历史交易检索请求,历史交易检索请求包括需要查询的账户地址;
S2:查询最初和最新的历史状态机,确认两者账户地址的交易更新信息是否相同:若不同,则根据最新的历史状态机找到并获取对应区块下账户地址的交易信息并执行下一步骤S3;若相同,则结束检索;
S3:在历史状态机的查询范围内,查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同:
若相对查询范围两端均不同,则根据中间的历史状态机找到并获取对应区块下账户地址的交易信息,并以中间的历史状态机为界线将查询范围一分为二分别重新执行步骤S3;
若相对查询范围一端不同、另一端相同,则确认中间的历史状态机与不同一端的历史状态机之间有没有账户地址的交易信息未检索:若有则以中间的历史状态机至不同端的历史状态机为查询范围重新执行步骤S3;若无则结束当前查询范围的检索。
现对本实施例进行详细说明,但不仅限于此。
本实施例适用于区块链交易数据的快速检索,尤其适用于大数据下区块链交易数据的检索,可以在不需遍历每一条区块链交易信息的情况下,逐层剔除无用查询范围,以一步步缩小查询范围,查询范围从大到小依次检索,有效降低检索复杂度,大幅提升交易检索效率,节约时间成本和硬件成本。
区块链的状态机,全称为有限状态自动机,通常体现为一个状态转换图,用于记录区块链区块状态变化。具体而言,本实施例中的历史状态机记录有账户的交易更新信息,其中,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机。优选地,区块链上的各个区块设有一状态机索引,其中,根据状态机索引查找区块对应的历史状态机。
区块链的交易信息主要包括from、to、nonce、gas、gas price、value、data:from是交易源地址;to是交易目的地址;nonce是针对from账户发出交易编号而递增的,每一个编号代表唯一的区块链交易;gas是每笔交易所花费的燃料数量;gas price是燃料的单价;value是from向to转账的金额;data是交易相关数据。优选地,本实施例的交易更新信息具体包括交易编号和内容状态,其中,交易编号即为交易信息中的nonce值,账户地址的每一个交易编号代表唯一的一笔交易,内容状态可以为交易本身或者交易涉及账户的相关信息,例如账户钱包的余额、转账记录等等。
进一步优选地,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机具体包括:若有账户作为源地址执行交易,则更新该账户的交易编号形成新的历史状态机;若有账户作为目的地址执行交易,则更新该账户的内容状态形成新的历史状态机;除以上两种之外的交易可以认定为无效交易。本实施例只要有账户执行交易,该账户对应的当前历史状态机就会变为历史并更新为最新历史状态机,以保存最新的nonce和内容状态,如此,随着一笔笔交易的执行,在区块链上就能形成一系列反映区块链交易动态变化的历史状态机,本实施例基于历史状态机进行区块链交易检索。
1)具体介绍步骤S1
本实施例的历史交易检索请求包括需要查询的账户地址,其中,用户输入想要检索的账户地址生成历史交易请求,并将历史交易请求发送至区块链节点,以进行区块链交易检索。优选地,该历史交易请求经用户的私钥签名,通过验证签名以确认历史交易请求的合法性,以保证区块链交易检索的安全性和严谨性,其中,用户私钥签名具体可以为历史交易检索请求计算一个散列值,然后通过用户的私钥进行加密实现请求的签名,但不仅限于此。
优选地,本实施例的历史交易检索请求还可以包括区块链交易检索的初始范围,即历史状态机的初始范围,以限定区块链交易检索范围,具体初始范围可以通过时间点进行限定,以在某一时间段内的历史状态机为初始范围进行区块链交易检索,也可以通过具体的历史状态机进行限定,以具体两个历史状态机之间为初始范围进行区块链交易检索,等等。
2)具体介绍步骤S2
本实施例在接收到历史交易检索请求之后,优选地,通过验证历史交易检索请求的合法性,验证通过之后进行区块链交易检索,其中,可以通过区块链上的用户公钥与请求签名中的用户私钥进行匹配,以验证该历史交易检索请求是否合法,具体而言,可以接收到历史交易检索请求后,利用区块链上用户公钥解密通过历史交易检索请求中的用户私钥加密后的散列值,将公钥解密的结果与最初散列值进行比较,若两者相符,验证通过则继续执行步骤,但不仅限于此。
为了初步确认查询范围内是否有账户地址对应的交易信息,本实施例首先查询最初和最新的历史状态机,确认两者账户地址的交易更新信息是否相同:若不同,则根据最新的历史状态机找到并获取对应区块下账户地址的交易信息并执行下一步骤S3;若相同,则结束检索。其中,最初和最新的历史状态机中,两者账户地址的交易更新信息不同,说明了从最初到最新之间的历史状态机账户地址的交易更新信息发生过更新,也就说明最初到最新之间的历史状态机对应的区块存在账户地址对应的交易信息,反之,两者账户地址的交易更新信息相同,说明了从最初到最新之间的历史状态机账户地址的交易更新信息没有发生过更新,也就说明最初到最新之间的历史状态机对应的区块存在账户地址对应的交易信息。因此这样,本实施例可以大范围地确认本次检索的初步结果,即有无交易信息。同时,在确认有交易信息的情况下,本实施例通过最新的历史状态机就可以找到并获取对应区块下账户地址的交易信息。
优选地,若历史交易检索请求中包括初始范围,则步骤S2以在初始范围内查询最初和最新的历史状态机,若历史交易检索请求中不包括初始范围,则步骤S2以全部的历史状态机为范围查询最初和最新的历史状态机。进一步地,若初始范围为全部的历史状态机当中的部分范围,本实施例还需确认最初的历史状态机对应区块是否存在账户地址对应的交易信息,其中,可以将最初的历史状态机与在全部的历史状态机当中最原始的历史状态机进行比较,确认账户地址的交易更新信息是否相同,若不同,则通过最初的历史状态机找到并获取对应区块下账户地址的交易信息,若相同,则确认最初的历史状态机对应区块不存在账户地址对应的交易信息。
3)具体介绍步骤S3
本实施例在历史状态机的查询范围内进行区块链交易进一步检索,其中,在历史交易检索请求中包括初始范围的情况下,以初始范围作为该查询范围,历史交易检索请求中不包括初始范围,则以全部的历史状态机为该查询范围。
本实施例在历史状态机的查询范围内,每次查询位于中间的历史状态机,将其与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同,其中,位于中间的历史状态机为查询范围的中间或中间偏上/下的历史状态机,如此可以确认位于中间的历史状态机对应的区块是否存在账户地址对应的交易信息。具体而言:
若相对查询范围两端均不同,说明中间的历史状态机中账户地址的交易更新信息发生过了更新,即账户地址发生了交易,也就说明中间的历史状态机对应区块存在账户地址的交易信息,则根据中间的历史状态机找到并获取对应区块下账户地址的交易信息。同时,由于中间的历史状态机相对查询范围两端均不同,则说明中间的历史状态机分别与查询范围两端之间均还可能存在账户地址对应的交易信息,故以中间的历史状态机为界线将查询范围一分为二分别重新执行步骤S3,此时的查询范围以由初始的调整为两段查询范围,分别再次执行步骤S3,以进一步拆解缩小范围再次查询。
若相对查询范围一端不同、另一端相同,则确认中间的历史状态机与不同一端的历史状态机之间有没有账户地址的交易信息未检索:若有则以中间的历史状态机至不同端的历史状态机为查询范围重新执行步骤S3;若无则结束当前查询范围的检索。具体而言:相对一端不同说明中间的历史状态机至不同一端的历史状态机之间账户地址发生了交易,故需进一步确认这之间有没有账户地址的交易信息未检索,没有则当前查询范围已经全部检索完毕,有则以中间的历史状态机至不同端的历史状态机为查询范围重新执行步骤S3;相对另一端相同说明中间的历史状态机至相同一端的历史状态机之间账户地址未发生了交易,故这段查询范围可以直接不用查询。
进一步地,确认中间的历史状态机与不同一端的历史状态机之间有没有账户地址的交易信息未检索,可以通过交易更新信息中的交易编号nonce值进行确认,其中,由于账户的交易编号nonce值是呈递增的:例如中间的历史状态机中账户地址的交易编号nonce值为18,不同一端的历史状态机中账户地址的交易编号nonce值为20,则说明中间的历史状态机与不同一端的历史状态机之间还有一笔账户地址的交易编号nonce值为19的交易信息未检索到,则以中间的历史状态机至不同端的历史状态机为查询范围重新执行步骤S3;再例如,中间的历史状态机中账户地址的交易编号nonce值为19,不同一端的历史状态机中账户地址的交易编号nonce值为20,则说明中间的历史状态机与不同一端的历史状态机之间没有账户地址的交易信息了,则结束当前查询范围的检索。
上述步骤S3中,确认账户地址的交易更新信息是否相同进一步包括确认账户地址的交易编号和/或内容状态是否相同,其中,交易编号是呈递增且每一交易编号代表唯一交易,其不同可以直接反映账户地址是否发生交易,内容状态会随着交易的执行而发生改变,如账户的余额会改变、交易记录会更新等,其不同也可以间接反映账户地址是否发生交易,据此来判断中间的历史状态机对应的区块是否存在账户地址的交易信息。进一步地,在交易信息中也会存在无效交易信息,对此,在步骤S3执行过程中,与查询范围两端的历史状态机比较,若相对查询范围两端均不同,并且,相对查询范围任意一端的历史状态机,交易编号不同且内容状态相同,例如交易编号递增但账户余额未变,则说明找到并获取的账户地址的交易信息为无效交易信息,此部分交易信息可以在反馈时直接标注出来或直接丢弃。
本实施例通过步骤S3的循环执行,基于前一次的查询结果确定下一次的查询范围,从大到小逐层缩小查询范围,剔除不必要的查询范围,快速实现区块链交易的检索,大幅提升交易检索效率,降低了检索的复杂度,尤其随着区块链数据量提升,查找效率优势更加明显。
现通过一具体案例进一步对本实施例进行说明,但不仅限于此。
假设:区块链所有的历史状态机有400个,其中,账户A执行了3笔交易,交易编号分别0~2,第1个历史状态机并无账户A的交易更新信息,第50个历史状态机中账户A的交易编号为0,第100个历史状态机中账户A的交易编号为0,第125个历史状态机中账户A的交易编号为0,第150个历史状态机中账户A的交易编号为1,第175个历史状态机中账户A的交易编号为2,第200个历史状态机中账户A的交易编号为2,第400个历史状态机中账户A的交易编号为2。
基于上述假设情况现需要对账户A进行区块链交易检索:
首先,向区块链节点发送历史交易检索请求,其中,历史交易检索请求中包括账户A的账户地址,但不包括初始范围,即以所有的历史状态为查询范围;
其次,接收到历史交易检索请求之后,查询最初和最新的历史状态机,即第1个和第400个历史状态机,确认两者的账户地址的交易更新信息是否相同:确认第1个历史状态机并无账户A的交易更新信息,而第400个历史状态机中账户A的交易编号为2,两者不同说明之间存在账户A的交易信息,则根据第400个历史状态机找到并获取对应区块下所述账户A的交易信息,即账户A的交易编号为2的一笔交易被检索到;
第一次检索:在第1至400个历史状态的查询范围内,查询第200个历史状态机,与查询范围两端的第1个和第400个历史状态机比较,确认账户A的交易更新信息是否相同:
第200个历史状态机中账户A的交易编号为2,则相对第1个历史状态机不同、第400个历史状态机相同,说明第200至第400个历史状态机之间无交易信息可检索,进一步确认第1至第200个历史状态机之间还有账户A交易编号0、1未被检索到,故以第1至第200个历史状态机为查询范围进行第二次检索;
第二次检索:在第1至200个历史状态的查询范围内,查询第100个历史状态机,与查询范围两端的第1个和第200个历史状态机比较,确认账户A的交易更新信息是否相同:
第100个历史状态机中账户A的交易编号为0,则相对第1个历史状态机、第200个历史状态机均不同,说明第100个历史状态机对应的区块存在一笔账户A未检索到的交易信息,则根据第100个历史状态机找到并获取对应区块下所述账户A的交易信息,即账户A的交易编号为0的一笔交易被检索到,同时说明第1至第100个、第100个至第200个历史状态机之间可能还有交易信息可检索,进一步以第100个历史状态机为界线将查询范围一分为二,即以第1至第100、第100至第200为两个查询范围分别执行第三次检索;
第三次检索:在第1至100个历史状态的查询范围内,查询第50个历史状态机,与查询范围两端的第1个和第100个历史状态机比较,确认账户A的交易更新信息是否相同:
第50个历史状态机中账户A的交易编号为0,则相对第1个历史状态机不同、第100个历史状态机相同,说明第50至第100个历史状态机之间无交易信息可检索,进一步确认第1至第50个历史状态机之间已没有账户A的交易信息,故结束当前查询范围的检索;
同时,在第100至200个历史状态的查询范围内,查询第150个历史状态机,与查询范围两端的第100个和第200个历史状态机比较,确认账户A的交易更新信息是否相同:
第150个历史状态机中账户A的交易编号为1,则相对第100个历史状态机、第200个历史状态机均不同,说明第150个历史状态机对应的区块存在一笔账户A未检索到的交易信息,则根据第150个历史状态机找到并获取对应区块下所述账户A的交易信息,即账户A的交易编号为1的一笔交易被检索到,同时说明第100至第150个、第150个至第200个历史状态机之间可能还有交易信息可检索,进一步以第150个历史状态机为界线将查询范围一分为二,即以第100至第150、第150至第200为两个查询范围分别执行第四次检索;
第四次检索:在第100至第150个历史状态的查询范围内,查询第125个历史状态机,与查询范围两端的第100个和第150个历史状态机比较,确认账户A的交易更新信息是否相同:
第125个历史状态机中账户A的交易编号为0,则相对第100个历史状态机相同、第150个历史状态机不同,说明第100至第125个历史状态机之间无交易信息可检索,进一步确认第125至第150个历史状态机之间已没有账户A的交易信息,故结束当前查询范围的检索;
同时,在第150至第200个历史状态的查询范围内,查询第175个历史状态机,与查询范围两端的第150个和第200个历史状态机比较,确认账户A的交易更新信息是否相同:
第175个历史状态机中账户A的交易编号为2,则相对第150个历史状态机不同、第200个历史状态机相同,说明第175至第200个历史状态机之间无交易信息可检索,进一步确认第150至第175个历史状态机之间已没有账户A的交易信息,故结束当前查询范围的检索。
通过上述过程本实施例完成了在400个历史状态机中对账户A的区块链交易检索,检索出3笔交易信息。显然地,为了更加清楚说明本实施例的方法,上述假设情况进行了简化以便于说明,实际上,本实施例的方法还可以应用到历史状态机与交易信息更多的复杂情况下进行执行,原理相同,在此不再详细赘述。
本实施例通过查询历史状态机实现对区块链交易的检索,具体通过中间历史状态机与两端历史状态机的比较确认中间历史状态机对应的区块是否有账户地址对应的交易信息,其中,前一次的查询结果确定下一次的查询范围,查询范围从大到小层层缩小范围进行检索,并且每次查询时只确认查询范围位于中间的历史状态,如此,可以边查询边确认有交易信息的查询范围,避免一些无用数据的检索,不需要遍历每条区块链交易信息,也不需要遍历每个历史状态机,就可以实现区块链交易的检索,大幅提升交易检索效率,降低了检索的复杂度,尤其随着区块链数据量提升,查找效率优势更加明显。
本实施例通过查询历史状态机实现对区块链交易的检索,排除因IO访问硬件资源的时间成本,节约了时间上的开销,同时大大降低了访问硬件次数,有效降低了硬件成本。
第二实施例
参看图2,本发明提出了一种基于第一实施例的区块链交易检索系统,区块链上设有历史状态机,历史状态机用于记录账户的交易更新信息,其中,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机,该装置包括:
接收模块1,用于接收历史交易检索请求,历史交易检索请求包括需要查询的账户地址;
初步检索模块2,用于查询最初和最新的历史状态机,确认两者账户地址的交易更新信息是否相同:若不同,则根据最新的历史状态机找到并获取对应区块下账户地址的交易信息并继续检索;若相同,则结束检索;
循环检索模块3,用于在历史状态机的查询范围内,查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同:
若相对查询范围两端均不同,则根据中间的历史状态机找到并获取对应区块下账户地址的交易信息,并以中间的历史状态机为界线将查询范围一分为二分别重新查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同;
若相对查询范围一端不同、另一端相同,则确认中间的历史状态机与不同一端的历史状态机之间有没有账户地址的交易信息未检索:若有则以中间的历史状态机至不同端的历史状态机为查询范围重新查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同;若无则结束当前查询范围的检索。
现对本实施例进行详细说明,但不仅限于此。
本实施例适用于区块链交易数据的快速检索,尤其适用于大数据下区块链交易数据的检索,可以在不需遍历每一条区块链交易信息的情况下,逐层剔除无用查询范围,以一步步缩小查询范围,查询范围从大到小依次检索,有效降低检索复杂度,大幅提升交易检索效率,节约时间成本和硬件成本。
区块链的状态机,全称为有限状态自动机,通常体现为一个状态转换图,用于记录区块链区块状态变化。具体而言,本实施例中的历史状态机记录有账户的交易更新信息,其中,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机。优选地,区块链上的各个区块设有一状态机索引,其中,根据状态机索引查找区块对应的历史状态机。
区块链的交易信息主要包括from、to、nonce、gas、gas price、value、data:from是交易源地址;to是交易目的地址;nonce是针对from账户发出交易编号而递增的,每一个编号代表唯一的区块链交易;gas是每笔交易所花费的燃料数量;gas price是燃料的单价;value是from向to转账的金额;data是交易相关数据。优选地,本实施例的交易更新信息具体包括交易编号和内容状态,其中,交易编号即为交易信息中的nonce值,账户地址的每一个交易编号代表唯一的一笔交易,内容状态可以为交易本身或者交易涉及账户的相关信息,例如账户钱包的余额、转账记录等等。
进一步优选地,若有账户执行交易,则更新该账户的交易更新信息形成新的历史状态机具体包括:若有账户作为源地址执行交易,则更新该账户的交易编号形成新的历史状态机;若有账户作为目的地址执行交易,则更新该账户的内容状态形成新的历史状态机;除以上两种之外的交易可以认定为无效交易。本实施例只要有账户执行交易,该账户对应的当前历史状态机就会变为历史并更新为最新历史状态机,以保存最新的nonce和内容状态,如此,随着一笔笔交易的执行,在区块链上就能形成一系列反映区块链交易动态变化的历史状态机,本实施例基于历史状态机进行区块链交易检索。
1)具体介绍接收模块
本实施例中,接收模块接收的历史交易检索请求包括需要查询的账户地址,其中,用户输入想要检索的账户地址生成历史交易请求,并将历史交易请求发送至区块链节点,以进行区块链交易检索。优选地,该历史交易请求经用户的私钥签名,通过验证签名以确认历史交易请求的合法性,以保证区块链交易检索的安全性和严谨性,其中,用户私钥签名具体可以为历史交易检索请求计算一个散列值,然后通过用户的私钥进行加密实现请求的签名,但不仅限于此。
优选地,本实施例的历史交易检索请求还可以包括区块链交易检索的初始范围,即历史状态机的初始范围,以限定区块链交易检索范围,具体初始范围可以通过时间点进行限定,以在某一时间段内的历史状态机为初始范围进行区块链交易检索,也可以通过具体的历史状态机进行限定,以具体两个历史状态机之间为初始范围进行区块链交易检索,等等。
2)具体介绍初步检索模块
本实施例的初步检索模块在接收到历史交易检索请求之后,优选地,通过验证历史交易检索请求的合法性,验证通过之后进行区块链交易检索,其中,可以通过区块链上的用户公钥与请求签名中的用户私钥进行匹配,以验证该历史交易检索请求是否合法,具体而言,可以接收到历史交易检索请求后,利用区块链上用户公钥解密通过历史交易检索请求中的用户私钥加密后的散列值,将公钥解密的结果与最初散列值进行比较,若两者相符,验证通过则开始检索,但不仅限于此。
为了初步确认查询范围内是否有账户地址对应的交易信息,本实施例初步检索模块首先查询最初和最新的历史状态机,确认两者账户地址的交易更新信息是否相同:若不同,则根据最新的历史状态机找到并获取对应区块下账户地址的交易信息并循环检索模块开始检索;若相同,则结束检索。其中,最初和最新的历史状态机中,两者账户地址的交易更新信息不同,说明了从最初到最新之间的历史状态机账户地址的交易更新信息发生过更新,也就说明最初到最新之间的历史状态机对应的区块存在账户地址对应的交易信息,反之,两者账户地址的交易更新信息相同,说明了从最初到最新之间的历史状态机账户地址的交易更新信息没有发生过更新,也就说明最初到最新之间的历史状态机对应的区块存在账户地址对应的交易信息。因此这样,本实施例可以大范围地确认本次检索的初步结果,即有无交易信息。同时,在确认有交易信息的情况下,本实施例通过最新的历史状态机就可以找到并获取对应区块下账户地址的交易信息。
优选地,若历史交易检索请求中包括初始范围,则初始检索模块以在初始范围内查询最初和最新的历史状态机,若历史交易检索请求中不包括初始范围,则初始检索模块以全部的历史状态机为范围查询最初和最新的历史状态机。进一步地,若初始范围为全部的历史状态机当中的部分范围,本实施例还需确认最初的历史状态机对应区块是否存在账户地址对应的交易信息,其中,可以将最初的历史状态机与在全部的历史状态机当中最原始的历史状态机进行比较,确认账户地址的交易更新信息是否相同,若不同,则通过最初的历史状态机找到并获取对应区块下账户地址的交易信息,若相同,则确认最初的历史状态机对应区块不存在账户地址对应的交易信息。
3)具体介绍循环检索模块
本实施例循环检索模块在历史状态机的查询范围内进行区块链交易进一步检索,其中,在历史交易检索请求中包括初始范围的情况下,以初始范围作为该查询范围,历史交易检索请求中不包括初始范围,则以全部的历史状态机为该查询范围。
本实施例循环检索模块在历史状态机的查询范围内,每次查询位于中间的历史状态机,将其与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同,其中,位于中间的历史状态机为查询范围的中间或中间偏上/下的历史状态机,如此可以确认位于中间的历史状态机对应的区块是否存在账户地址对应的交易信息。具体而言:
若相对查询范围两端均不同,说明中间的历史状态机中账户地址的交易更新信息发生过了更新,即账户地址发生了交易,也就说明中间的历史状态机对应区块存在账户地址的交易信息,则根据中间的历史状态机找到并获取对应区块下账户地址的交易信息。同时,由于中间的历史状态机相对查询范围两端均不同,则说明中间的历史状态机分别与查询范围两端之间均还可能存在账户地址对应的交易信息,故以中间的历史状态机为界线将查询范围一分为二分别重新查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同,此时的查询范围以由初始的调整为两段查询范围,分别再次查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同,以进一步拆解缩小范围再次查询。
若相对查询范围一端不同、另一端相同,则确认中间的历史状态机与不同一端的历史状态机之间有没有账户地址的交易信息未检索:若有则以中间的历史状态机至不同端的历史状态机为查询范围重新查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同;若无则结束当前查询范围的检索。具体而言:相对一端不同说明中间的历史状态机至不同一端的历史状态机之间账户地址发生了交易,故需进一步确认这之间有没有账户地址的交易信息未检索,没有则当前查询范围已经全部检索完毕,有则以中间的历史状态机至不同端的历史状态机为查询范围重新查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同;相对另一端相同说明中间的历史状态机至相同一端的历史状态机之间账户地址未发生了交易,故这段查询范围可以直接不用查询。
进一步地,循环检索模块还需确认中间的历史状态机与不同一端的历史状态机之间有没有账户地址的交易信息未检索,可以通过交易更新信息中的交易编号nonce值进行确认,其中,由于账户的交易编号nonce值是呈递增的:例如中间的历史状态机中账户地址的交易编号nonce值为18,不同一端的历史状态机中账户地址的交易编号nonce值为20,则说明中间的历史状态机与不同一端的历史状态机之间还有一笔账户地址的交易编号nonce值为19的交易信息未检索到,则以中间的历史状态机至不同端的历史状态机为查询范围重新查询位于中间的历史状态机,与查询范围两端的历史状态机比较,确认账户地址的交易更新信息是否相同;再例如,中间的历史状态机中账户地址的交易编号nonce值为19,不同一端的历史状态机中账户地址的交易编号nonce值为20,则说明中间的历史状态机与不同一端的历史状态机之间没有账户地址的交易信息了,则结束当前查询范围的检索。
上述中,确认账户地址的交易更新信息是否相同进一步包括确认账户地址的交易编号和/或内容状态是否相同,其中,交易编号是呈递增且每一交易编号代表唯一交易,其不同可以直接反映账户地址是否发生交易,内容状态会随着交易的执行而发生改变,如账户的余额会改变、交易记录会更新等,其不同也可以间接反映账户地址是否发生交易,据此来判断中间的历史状态机对应的区块是否存在账户地址的交易信息。进一步地,在交易信息中也会存在无效交易信息,对此,在循环检索模块执行过程中,与查询范围两端的历史状态机比较,若相对查询范围两端均不同,并且,相对查询范围任意一端的历史状态机,交易编号不同且内容状态相同,例如交易编号递增但账户余额未变,则说明找到并获取的账户地址的交易信息为无效交易信息,此部分交易信息可以在反馈时直接标注出来或直接丢弃。
本实施例通过循环检索模块的循环检索,基于前一次的查询结果确定下一次的查询范围,从大到小逐层缩小查询范围,剔除不必要的查询范围,快速实现区块链交易的检索,大幅提升交易检索效率,降低了检索的复杂度,尤其随着区块链数据量提升,查找效率优势更加明显。
现通过一具体案例进一步对本实施例进行说明,但不仅限于此。
假设:区块链所有的历史状态机有400个,其中,账户A执行了3笔交易,交易编号分别0~2,第1个历史状态机并无账户A的交易更新信息,第50个历史状态机中账户A的交易编号为0,第100个历史状态机中账户A的交易编号为0,第125个历史状态机中账户A的交易编号为0,第150个历史状态机中账户A的交易编号为1,第175个历史状态机中账户A的交易编号为2,第200个历史状态机中账户A的交易编号为2,第400个历史状态机中账户A的交易编号为2。
基于上述假设情况现需要对账户A进行区块链交易检索:
首先,向区块链节点发送历史交易检索请求,其中,历史交易检索请求中包括账户A的账户地址,但不包括初始范围,即以所有的历史状态为查询范围;
其次,接收到历史交易检索请求之后,初步检索模块查询最初和最新的历史状态机,即第1个和第400个历史状态机,确认两者的账户地址的交易更新信息是否相同:确认第1个历史状态机并无账户A的交易更新信息,而第400个历史状态机中账户A的交易编号为2,两者不同说明之间存在账户A的交易信息,则根据第400个历史状态机找到并获取对应区块下所述账户A的交易信息,即账户A的交易编号为2的一笔交易被检索到;
循环检索模块的第一次检索:在第1至400个历史状态的查询范围内,查询第200个历史状态机,与查询范围两端的第1个和第400个历史状态机比较,确认账户A的交易更新信息是否相同:
第200个历史状态机中账户A的交易编号为2,则相对第1个历史状态机不同、第400个历史状态机相同,说明第200至第400个历史状态机之间无交易信息可检索,进一步确认第1至第200个历史状态机之间还有账户A交易编号0、1未被检索到,故以第1至第200个历史状态机为查询范围进行第二次检索;
循环检索模块的第二次检索:在第1至200个历史状态的查询范围内,查询第100个历史状态机,与查询范围两端的第1个和第200个历史状态机比较,确认账户A的交易更新信息是否相同:
第100个历史状态机中账户A的交易编号为0,则相对第1个历史状态机、第200个历史状态机均不同,说明第100个历史状态机对应的区块存在一笔账户A未检索到的交易信息,则根据第100个历史状态机找到并获取对应区块下所述账户A的交易信息,即账户A的交易编号为0的一笔交易被检索到,同时说明第1至第100个、第100个至第200个历史状态机之间可能还有交易信息可检索,进一步以第100个历史状态机为界线将查询范围一分为二,即以第1至第100、第100至第200为两个查询范围分别执行第三次检索;
循环检索模块的第三次检索:在第1至100个历史状态的查询范围内,查询第50个历史状态机,与查询范围两端的第1个和第100个历史状态机比较,确认账户A的交易更新信息是否相同:
第50个历史状态机中账户A的交易编号为0,则相对第1个历史状态机不同、第100个历史状态机相同,说明第50至第100个历史状态机之间无交易信息可检索,进一步确认第1至第50个历史状态机之间已没有账户A的交易信息,故结束当前查询范围的检索;
同时,在第100至200个历史状态的查询范围内,查询第150个历史状态机,与查询范围两端的第100个和第200个历史状态机比较,确认账户A的交易更新信息是否相同:
第150个历史状态机中账户A的交易编号为1,则相对第100个历史状态机、第200个历史状态机均不同,说明第150个历史状态机对应的区块存在一笔账户A未检索到的交易信息,则根据第150个历史状态机找到并获取对应区块下所述账户A的交易信息,即账户A的交易编号为1的一笔交易被检索到,同时说明第100至第150个、第150个至第200个历史状态机之间可能还有交易信息可检索,进一步以第150个历史状态机为界线将查询范围一分为二,即以第100至第150、第150至第200为两个查询范围分别执行第四次检索;
循环检索模块的第四次检索:在第100至第150个历史状态的查询范围内,查询第125个历史状态机,与查询范围两端的第100个和第150个历史状态机比较,确认账户A的交易更新信息是否相同:
第125个历史状态机中账户A的交易编号为0,则相对第100个历史状态机相同、第150个历史状态机不同,说明第100至第125个历史状态机之间无交易信息可检索,进一步确认第125至第150个历史状态机之间已没有账户A的交易信息,故结束当前查询范围的检索;
同时,在第150至第200个历史状态的查询范围内,查询第175个历史状态机,与查询范围两端的第150个和第200个历史状态机比较,确认账户A的交易更新信息是否相同:
第175个历史状态机中账户A的交易编号为2,则相对第150个历史状态机不同、第200个历史状态机相同,说明第175至第200个历史状态机之间无交易信息可检索,进一步确认第150至第175个历史状态机之间已没有账户A的交易信息,故结束当前查询范围的检索。
通过上述过程本实施例完成了在400个历史状态机中对账户A的区块链交易检索,检索出3笔交易信息。显然地,为了更加清楚说明本实施例的方法,上述假设情况进行了简化以便于说明,实际上,本实施例的方法还可以应用到历史状态机与交易信息更多的复杂情况下进行执行,原理相同,在此不再详细赘述。
本实施例通过查询历史状态机实现对区块链交易的检索,具体通过中间历史状态机与两端历史状态机的比较确认中间历史状态机对应的区块是否有账户地址对应的交易信息,其中,前一次的查询结果确定下一次的查询范围,查询范围从大到小层层缩小范围进行检索,并且每次查询时只确认查询范围位于中间的历史状态,如此,可以边查询边确认有交易信息的查询范围,避免一些无用数据的检索,不需要遍历每条区块链交易信息,也不需要遍历每个历史状态机,就可以实现区块链交易的检索,大幅提升交易检索效率,降低了检索的复杂度,尤其随着区块链数据量提升,查找效率优势更加明显。
本实施例通过查询历史状态机实现对区块链交易的检索,排除因IO访问硬件资源的时间成本,节约了时间上的开销,同时大大降低了访问硬件次数,有效降低了硬件成本。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
第三实施例
本发明还提出了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如上述第一实施例所提及的区块链交易检索方法。
第四实施例
本发明提出了一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述第一实施例中所提及的区块链交易检索方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (13)
1.一种区块链交易检索方法,其特征在于,区块链上设有历史状态机,所述历史状态机用于记录账户的交易更新信息,其中,若有账户执行交易,则更新该账户的所述交易更新信息形成新的所述历史状态机,该方法包括以下步骤:
S1:接收历史交易检索请求,所述历史交易检索请求包括需要查询的账户地址;
S2:查询最初和最新的所述历史状态机,确认两者所述账户地址的所述交易更新信息是否相同:若不同,则根据最新的所述历史状态机找到并获取对应区块下所述账户地址的交易信息并执行下一步骤S3;若相同,则结束检索;
S3:在所述历史状态机的查询范围内,查询位于中间的所述历史状态机,与查询范围两端的所述历史状态机比较,确认所述账户地址的所述交易更新信息是否相同:
若查询范围两端均不同,则根据中间的所述历史状态机找到并获取对应区块下所述账户地址的交易信息,并以中间的所述历史状态机为界线将查询范围一分为二分别重新执行步骤S3;
若查询范围一端不同、另一端相同,则确认中间的所述历史状态机与不同一端的所述历史状态机之间有没有所述账户地址的交易信息未检索:若有则以中间的所述历史状态机至不同端的所述历史状态机为查询范围重新执行步骤S3;若无则结束当前查询范围的检索。
2.根据权利要求1所述的区块链交易检索方法,其特征在于,所述交易更新信息包括交易编号和内容状态,其中,所述若有账户执行交易,则更新该账户的所述交易更新信息形成新的所述历史状态机进一步包括:
若有账户作为源地址执行交易,则更新该账户的所述交易编号形成新的所述历史状态机;
若有账户作为目的地址执行交易,则更新该账户的所述内容状态形成新的所述历史状态机。
3.根据权利要求2所述的区块链交易检索方法,其特征在于,在所述步骤S3中,所述与查询范围两端的所述历史状态机比较,确认所述账户地址的所述交易更新信息是否相同进一步包括:
与查询范围两端的所述历史状态机比较,确认所述账户地址的所述交易编号和/或所述内容状态是否相同。
4.根据权利要求2所述的区块链交易检索方法,其特征在于,在所述步骤S3执行过程中,与查询范围两端的所述历史状态机比较,若查询范围两端均不同,其中,查询范围任意一端的所述历史状态机,所述交易编号不同且所述内容状态相同,则找到并获取的所述账户地址的交易信息为无效交易信息。
5.根据权利要求1至4任意一项所述的区块链交易检索方法,其特征在于,所述历史交易检索请求还包括区块链交易检索的初始范围,其中,所述步骤S2在所述初始范围内查询最初和最新的所述历史状态机,所述步骤S3以所述初始范围作为所述历史状态机初始的查询范围。
6.根据权利要求5所述的区块链交易检索方法,其特征在于,所述步骤S2还包括步骤:
确认最初的历史状态机对应区块是否存在账户地址对应的交易信息:
将最初的历史状态机与在全部的历史状态机当中最原始的历史状态机进行比较,确认账户地址的交易更新信息是否相同,若不同,则通过最初的历史状态机找到并获取对应区块下账户地址的交易信息,若相同,则确认最初的历史状态机对应区块不存在账户地址对应的交易信息。
7.根据权利要求1至4任意一项所述的区块链交易检索方法,其特征在于,区块链上的各个区块设有一状态机索引,其中,根据所述状态机索引查找区块对应的所述历史状态机。
8.一种区块链交易检索系统,其特征在于,区块链上设有历史状态机,所述历史状态机用于记录账户的交易更新信息,其中,若有账户执行交易,则更新该账户的所述交易更新信息形成新的所述历史状态机,该系统包括:
接收模块,用于接收历史交易检索请求,所述历史交易检索请求包括需要查询的账户地址;
初步检索模块,用于查询最初和最新的所述历史状态机,确认两者所述账户地址的所述交易更新信息是否相同:若不同,则根据最新的所述历史状态机找到并获取对应区块下所述账户地址的交易信息并继续检索;若相同,则结束检索;
循环检索模块,用于在所述历史状态机的查询范围内,查询位于中间的所述历史状态机,与查询范围两端的所述历史状态机比较,确认所述账户地址的所述交易更新信息是否相同:
若查询范围两端均不同,则根据中间的所述历史状态机找到并获取对应区块下所述账户地址的交易信息,并以中间的所述历史状态机为界线将查询范围一分为二分别重新查询位于中间的所述历史状态机,与查询范围两端的所述历史状态机比较,确认所述账户地址的所述交易更新信息是否相同;
若查询范围一端不同、另一端相同,则确认中间的所述历史状态机与不同一端的所述历史状态机之间有没有所述账户地址的交易信息未检索:若有则以中间的所述历史状态机至不同端的所述历史状态机为查询范围重新查询位于中间的所述历史状态机,与查询范围两端的所述历史状态机比较,确认所述账户地址的所述交易更新信息是否相同;若无则结束当前查询范围的检索。
9.根据权利要求8所述的区块链交易检索系统,其特征在于,所述交易更新信息包括交易编号和内容状态,其中,若有账户作为源地址执行交易,则更新该账户的所述交易编号形成新的所述历史状态机,若有账户作为目的地址执行交易,则更新该账户的所述内容状态形成新的所述历史状态机。
10.根据权利要求8或9所述的区块链交易检索系统,其特征在于,所述历史交易检索请求还包括区块链交易检索的初始范围,其中,所述检索模块在所述初始范围内查询最初和最新的所述历史状态机,以及以所述初始范围作为所述历史状态机初始的查询范围。
11.根据权利要求8或9所述的区块链交易检索系统,其特征在于,区块链上的各个区块设有一状态机索引,其中,所述检索模块用于根据所述状态机索引查找区块对应的所述历史状态机。
12.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的区块链交易检索方法。
13.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项所述的区块链交易检索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110557494.3A CN113256419B (zh) | 2021-05-21 | 2021-05-21 | 一种区块链交易检索方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110557494.3A CN113256419B (zh) | 2021-05-21 | 2021-05-21 | 一种区块链交易检索方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113256419A CN113256419A (zh) | 2021-08-13 |
CN113256419B true CN113256419B (zh) | 2022-09-02 |
Family
ID=77183609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110557494.3A Active CN113256419B (zh) | 2021-05-21 | 2021-05-21 | 一种区块链交易检索方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113256419B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105225192A (zh) * | 2015-09-09 | 2016-01-06 | 北京思特奇信息技术股份有限公司 | 一种基于明细对账稽核方法及系统 |
CN109710627A (zh) * | 2018-12-29 | 2019-05-03 | 中国银联股份有限公司 | 一种基于区块链网络的交易查询方法及装置 |
CN110471923A (zh) * | 2019-08-12 | 2019-11-19 | 深圳前海微众银行股份有限公司 | 一种区块链交易记录的处理方法及装置 |
CN111899034A (zh) * | 2020-07-28 | 2020-11-06 | 安徽高山科技有限公司 | 一种基于区块链的产品追溯的防伪溯源查询方法 |
-
2021
- 2021-05-21 CN CN202110557494.3A patent/CN113256419B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105225192A (zh) * | 2015-09-09 | 2016-01-06 | 北京思特奇信息技术股份有限公司 | 一种基于明细对账稽核方法及系统 |
CN109710627A (zh) * | 2018-12-29 | 2019-05-03 | 中国银联股份有限公司 | 一种基于区块链网络的交易查询方法及装置 |
CN110471923A (zh) * | 2019-08-12 | 2019-11-19 | 深圳前海微众银行股份有限公司 | 一种区块链交易记录的处理方法及装置 |
CN111899034A (zh) * | 2020-07-28 | 2020-11-06 | 安徽高山科技有限公司 | 一种基于区块链的产品追溯的防伪溯源查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113256419A (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3579496B1 (en) | A method for registering of a data as digital file in a blockchain database | |
KR102226257B1 (ko) | 서비스 데이터를 블록체인 시스템에 기입하기 위한 방법 및 디바이스 | |
US10733176B2 (en) | Detecting phantom items in distributed replicated database | |
EP3561674B1 (en) | Method and apparatus for verifying block data in a blockchain | |
CN110020902B (zh) | 跨链存证方法及访问方法、装置、电子设备 | |
EP3523744A1 (en) | Method and system for identity and credential protection and verification via blockchain | |
WO2021036253A1 (zh) | 在区块链中并发执行交易的方法和装置 | |
CN110689349A (zh) | 一种区块链中的交易哈希值存储和搜索方法及装置 | |
CN111444192B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN110036381B (zh) | 存储器内数据搜索技术 | |
CN113220717B (zh) | 基于区块链的数据核验方法及装置、电子设备 | |
WO2022186954A1 (en) | Method and system of implenting partitioned blockchain | |
EP4244793A1 (en) | Hierarchy-based blockchain | |
US20230168825A1 (en) | Trusted systems for decentralized data storage | |
US20240202185A1 (en) | Method and system for pruning blocks from a blockchain | |
US20210182314A1 (en) | Systems and methods for on-chain / off-chain storage using a cryptographic blockchain | |
CN113256419B (zh) | 一种区块链交易检索方法及系统 | |
CN110928923A (zh) | 一种基于区块链的数据存储方法及系统 | |
CN113763166B (zh) | 一种数据核对的方法及装置 | |
US12020241B1 (en) | Systems and methods for multi-entity blockchain-based event break prevention | |
CN111124279B (zh) | 一种基于主机的存储重删处理方法和装置 | |
US20230118754A1 (en) | Method and system for data retention in pruned blockchains | |
CN115687535A (zh) | 关系型数据库的管理方法及装置 | |
CN115438072A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220725 Address after: 201702 room 235, area K, 2 / F, 158 Shuanglian Road, Qingpu District, Shanghai Applicant after: Shanghai Jiansu Network Technology Co.,Ltd. Address before: Room 4058, building 3, No. 495, Yuejin South Road, Xinhai Town, Chongming District, Shanghai 202172 Applicant before: Shanghai pelac Information Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |