CN112037058B - 数据验证方法、装置及存储介质 - Google Patents
数据验证方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112037058B CN112037058B CN202010883730.6A CN202010883730A CN112037058B CN 112037058 B CN112037058 B CN 112037058B CN 202010883730 A CN202010883730 A CN 202010883730A CN 112037058 B CN112037058 B CN 112037058B
- Authority
- CN
- China
- Prior art keywords
- branch
- block
- target
- verification
- mvcc
- 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 58
- 238000013524 data verification Methods 0.000 title claims abstract description 49
- 238000012795 verification Methods 0.000 claims abstract description 205
- 238000004590 computer program Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
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
- G06Q20/3825—Use of electronic 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/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
- G06Q20/4014—Identity check for transactions
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及区块链技术领域,尤其涉及一种数据验证方法、装置及存储介质,应用于服务器,所述方法包括:将目标区块和预设DAG网络结构中的多个分支进行冲突比较;若该目标区块与多个分支中的多个区块之间不存在冲突,则新增一个分支,用于存储该目标区块;在进行MVCC验证时,将目标分支与多个分支并行验证;若目标区块与多个分支中至少一个第一分支的区块之间存在冲突,则从至少一个第一分支中选取一个第一分支为目标分支;在进行MVCC验证时,可等待至少一个第一分支完成MVCC验证,则对该目标区块进行MVCC验证。采用本申请实施例,有利于提高数据验证效率。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种数据验证方法、装置及存储介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链中一个节点可向客户端提供背书服务,包括对交易ID的重复性检查,交易读写集的生成以及最终的签名等等服务;针对区块链中的每笔交易进行验证以及存储时,大致可包括身份认证、签名认证以及多版本并发控制验证等流程,其中,多版本并发控制(Multi-Version Concurrency Control,MVCC)验证可验证交易中的数据版本是否正确,目前,大多采用单线程对所有的交易逐个进行验证,导致区块链中数据验证效率差。
发明内容
本申请实施例提供一种数据验证方法、装置及存储介质,有利于提高数据验证效率。
本申请实施例第一方面提供了一种数据验证方法,应用于服务器,包括:
获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;
根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突;若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证;
若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中;在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行对所述目标区块进行MVCC验证。
本申请实施例第二方面提供了一种数据验证装置,应用于服务器,所述装置包括:获取单元、判断单元和验证单元,其中,
所述获取单元,用于获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;
所述判断单元,用于根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突;若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证;
所述验证单元,用于若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中;在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行对所述目标区块进行MVCC验证。
本申请实施例的第三方面提供一种服务器,所述服务器包括处理器、通信接口、存储器以及一个或多个程序,所述处理器、通信接口和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行本申请实施例第一方面所述的方法。
本申请实施例的第四方面提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面所描述的部分或全部步骤。
本申请实施例的第五方面提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
实施本申请实施例,至少具有如下有益效果:可获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;根据读集,判断目标区块与每一分支中至少一个区块是否存在冲突;若目标区块与每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储目标区块的写集;在对多个分支进行MVCC验证时,则执行对目标分支与多个分支并行进行MVCC验证;若目标区块与多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取至少一个第一分支中的任意一个第一分支作为目标分支,并将目标区块加入目标分支中;在对至少一个第一分支进行MVCC验证时,等待至少一个第一分支中除目标分支以外的其他分支中的每一区块完成MVCC验证,并等待目标分支中的除目标区块之外的每一区块完成MVCC验证以后,则执行对目标区块进行MVCC验证。如此,将目标区块和预设DAG网络结构中的多个分支进行冲突比较;若该目标区块与多个分支中的多个区块之间不存在冲突,则新增一个分支,用于存储该目标区块;在进行MVCC验证时,将目标分支与多个分支并行验证;若目标区块与多个分支中至少一个第一分支的区块之间存在冲突,则从至少一个第一分支中选取一个第一分支为目标分支;在进行MVCC验证时,可等待至少一个第一分支完成MVCC验证,则对该目标区块进行MVCC验证,因此,可在保证MVCC验证的顺利进行的同时,通过并行验证上述分支之间,串行验证分支内的区块,有利于提高数据验证效率,从而,有利于提高区块链网络的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A为本申请实施例提供了一种数据验证方法的流程示意图;
图1B为本申请实施例提供了一种有向无环图的网络结构图;
图2A为本申请实施例提供了一种数据验证方法的流程示意图;
图2B为本申请实施例提供了一种DAG图的网络结构图;
图2C为本申请实施例提供了一种DAG图的网络结构图;
图2D为本申请实施例提供了一种DAG图的网络结构图;
图3为本申请实施例提供了一种数据验证方法的流程示意图;
图4为本申请实施例提供了一种服务器的结构示意图;
图5为本申请实施例提供了一种数据验证装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
为了能够更好地理解本申请实施例,下面将对应用本申请实施例的方法进行介绍。
本申请实施例中提到的服务器可以包括但不限于后台服务器、组件服务器、云端服务器、数据验证***服务器或数据验证软件服务器等,上述仅是举例,而非穷举,包含但不限于上述装置。
请参见图1A,图1A是本申请实施例提供的一种数据验证方法的流程示意图,应用于服务器,上述方法包括以下步骤:
101、获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块。
其中,本申请实施例应用于服务器,该服务器可包括区块链网络,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
其中,本申请实施例具体可应用于FiMax区块链平台中,该FiMax区块链平台是一种以S3C为基础框架组成的区块链网络,该S3C是由区块链解决方案模块、区块链内核模块、区块链隐私保护模块和区块链网络管理模块组成的框架***。
其中,在本申请实施例中,上述预设DAG(Directed acyclic graph,有向无环图)网络结构可为用户自行设置或者***默认,在此不作限定。
其中,上述预设DAG网络结构是一种有向无环图,如图1B所示,为一种有向无环图的网络结构图,在本申请实施例中,该有向无环图仅为一种可能的排列组合方式,在此不作限定;其中,每一数字可对应代表一个区块,该有向无环图中可包括多条(两条或两条以上)分支,每一分支中可包括至少一个区块,该预设DAG网络结构用于存储多个区块对应的写集和读集。通过上述预设DAG网络结构存储上述多个区块,对上述多个区块进程分类,有利于在后续对上述多个区块进行MVCC验证时,可根据多个分支并行MVCC验证,有利于提高验证效率,同时,也有利于提高上述区块链的性能。
其中,上述目标区块或者区块可指区块链网络中的一个数据组织单元,可由链表来将区块进行串联,每一区块中由有至少一个交易打包而成,交易是存储在区块链网络中的实际数据,该区块可记录确认某些交易是在何时以及何种顺序成为区块链中的一部分。
其中,上述目标区块中可存储或者打包有至少一个交易,每一交易可对应一组交易数据,该交易数据可包括以下至少一项:版本号、区块ID、数据键值对、证书信息、签名信息、公钥等等,在此不作限定;其中,上述至少一个交易之间可相关或不相关,在此不作限定。
可选地,在所述获取目标区块对应的读集和写集之后,还可包括如下步骤:获取所述目标区块中对应的至少一个目标交易;对每一目标交易分别进行身份认证和签名认证;若所述至少一个目标交易中任意一个目标交易A身份认证失败和/或签名认证失败,则执行终止对所述目标交易A的数据验证步骤,所述数据验证步骤至少包括:所述签名认证或者所述MVCC验证。
其中,上述每一目标交易中可包括交易数据,该交易数据可包括以下至少一种:版本号、区块ID、数据键值对、证书信息、签名信息、公钥和私钥等等,在此不做限定。
其中,上述身份(Verify Authority Chain Code,VACC)认证,即通过目标区块中交易数据中对应的证书信息验证这笔交易的发起者是否有权限发起此笔交易。
其中,上述签名(Verify Signature Chain Code,VSCC)认证,即验证此交易的执行者数量是否满足需求以及验证交易数据中包括的交易执行者的签名是否正确。
其中,上述多版本并发控制(Multi-Version Concurrency Control,MVCC)验证是一种并发控制的方法,用于验证上述区块中包括的交易数据的数据版本是否正确;即校验区块中交易的读集是否和当前数据库账本中的版本一致(即没有变化),如果没有改变,说明交易写集中对数据的修改有效,把该交易标注为有效,交易的写集更新到具体的数据库(如状态数据库)中。
其中,一般的,可对每笔交易分别进行身份认证、签名认证和MVCC验证等,以验证交易数据是否正确以及发起交易者是否有权限等等,进而,可将验证以后的数据存储到对应的数据库中,从而保证交易数据的安全性。
具体实现中,可对上述任意一个目标交易中包含的交易数据分别进行上述验证,若上述签名认证或者身份认证或者MVCC验证中任意一种认证失败,则终止后续认证。
102、根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突;若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证。
其中,由于在进行MVCC验证时,主要验证区块中包含的交易数据的数据版本号是否正确,而区块相关信息都是存储于数据库中的,因此,在具体的验证过程中,服务器主要从数据库中获取区块,并主要验证该区块中包含的交易的读集的版本,但是,当需要验证的区块较多时,若一个一个从数据库中获取区块,并单线程实现MVCC验证,效率不高,为了克服上述缺陷,可将获取到的多个区块置于不同的分支中,得到多个分支,并直接对上述多个分支并行进行MVCC验证。
其中,在本申请实施例中,仅以服务器从数据库中获取的任意一个区块,即目标区块为例,进行数据验证方法的说明。
其中,由于在获取上述目标区块以后,该目标区块中的交易数据可能与数据库中其他存储的区块中的交易数据相关联,例如,该目标区块中的一笔交易数据在进行MVCC验证时,可能需要使用上述区块中的交易数据作为参考数据等情况;如此,在进行MVCC验证时,与该目标区块相关联的区块可能会对其的MVCC验证的过程产生冲突或者影响;因此,可在进行MVCC验证之前,对该目标区块与其余多个区块进行冲突判断。
具体实现中,可将该目标区块的读集与数据库中已经存储的区块对应的写集进行比较,以或者可从数据库中获取已经存储的区块信息,若该目标区块与上述每一分支中每一区块之间均不存在冲突,则表明该目标区块与上述预设DAG网络结构的多个分支中每一区块之间不存在数据关联性,进而,可新增一个目标分支,以用来存储该目标区块的写集,由于所有分支的区块之间均不存在数据关联,因此,在后续的MVCC验证时,可对上述多个分支以及该目标分支并行进行MVCC验证,如此,有利于提高验证效率。
在一种可能的示例中,所述根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突,可包括如下步骤:根据所述读集,验证所述读集与所述每一分支中的至少一个区块对应的写集之间是否有关联;若所述读集与所述每一区块对应的写集之间均无关联,则执行确定所述目标区块与所述每一分支中至少一个区块之间不存在冲突;若存在所述读集与至少一个分支中至少一个区块的写集之间有关联,则执行确定所述目标区块与所述多个分支中至少一个分支之间存在冲突。
在一个可能的示例中,所述验证所述读集与所述每一分支中的至少一个区块对应的写集之间是否有关联,可包括如下步骤:确定所述目标区块对应的读集中至少一个第一键值对,每一第一键值对应一笔所述目标交易;确定所述每一分支中每一区块包括的至少一个第二键值对,每一第二键值对对应一个区块中的一个交易;若出现至少一个所述第一键值对与至少一个所述第二键值对相等的情况,则执行确定所述读集与至少一个区块对应的写集之间有关联;若任意一个第一键值对与任意一个第二键值对均不相等,则执行确定所述读集与每一区块对应的写集之间无关联。
其中,上述键值对是一个key和value的映射集,上述键值对也可为哈希值,具体的在此不做限定。
其中,上述键值对都可带有数据版本号,该键值对的版本可记录在读集中;该键值对的最新值可存储在写集中,在区块链网络的数据库可记录账本中所有键值对的当前值,相当于对当前账本的交易日志做了索引,每当交易发生变化时,其对应的键值对也会相应的更新,并且其对应的数据库中的数据也会发生更新;因此,服务器可通过比较目标区块中的读集中第一键值对与多个分支中每一区块的写集中存储的第二键值对的最新值来实现对区块之间是否存在冲突的判断。
具体实现中,可从数据库中读取目标区块的读集,该读集中包括至少一个目标交易,每一目标交易可对应一个第一键值对,同样的,可获取预设DAG网络结构中的多个分支,并获取每一分支中每一区块对应的第二键值对,若目标区块中某一目标交易数据与上述多个区块中任意一个区块对应的交易数据之间有关联,那么,这两个交易对应的键值对都会进行更新,并且两个键值对是相等的,因此,若出现任意一个第一键值对与至少一个第二键值对相等,则表明目标区块与至少一个第二键值对对应的区块之间的交易数据之间有关联;反之,若不存在任意一个第一键值对与第二键值对相等的情况,则表明目标区块与上述多个区块之间没有关联。
103、若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中;在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行对所述目标区块进行MVCC验证。
其中,若上述目标区块与上述多个分支中任意一个第一分支之间存在冲突,则表明该目标区块与上述产生冲突的第一分支中的区块有相关交易数据,那么在后续进行MVCC验证时,可对该目标区块对应的目标分支与相冲突的第一分支之间串行验证,反之,若无冲突,则可将该目标区块对应的目标分支与上述多个分支并行验证。
进一步地,以目标分支中的目标区块为例,若目标区块与多个分支中至少一个第一分支的至少一个区块之间存在冲突,则选取至少一个第一分支中的任意一个第一分支作为目标分支;那么,在后续对上述至少一个第一分支(包含目标分支)进行MVCC验证时,由于该目标分支与其余至少一个第一分支均发生冲突,可等待其余至少一个第一分支验证完成以后,以及该目标分支中其余所有区块验证完成以后,对该目标区块进行MVCC验证。
可选地,若上述除目标分支以外的至少一个第一分支之间是不存在冲突的,可在MVCC的验证过程中,对上述至少一个第一分支进行并行验证,并在所有第一分支中每一区块验证完成以后,再对上述目标分支中的目标区块进行验证;同样地,针对目标分支来说,若目标分支中其余区块之间不存在冲突,则可对目标分支中不存在冲突的多个区块进行并行MVCC验证,并在不存在冲突的多个区块验证完成以后,再对该目标区块进行MVCC验证。
可见,采用本申请实施例,可通过预设DAG网络结构实现对多个区块的分类,分支与分支之间对应的区块之间是不冲突的,而分支内的区块之间可能是存在冲突的;进而,在进行MVCC验证时,可将分支与分支之间并行进行MVCC验证,而分支内可串行进行MVCC验证,
可以看出,本申请实施例中所描述的数据验证方法,应用于服务器,可获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;根据读集,判断目标区块与每一分支中至少一个区块是否存在冲突;若目标区块与每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储目标区块的写集;在对多个分支进行MVCC验证时,则执行对目标分支与多个分支并行进行MVCC验证;若目标区块与多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取至少一个第一分支中的任意一个第一分支作为目标分支,并将目标区块加入目标分支中;在对至少一个第一分支进行MVCC验证时,等待至少一个第一分支中除目标分支以外的其他分支中的每一区块完成MVCC验证,并等待目标分支中的除目标区块之外的每一区块完成MVCC验证以后,则执行对目标区块进行MVCC验证。如此,将目标区块和预设DAG网络结构中的多个分支进行冲突比较;若该目标区块与多个分支中的多个区块之间不存在冲突,则新增一个分支,用于存储该目标区块;在进行MVCC验证时,将目标分支与多个分支并行验证;若目标区块与多个分支中至少一个第一分支的区块之间存在冲突,则从至少一个第一分支中选取一个第一分支为目标分支;在进行MVCC验证时,可等待至少一个第一分支完成MVCC验证,则对该目标区块进行MVCC验证,因此,可在保证MVCC验证的顺利进行的同时,通过并行验证上述分支之间,串行验证分支内的区块,有利于提高数据验证效率,从而,有利于提高区块链网络的性能。
与上述一致地,请参阅图2A,图2A是本申请实施例公开的一种数据验证方法的流程示例图,应用于服务器,该数据验证方法可包括如下步骤:
201、获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块。
202、根据所述读集,验证所述读集与所述每一分支中的至少一个区块对应的读集之间是否有关联。
203、若所述读集与所述每一区块对应的读集之间均无关联,则执行确定所述目标区块与所述每一分支中至少一个区块之间不存在冲突。
204、若存在所述读集与至少一个分支中至少一个区块的读集之间有关联,则执行确定所述目标区块与所述多个分支中至少一个分支之间存在冲突。
205、若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中。
206、若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证。
其中,上述步骤201-206的具体描述可以参照图1B所述的数据验证方法的相应描述,在此不再赘述。
207、确定所述多个分支中与所述目标分支不冲突的至少一个第二分支。
其中,上述第二分支与上述目标分支不冲突可指,上述每一第二分支中对应的任意一个区块对应的交易数据均与上述目标区块对应的目标交易数据不相关。
208、将所述至少一个第一分支与所述至少一个第二分支并行进行所述MVCC验证。
其中,由于上述每一第二分支与上述第一分支以及目标分支均不冲突,因此,在进行MVCC验证时,可将上述至少一个第二分支、至少一个第一分支以及目标分支进行并行验证,以提高数据验证效率。
此外,在分支内部,由于分支内部的区块可能是存在冲突的,因此,可将存在冲突的区块进行串行验证,不存在冲突的区块进行并行验证。
209、在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行对所述目标区块进行MVCC验证。
其中,上述步骤209的具体描述可以参照图1B所述的数据验证方法的相应描述,在此不再赘述。
举例来说,如图2B所示,为一种DAG图的网络结构图,每一数字可对应一个区块,首先,在做MVCC验证之前,服务器可获取区块1,并读取区块1对应的读集以及写集,可基于该区块1建立一条分支,为第一分支,该第一分支中可存储区块1的读集1以及写集1;接着,可获取区块2,以及该区块2对应的读集2和写集2,通过判断读集2与读集1之间存在冲突,则将该区块2对应的读集2和写集2对应存储到第一分支中;获取区块3,以及该区块3对应的读集3以及写集3,通过比较读集3与读集2以及读集1,确定该读集3与上述读集2和读集1均不存在冲突,则在上述预设DGA网络结构中新增一条分支,即第二分支,用于存储区块3对应的读集3与写集4;同样的,可获取区块4以及该区块4对应的读集4和写集4,比较读集4与上述读集1、读集2、读集3均不冲突,则新增第三分支,用于存储区块4的写集4以及读集4。
再进一步地,此时,可获取区块5以及其对应的读集5和写集5,通过比较读集5分别与上述读集2、读集1、读集3和读集4,确定该读集5与上述读集3以及读集4均发生冲突,则可任选一个读集所在的分支作为该读集5的目标分支,如图2C所示,可选取第三分支为目标分支,并加入该第三分支。
此外,如图2D所示,若此时将上述区块5加入第二分支,则可选取第二分支为该区块5的目标分支,并加入该第三分支。
进而,在后续进行MVCC验证时,可并行验证第一分支和第二分支以及第三分支,在分支内部,可串行验证,例如,对于第一分支来说,可先验证区块1,然后再认证区块2;又由于第三分支中的区块5也与第二分支中的区块3冲突,也就是说,区块5中的交易数据与区块3和区块4均有关联,因此,在进行MVCC验证时,可在验证完区块3和区块4以后,再验证区块5。
可以看出,本申请实施例所描述的数据验证方法,应用于服务器,获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;根据读集,验证读集与每一分支中的至少一个区块对应的读集之间是否有关联;若读集与每一区块对应的读集之间均无关联,则执行确定目标区块与每一分支中至少一个区块之间不存在冲突;若存在读集与至少一个分支中至少一个区块的读集之间有关联,则执行确定目标区块与多个分支中至少一个分支之间存在冲突;若目标区块与多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取至少一个第一分支中的任意一个第一分支作为目标分支,并将目标区块加入目标分支中。确定多个分支中与目标分支不冲突的至少一个第二分支;若目标区块与每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储目标区块的写集;在对多个分支进行MVCC验证时,则执行对目标分支与多个分支并行进行MVCC验证;在对至少一个第一分支进行MVCC验证时,等待至少一个第一分支中除目标分支以外的其他分支中的每一区块完成MVCC验证,并等待目标分支中的除目标区块之外的每一区块完成MVCC验证以后,则执行对目标区块进行MVCC验证。如此,可基于上述预设DAG网络结构,对区块进行分类,将相关联的交易数据对应的区块放置于同一分支中,将不相关联的交易数据对应的区块放置于不同分支中;并在后续进行MVCC高并发验证时,可将分支与分支之间并行验证,而分支内可串行或并行验证,有利于提高数据验证效率。
与上述一致地,请参阅图3,图3是本申请实施例公开的一种数据验证方法的流程示例图,应用于服务器,该数据验证方法可包括如下步骤:
301、获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块。
302、根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突;若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证。
303、若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中。
其中,上述步骤301-303的具体描述可以参照图1B所述的数据验证方法的相应描述,在此不再赘述。
304、确定所述多个分支中与所述目标分支不冲突的至少一个第二分支。
305、将所述至少一个第一分支与所述至少一个第二分支并行进行所述MVCC验证。
其中,上述步骤304-305的具体描述可以参照图2A所述的数据验证方法的相应描述,在此不再赘述。
306、在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行确定每一所述目标交易对应的交易数据,得到至少一个交易数据。
307、获取每一所述交易数据对应的数据版本号,得到至少一个数据版本号。
308、将每一数据版本号与预设版本号进行比较,若每一数据版本号与所述预设版本号相同,则确定对所述目标区块进行MVCC验证成功;若存在一个数据版本号与所述预设版本号不同,则确定对所述目标区块进行MVCC验证失败。
其中,上述预设版本号可为用户自行设置或者***默认,在此不作限定。该预设版本号可为后台工作人员进行设置,例如,可为100或者200等,若针对一个交易进行MVCC验证成功,则表明该笔交易是有效的,则该交易对应的区块可存储到本地链中,且验证成功的对应的结果数据可存储到数据库中。
本申请实施例仅以其中一个区块为例作数据验证的说明,每一区块中可包括至少一个交易,一般情况下,区块中可对应打包有成百上千个交易。上述目标区块中可包括至少一个目标交易,在对目标区块进行MVCC验证时,是以每个目标交易为单位的,直到每一目标交易验证完成,则可确定该目标区块MVCC验证完成。
具体实现中,上述每一目标交易对应的交易数据对应的版本号可对应存储在数据库中该区块对应的读集中,可通过交易版本号验证交易是否有效,也就是交易是否为正常交易,若数据版本号发生变化,则表明该交易无效,也就是说该交易可能已经超时或者过时,则可确定该交易无效,并确定该目标区块进行MVCC验证失败;若交易对应的数据版本号与预设版本号相同,则可确定该交易为正常交易,则可确定对该目标区块MVCC验证成功。
309、当对所述目标区块完成进行MVCC验证完成以后,则执行在所述目标分支中删除所述目标区块对应的所述写集。
其中,服务器可在对该目标区块进行MVCC验证完成以后,删除该目标区块对应的写集,并将该操作写入数据库中,以防止重复进行MVCC验证,此外,在进行下一次的MVCC验证时,从数据库获取新的区块以后,由于写集中可存储有最新的键值对,可将该新的区块对应的读集与上述目标区块的写集进行比较,以确定其两者之间是否有冲突,若有冲突,则在对新的区块的写集进行MVCC验证的时候,可重复上述相关步骤,以完成该新的区块的MVCC的验证。
可以看出,本申请实施例所描述的数据验证方法,应用于服务器,获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;根据读集,判断目标区块与每一分支中至少一个区块是否存在冲突;若目标区块与每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储目标区块的写集;在对多个分支进行MVCC验证时,则执行对目标分支与多个分支并行进行MVCC验证;若目标区块与多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取至少一个第一分支中的任意一个第一分支作为目标分支,并将目标区块加入目标分支中。在对至少一个第一分支进行MVCC验证时,等待至少一个第一分支中除目标分支以外的其他分支中的每一区块完成MVCC验证,并等待目标分支中的除目标区块之外的每一区块完成MVCC验证以后,则执行确定每一目标交易对应的交易数据,得到至少一个交易数据;确定多个分支中与目标分支不冲突的至少一个第二分支;将至少一个第一分支与至少一个第二分支并行进行MVCC验证;在对至少一个第一分支进行MVCC验证时,等待至少一个第一分支中除目标分支以外的其他分支中的每一区块完成MVCC验证,并等待目标分支中的除目标区块之外的每一区块完成MVCC验证以后,则执行确定每一目标交易对应的交易数据,得到至少一个交易数据;获取每一交易数据对应的数据版本号,得到至少一个数据版本号;将每一数据版本号与预设版本号进行比较,若每一数据版本号与预设版本号相同,则确定对目标区块进行MVCC验证成功;若存在一个数据版本号与预设版本号不同,则确定对目标区块进行MVCC验证失败;当对目标区块完成进行MVCC验证完成以后,则执行在目标分支中删除目标区块对应的写集。如此,可基于上述预设DAG网络结构,对区块进行分类,将相关联的交易数据对应的区块放置于同一分支中,将不相关联的交易数据对应的区块放置于不同分支中;并在后续进行MVCC高并发验证时,可将分支与分支之间并行验证,而分支内可串行或并行验证,有利于提高数据验证效率。此外,当对目标区块MVCC验证完成以后,可删除该目标区块对应的写集,以避免再一次重复验证。
与上述一致地,请参阅图4,图4为本申请实施例提供的一种服务器的结构示意图,如图4所示,包括处理器、通信接口、存储器以及一个或多个程序,所述处理器、通信接口和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,上述一个或多个程序程序包括用于执行以下步骤的指令:
获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;
根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突;若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证;
若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中;在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行对所述目标区块进行MVCC验证。
可以看出,本申请实施例中所描述的服务器,可获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;根据读集,判断目标区块与每一分支中至少一个区块是否存在冲突;若目标区块与每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储目标区块的写集;在对多个分支进行MVCC验证时,则执行对目标分支与多个分支并行进行MVCC验证;若目标区块与多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取至少一个第一分支中的任意一个第一分支作为目标分支,并将目标区块加入目标分支中;在对至少一个第一分支进行MVCC验证时,等待至少一个第一分支中除目标分支以外的其他分支中的每一区块完成MVCC验证,并等待目标分支中的除目标区块之外的每一区块完成MVCC验证以后,则执行对目标区块进行MVCC验证。如此,将目标区块和预设DAG网络结构中的多个分支进行冲突比较;若该目标区块与多个分支中的多个区块之间不存在冲突,则新增一个分支,用于存储该目标区块;在进行MVCC验证时,将目标分支与多个分支并行验证;若目标区块与多个分支中至少一个第一分支的区块之间存在冲突,则从至少一个第一分支中选取一个第一分支为目标分支;在进行MVCC验证时,可等待至少一个第一分支完成MVCC验证,则对该目标区块进行MVCC验证,因此,可在保证MVCC验证的顺利进行的同时,通过并行验证上述分支之间,串行验证分支内的区块,有利于提高数据验证效率,从而,有利于提高区块链网络的性能。
在一个可能的示例中,在所述获取目标区块对应的读集和写集之后,所述程序用于执行以下步骤的指令:
获取所述目标区块中对应的至少一个目标交易;
对每一目标交易分别进行身份认证和签名认证;
若所述至少一个目标交易中任意一个目标交易A身份认证失败和/或签名认证失败,则执行终止对所述目标交易A的数据验证步骤,所述数据验证步骤至少包括:所述签名认证或者所述MVCC验证。
在一个可能的示例中,在所述根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突方面,所述程序用于执行以下步骤的指令:
根据所述读集,验证所述读集与所述每一分支中的至少一个区块对应的写写集之间是否有关联;
若所述读集与所述每一区块对应的写集之间均无关联,则执行确定所述目标区块与所述每一分支中至少一个区块之间不存在冲突;
若存在所述读集与至少一个分支中至少一个区块的写集之间有关联,则执行确定所述目标区块与所述多个分支中至少一个分支之间存在冲突。
在一个可能的示例中,在所述验证所述读集与所述每一分支中的至少一个区块对应的写集之间是否有关联方面,所述程序用于执行以下步骤的指令:
确定所述目标区块对应的读集中至少一个第一键值对,每一第一键值对应一笔所述目标交易;
确定所述每一分支中每一区块包括的至少一个第二键值对,每一第二键值对对应一个区块中的一个交易;
若出现至少一个所述第一键值对与至少一个所述第二键值对相等的情况,则执行确定所述读集与至少一个区块对应的写集之间有关联;若任意一个第一键值对与任意一个第二键值对均不相等,则执行确定所述读集与每一区块对应的写集之间无关联。
在一个可能的示例中,在所述对所述目标区块进行MVCC验证方面,所述程序用于执行以下步骤的指令:
确定每一所述目标交易对应的交易数据,得到至少一个交易数据;
获取每一所述交易数据对应的数据版本号,得到至少一个数据版本号;
将每一数据版本号与预设版本号进行比较,若每一数据版本号与所述预设版本号相同,则确定对所述目标区块进行MVCC验证成功;若存在一个数据版本号与所述预设版本号不同,则确定对所述目标区块进行MVCC验证失败。
在一个可能的示例中,若所述读集与所述多个分支中的至少一个分支有冲突,在所述在对所述至少一个第一分支进行所述MVCC验证方面,所述程序用于执行以下步骤的指令:
确定所述多个分支中与所述目标分支不冲突的至少一个第二分支;
将所述至少一个第一分支与所述至少一个第二分支并行进行所述MVCC验证。
在一个可能的示例中,所述程序还用于执行以下步骤的指令:
当对所述目标区块完成进行MVCC验证完成以后,则执行在所述目标分支中删除所述目标区块对应的所述写集。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,服务器为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对服务器进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
与上述一致地,请参阅图5,图5是本申请实施例公开的一种数据验证装置的结构示意图,应用于服务器,该装置包括:获取单元501、判断单元502和验证单元503,其中,
所述获取单元501,用于获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;
所述判断单元502,用于根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突;若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证;
所述验证单元503,用于若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中;在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行对所述目标区块进行MVCC验证。
可以看出,本申请实施例中所描述的数据验证装置,应用于服务器,可获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;根据读集,判断目标区块与每一分支中至少一个区块是否存在冲突;若目标区块与每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储目标区块的写集;在对多个分支进行MVCC验证时,则执行对目标分支与多个分支并行进行MVCC验证;若目标区块与多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取至少一个第一分支中的任意一个第一分支作为目标分支,并将目标区块加入目标分支中;在对至少一个第一分支进行MVCC验证时,等待至少一个第一分支中除目标分支以外的其他分支中的每一区块完成MVCC验证,并等待目标分支中的除目标区块之外的每一区块完成MVCC验证以后,则执行对目标区块进行MVCC验证。如此,将目标区块和预设DAG网络结构中的多个分支进行冲突比较;若该目标区块与多个分支中的多个区块之间不存在冲突,则新增一个分支,用于存储该目标区块;在进行MVCC验证时,将目标分支与多个分支并行验证;若目标区块与多个分支中至少一个第一分支的区块之间存在冲突,则从至少一个第一分支中选取一个第一分支为目标分支;在进行MVCC验证时,可等待至少一个第一分支完成MVCC验证,则对该目标区块进行MVCC验证,因此,可在保证MVCC验证的顺利进行的同时,通过并行验证上述分支之间,串行验证分支内的区块,有利于提高数据验证效率,从而,有利于提高区块链网络的性能。
在一种可能的示例中,在所述根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突方面,所述判断单元502具体用于:
根据所述读集,验证所述读集与所述每一分支中的至少一个区块对应的写写集之间是否有关联;
若所述读集与所述每一区块对应的写集之间均无关联,则执行确定所述目标区块与所述每一分支中至少一个区块之间不存在冲突;
若存在所述读集与至少一个分支中至少一个区块的写集之间有关联,则执行确定所述目标区块与所述多个分支中至少一个分支之间存在冲突。
在一个可能的示例中,在所述验证所述读集与所述每一分支中的至少一个区块对应的写集之间是否有关联方面,所述验证单元503具体用于:
确定所述目标区块对应的读集中至少一个第一键值对,每一第一键值对应一笔所述目标交易;
确定所述每一分支中每一区块包括的至少一个第二键值对,每一第二键值对对应一个区块中的一个交易;
若出现至少一个所述第一键值对与至少一个所述第二键值对相等的情况,则执行确定所述读集与至少一个区块对应的写集之间有关联;若任意一个第一键值对与任意一个第二键值对均不相等,则执行确定所述读集与每一区块对应的写集之间无关联。
在一个可能的示例中,在所述对所述目标区块进行MVCC验证方面,所述验证单元503具体还用于:
确定每一所述目标交易对应的交易数据,得到至少一个交易数据;
获取每一所述交易数据对应的数据版本号,得到至少一个数据版本号;
将每一数据版本号与预设版本号进行比较,若每一数据版本号与所述预设版本号相同,则确定对所述目标区块进行MVCC验证成功;若存在一个数据版本号与所述预设版本号不同,则确定对所述目标区块进行MVCC验证失败。
在一个可能的示例中,若所述读集与所述多个分支中的至少一个分支有冲突,在所述在对所述至少一个第一分支进行所述MVCC验证方面,所述验证单元503具体还用于:
确定所述多个分支中与所述目标分支不冲突的至少一个第二分支;
将所述至少一个第一分支与所述至少一个第二分支并行进行所述MVCC验证。
本申请实施例还提供一种计算机可读存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种数据验证方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种数据验证方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种数据验证方法,其特征在于,应用于服务器,包括:
获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;
根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突;若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证;
若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中;在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行对所述目标区块进行MVCC验证;
其中,所述根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突,包括:根据所述读集,验证所述读集与所述每一分支中的至少一个区块对应的写集之间是否有关联;若所述读集与所述每一区块对应的写集之间均无关联,则执行确定所述目标区块与所述每一分支中至少一个区块之间不存在冲突;若存在所述读集与至少一个分支中至少一个区块的写集之间有关联,则执行确定所述目标区块与所述多个分支中至少一个分支之间存在冲突;
所述对所述目标区块进行MVCC验证,包括:确定所述目标区块中对应的至少一个目标交易中每一所述目标交易对应的交易数据,得到至少一个交易数据;获取每一所述交易数据对应的数据版本号,得到至少一个数据版本号;将每一数据版本号与预设版本号进行比较,若每一数据版本号与所述预设版本号相同,则确定对所述目标区块进行MVCC验证成功;若存在一个数据版本号与所述预设版本号不同,则确定对所述目标区块进行MVCC验证失败。
2.根据权利要求1所述的方法,其特征在于,在所述获取目标区块对应的读集和写集之后,所述方法还包括:
获取所述目标区块中对应的至少一个目标交易;
对每一目标交易分别进行身份认证和签名认证;
若所述至少一个目标交易中任意一个目标交易A身份认证失败和/或签名认证失败,则执行终止对所述目标交易A的数据验证步骤,所述数据验证步骤至少包括:所述签名认证或者所述MVCC验证。
3.根据权利要求2所述的方法,其特征在于,所述验证所述读集与所述每一分支中的至少一个区块对应的写集之间是否有关联,包括:
确定所述目标区块对应的读集中至少一个第一键值对,每一第一键值对应一笔所述目标交易;
确定所述每一分支中每一区块包括的至少一个第二键值对,每一第二键值对对应一个区块中的一个交易;
若出现至少一个所述第一键值对与至少一个所述第二键值对相等的情况,则执行确定所述读集与至少一个区块对应的写集之间有关联;若任意一个第一键值对与任意一个第二键值对均不相等,则执行确定所述读集与每一区块对应的写集之间无关联。
4.根据权利要求2或3所述的方法,其特征在于,若所述读集与所述多个分支中的至少一个分支有冲突,所述在对所述至少一个第一分支进行所述MVCC验证时,所述方法还包括:
确定所述多个分支中与所述目标分支不冲突的至少一个第二分支;
将所述至少一个第一分支与所述至少一个第二分支并行进行所述MVCC验证。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当对所述目标区块完成进行MVCC验证完成以后,则执行在所述目标分支中删除所述目标区块对应的所述写集。
6.一种数据验证装置,其特征在于,应用于服务器,所述装置包括:获取单元、判断单元和验证单元,其中,
所述获取单元,用于获取目标区块对应的读集和写集;获取预设DAG网络结构中的多个分支,每一分支对应至少一个区块;
所述判断单元,用于根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突;若所述目标区块与所述每一分支中至少一个区块之间不存在冲突,则执行新增一个目标分支以用于存储所述目标区块的所述写集;在对所述多个分支进行MVCC验证时,则执行对所述目标分支与所述多个分支并行进行MVCC验证,其中,在所述所述根据所述读集,判断所述目标区块与所述每一分支中至少一个区块是否存在冲突方面,所述判断单元具体用于:根据所述读集,验证所述读集与所述每一分支中的至少一个区块对应的写集之间是否有关联;若所述读集与每一所述区块对应的写集之间均无关联,则执行确定所述目标区块与所述每一分支中至少一个区块之间不存在冲突;若存在所述读集与至少一个分支中至少一个区块的写集之间有关联,则执行确定所述目标区块与所述多个分支中至少一个分支之间存在冲突;
所述验证单元,用于若所述目标区块与所述多个分支中至少一个第一分支的至少一个区块之间存在冲突,则执行选取所述至少一个第一分支中的任意一个第一分支作为所述目标分支,并将所述目标区块加入所述目标分支中;在对所述至少一个第一分支进行所述MVCC验证时,等待所述至少一个第一分支中除所述目标分支以外的其他分支中的每一区块完成所述MVCC验证,并等待所述目标分支中的除所述目标区块之外的每一区块完成所述MVCC验证以后,则执行对所述目标区块进行MVCC验证,其中,在所述对所述目标区块进行MVCC验证方面,所述验证单元具体用于:确定所述目标区块中对应的至少一个目标交易中每一所述目标交易对应的交易数据,得到至少一个交易数据;获取每一所述交易数据对应的数据版本号,得到至少一个数据版本号;将每一数据版本号与预设版本号进行比较,若每一数据版本号与所述预设版本号相同,则确定对所述目标区块进行MVCC验证成功;若存在一个数据版本号与所述预设版本号不同,则确定对所述目标区块进行MVCC验证失败。
7.一种服务器,其特征在于,包括处理器、通信接口、存储器以及一个或多个程序,所述处理器、通信接口和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-5任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-5任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010883730.6A CN112037058B (zh) | 2020-08-28 | 2020-08-28 | 数据验证方法、装置及存储介质 |
PCT/CN2021/097243 WO2022041901A1 (zh) | 2020-08-28 | 2021-05-31 | 数据验证方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010883730.6A CN112037058B (zh) | 2020-08-28 | 2020-08-28 | 数据验证方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112037058A CN112037058A (zh) | 2020-12-04 |
CN112037058B true CN112037058B (zh) | 2024-03-26 |
Family
ID=73587610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010883730.6A Active CN112037058B (zh) | 2020-08-28 | 2020-08-28 | 数据验证方法、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112037058B (zh) |
WO (1) | WO2022041901A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112037058B (zh) * | 2020-08-28 | 2024-03-26 | 平安科技(深圳)有限公司 | 数据验证方法、装置及存储介质 |
CN113746908A (zh) * | 2021-08-19 | 2021-12-03 | 卓尔智联(武汉)研究院有限公司 | 数据处理方法及***、电子设备及计算机存储介质 |
CN114221961B (zh) * | 2021-12-14 | 2024-03-26 | 深圳前海微众银行股份有限公司 | 层级式dag区块链生成方法、设备、介质及程序产品 |
CN115796874B (zh) * | 2023-01-09 | 2023-05-09 | 杭州安节科技有限公司 | 一种操作级别的区块链交易并发执行方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109559226A (zh) * | 2018-11-28 | 2019-04-02 | 杭州有盾网络科技有限公司 | 区块链交易执行方法、***及电子设备和存储介质 |
CN110851535A (zh) * | 2019-11-18 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、存储介质及终端 |
WO2020108289A1 (zh) * | 2018-11-29 | 2020-06-04 | 华为技术有限公司 | 一种数据库***、节点和方法 |
CN111241061A (zh) * | 2020-01-09 | 2020-06-05 | 平安科技(深圳)有限公司 | 状态数据库的写入方法、数据处理装置及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180254093A1 (en) * | 2017-03-02 | 2018-09-06 | Allocrypt Inc. | Cryptographically secure medical test data distribution system using smart testing/diagnostic devices |
US10579368B2 (en) * | 2017-03-10 | 2020-03-03 | Salesforce.Com, Inc. | Blockchain version control systems |
US10922692B2 (en) * | 2017-04-05 | 2021-02-16 | Samsung Sds Co., Ltd. | Method for calculating confirmation reliability for blockchain based transaction and blockchain network monitoring system for performing the method |
US10701054B2 (en) * | 2018-01-31 | 2020-06-30 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment |
CN110807047A (zh) * | 2018-07-20 | 2020-02-18 | 富士通株式会社 | 管理信息处理任务的有效性的方法和装置 |
US11521202B2 (en) * | 2018-08-30 | 2022-12-06 | International Business Machines Corporation | Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing |
CN109614206A (zh) * | 2018-10-25 | 2019-04-12 | 深圳壹账通智能科技有限公司 | 区块链事务处理的装置、方法及存储介质 |
US11288280B2 (en) * | 2018-10-31 | 2022-03-29 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing consumer data validation, matching, and merging across tenants with optional verification prompts utilizing blockchain |
US11783024B2 (en) * | 2019-01-31 | 2023-10-10 | Salesforce, Inc. | Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and IPFS integration |
CN110781196A (zh) * | 2019-09-06 | 2020-02-11 | 深圳壹账通智能科技有限公司 | 区块链事务处理方法、装置、计算机设备及存储介质 |
CN112037058B (zh) * | 2020-08-28 | 2024-03-26 | 平安科技(深圳)有限公司 | 数据验证方法、装置及存储介质 |
-
2020
- 2020-08-28 CN CN202010883730.6A patent/CN112037058B/zh active Active
-
2021
- 2021-05-31 WO PCT/CN2021/097243 patent/WO2022041901A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109559226A (zh) * | 2018-11-28 | 2019-04-02 | 杭州有盾网络科技有限公司 | 区块链交易执行方法、***及电子设备和存储介质 |
WO2020108289A1 (zh) * | 2018-11-29 | 2020-06-04 | 华为技术有限公司 | 一种数据库***、节点和方法 |
CN110851535A (zh) * | 2019-11-18 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、存储介质及终端 |
CN111241061A (zh) * | 2020-01-09 | 2020-06-05 | 平安科技(深圳)有限公司 | 状态数据库的写入方法、数据处理装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112037058A (zh) | 2020-12-04 |
WO2022041901A1 (zh) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112037058B (zh) | 数据验证方法、装置及存储介质 | |
US11196572B2 (en) | Blockchain-based content verification | |
EP3678346B1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
US20200294048A1 (en) | Blockchain-based data verification method and apparatus, and electronic device | |
TWI734088B (zh) | 基於區塊鏈的交易處理方法及裝置、電子設備 | |
Sonnino et al. | Replay attacks and defenses against cross-shard consensus in sharded distributed ledgers | |
KR102237014B1 (ko) | 블록체인-기반 인증을 위한 시스템 및 방법 | |
US20190050598A1 (en) | Secure data storage | |
CN107077546B (zh) | 用于更新持有因素凭据的***和方法 | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CA3030813A1 (en) | Method for providing smart contract-based certificate service, and server employing same | |
KR101937220B1 (ko) | 키 관리가 필요없는 블록체인을 기반한 전자서명 또는 메시지 인증 코드를 생성 및 검증 방법 | |
US11769146B1 (en) | Blockchain transactional identity verification | |
CN115514492A (zh) | Bios固件验证方法、装置、服务器、存储介质和程序产品 | |
CN109033818B (zh) | 终端、验证方法和计算机可读存储介质 | |
CN112015558A (zh) | 数据验证方法、装置及存储介质 | |
JP6174247B2 (ja) | ハッシュを利用したプログラムの無欠性検証方法 | |
CN109063461B (zh) | 一种第三方免密登录方法及*** | |
US11973878B2 (en) | Non-fungible token custody chain for multi-component hardware devices | |
CN113886894A (zh) | 数字签名方法和数字签名设备 | |
CN112732676A (zh) | 基于区块链的数据迁移方法、装置、设备及存储介质 | |
CN111461721A (zh) | 一种基于区块链的保护账户、验证交易的方法及装置 | |
US11893587B2 (en) | System for enhanced authentication using non-fungible tokens (NFTs) | |
CN109165208A (zh) | 一种用于将数据加载到数据库中的方法及*** | |
CN111625369B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |