一种基于区块链的数据验证方法与流程

文档序号:24235838发布日期:2021-03-12 13:07阅读:79来源:国知局
一种基于区块链的数据验证方法与流程

本发明涉及区块链技术领域,尤其涉及一种基于区块链的数据验证方法。



背景技术:

随着互联网技术的发展,数据库的数据安全隐患越来越明显,因此需要采用各种不同的安全保护措施,以保护数据库中的数据安全,防止其因偶然或者恶意等原因遭到破坏。针对非授权用户对数据库进行恶意修改的问题上,目前系统通过计算机系统防火墙,数据库内置的安全策略等方式来防范。当非授权用户对越过安全措施对数据进行修改时,如何验证数据库是否被修改,现有技术的解决方案过于系统定制化,无法适用多种数据库和业务系统。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供一种基于区块链的数据验证方法,方便验证数据是否被修改,提高业务系统的安全性,同时能适配不同业务系统,提高了方法的适用性。

为了实现上述目的,本发明提供一种基于区块链的数据验证方法,所述基于区块链的数据验证方法包括操作端、连接池组件、区块链数据库以及存储数据库;

所述操作端操作所述存储数据库;

所述连接池组件获取所述存储数据库数据变化后的最终数据,并对所述最终数据进行解析、封装以及计算,生成再生数据,所述区块链数据库获取所述再生数据并根据所述再生数据完成数据更新;以及

所述操作端调用所述连接池组件,所述连接池组件获取所述操作端提交的的待验数据并进行解析、封装以及计算生成验证数据,所述连接池组件获取与所述验证数据相对应的所述区块链数据库中的数据,判断所述区块链数据库中的数据与所述验证数据是否一致,若一致,则验证成功。

在本申请的一实施例中,所述连接池组件至少包括连接池、语言解析包以及sdk;

所述连接池拦截所述最终数据并为其分配连接,所述语言解析包连通所述连接池,所述语言解析包用于解析所述最终数据,所述sdk获取解析后的最终数据,并对其进行计算生成再生数据,所述区块链数据库获取所述再生数据并根据所述再生数据完成数据更新。

在本申请的一实施例中,所述sdk至少封装有默克尔树算法,所述sdk获取解析后的最终数据并对其进行默克尔树计算,获取最终数据对应的hash值,所述区块链数据库获取所述hash值并根据获取的hash值更新数据。

在本申请的一实施例中,所述sdk还封装有批处理延时消息队列,所述批处理延时消息队列获取解析后的最终数据,若所述批处理延时消息队列未抛出异常,则对解析后的最终数据进行默克尔树计算,获取数据状态的hash值,根据获取的hash值更新所述区块链数据库的数据状态。

在本申请的一实施例中,所述语言解析包获取所述待验数据,并对所述待验数据进行解析,获取所述待验证数据的所有数据列属性。

在本申请的一实施例中,所述sdk获取所述待验数据的所有数据列属性,所述sdk根据所述待验数据的所有数据列属性获取所述区块链数据库中的日志文件,所述日志文件与所述待验数据相对应。

在本申请的一实施例中,若获取日志成功,则所述sdk获取所述日志文件中的记录的默克尔根hash值和待验证数据区块链操作序列号。

在本申请的一实施例中,所述sdk通过所述日志中的记录的默克尔根hash值匹配对应默克尔树算法,并通过匹配的默克尔树算法对所述待验数据进行计算,获得所述待验数据的节点值,定义该节点值为n1。

在本申请的一实施例中,所述sdk通过所述待验数据区块链操作序列号获取匹配的默克尔树算法的另一节点值,定义该节点值为n2。

在本申请的一实施例中,若所述节点n1与所述节点n2一致,则验证成功。

本发明实施例提出的一种基于区块链的数据验证方法,当操作端操作存储数据库后,记录最后存储数据库的数据状态属性,即存储数据库的最终数据,然后通过设置的连接池组件对最终数据进行解析、封装以及计算,把最终数据转换成再生数据,存储于区块链数据库,通过区块链数据库记录存储数据库最后的数据状态以及操作的动作,为后期数据的验证提供了保障。当需要验证业务数据库的数据是否被篡改时,先将待验数据发送提交至连接池组件,连接池组件对待验证数据进行解析封装以及计算,获得验证数据,同时连接池组件调取存储于区块链数据库中与待验数据相匹配的区块链数据,比较两数据是否一致,若两者一致,则验证通过,表明数据违背修改。此过程利用区块链数据库的不可篡改性,保证数据验证的准确性。由于此系统中的连接池组件可以实现模块化编辑,因此可以适用于不同的系统,避免系统过于定制化,提高了系统的适用性。

附图说明

图1是本发明实施例基于区块链的数据验证方法的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例的主要解决方案时:所述基于区块链的数据验证方法包括操作端、连接池组件、区块链数据库以及存储数据库;

步骤s10:所述操作端操作所述存储数据库;

步骤s20:所述连接池组件获取所述存储数据库数据变化后的最终数据,并对所述最终数据进行解析、封装以及计算,生成再生数据,所述区块链数据库获取所述再生数据并根据所述再生数据完成数据更新;以及

步骤s30:所述操作端调用所述连接池组件,所述连接池组件获取所述操作端提交的待验数据并进行解析、封装以及计算生成验证数据,所述连接池组件获取与所述验证数据相对应的所述区块链数据库中的数据;

步骤s40:判断所述区块链数据库中的数据与所述验证数据的是否一致;

步骤s50:若一致,则验证成功。

由于现有技术,主要是通过针对个别系统设计定制化的验证方案,这种方式的前期工作复杂、用户需要对该定制化的验证方案投入更多的成本,当用于需要再次搭建相同验证系统时,需要再次进行定制,系统移植性差,严重制约了系统的推广和应用。

本发明提供一种解决方案,此过程利用区块链数据库的不可篡改性,保证数据验证的准确性。由于此系统中的连接池组件可以实现模块化编辑,因此可以适用于不同的系统,避免系统过于定制化,提高了系统的适用性。

本发明实施例提供一种基于区块链的数据验证方法。

参照图1,提出本发明基于区块链的数据验证方法的实施例中,所述基于区块链的数据验证方法包括操作端、连接池组件、区块链数据库以及存储数据库;其中,操作端可以为个人电脑、移动终端、以及网络服务端等,可以实现远/近程数据操作的智能设备,主要用于实现对数据库的数据进行操作。

连接池组件主要是通过软件代码实现数据调用,解析以及计算等,连接池组件内设置有链接数据库与数据库之间接口,并提供加密算法,保证数据的安全性。

区块链数据库是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。保证了数据的安全性和稳定性。

存储数据库用于存储数据,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

具体步骤如下:

步骤s10,所述操作端操作所述存储数据库;操作端通过网络连通存储数据库,具备存储数据的操作权限。操作端操作存储数据库,通过新增、查询、更新、删除存储数据库以实现修改或删除数据的目的。

步骤s20,所述连接池组件获取所述存储数据库数据变化后的最终数据,并对所述最终数据进行解析、封装以及计算,生成再生数据,所述区块链数据库获取所述再生数据并根据所述再生数据完成数据更新;具体的,当操作端完成对存储数据库操作后,存储数据库的数据全部更新完毕。待存储数据库的数据全部更新完毕后,链接池组件获取存储数据库变化后的最终数据,本文中的最终数据是指存储数据库被操作后的最终状态,即最后的数据状态属性,最终数据包含数据库唯一标志、数据表名、创建时间、数据库操作语句以及操作类型等,文中的操作类型包括但不限于新增、删除、修改。当然根据设计的需要,可以实现在编辑存储数据库的同时连接池组件同步获取最终数据,以实现数据的无缝连接,提高数据的处理效率。

连接池组件获取最终数据后,对最终数据进行解析、封装以及计算,生成再生数据。其中解析实现对mysql,oracle等常用业务数据库的sql语言的解析,主要采用通过构建sql抽象语法树结构,对sql语言进行解析。以数据库选择命令为例,解析内容包含但不限于查询来源表、查询关联表、语句解析、查询数量解析、查询条件参数解析等。连接池组件完成对最终数据解析后,对解析后的数据进行重新封装,包括建立给解析的数据添加时间、构建数据结构模型等,以使解析后的数据满足计算条件,连接池组件对解析后的数据进行计算形成再生数据。

具体的本文中的再生数据是指:对最终数据进行解析、封装以及计算后以满足区块链存储要求的数据。连接池组件完成对最终数据处理后,将数据传输至区块链数据库,区块链数据库根据获取的再生数据对本数据库中的数据进行更新。更新内容包含修改或者增加。以实现对数据的备份保存,为后面的数据校验提供基础。当区块链数据库完成数据更新后,反馈相应数据的默克尔树序列号至对应数据,以方便后期数据校验时,需要校验的数据获取对应的默克尔树算法,完成数据计算,从而实现数据验证的功能。由于区块链数据库各个节点间相互独立,且互为校验,保证了区块链数据的可信度。

步骤s30,所述操作端调用所述连接池组件,所述连接池组件获取所述操作端提交的待验数据并进行解析、封装以及计算生成验证数据,所述连接池组件获取与所述验证数据相对应的所述区块链数据库中的数据;具体的,通过步骤s10和步骤s20完成了对存储数据库的数据备份,在需要进行数据校验时,操作端请求调用连接池组件,连接池组件响应操作端调用并建立连接,连接池组件获取存操作端中需要进行校验的待验数据,文中所述的待验数据具体是指需要验证自身数据是否被非法篡改的数据。连接池组件获取待验数据后对待验数据进行解析,解析、封装以及计算,此处对待验数据的解析、封装以及计算与上述的处理方式相同,在此不再一一赘述。当连接池组件对待验数据完成计算后,存储该计算数据同时调用存储与区块链数据库中与待验数据相对应的数据。连接池组件获取区块链数据库中对应数据的方式可以更具区块链数据库的序列号或者表单的形式完成,当然根据设计的需要可以采用不同的标注形式对数据进行编号,以实现数据的精确查找。

步骤s40,判断所述区块链数据库中的数据与所述验证数据是否一致;

步骤s50,若一致,则验证成功。步骤s60,若不一致,则验证失败。

具体的,由于区块链数据库中存储的是经过计算后的最终数据,连接池组件将待验数据经过再次计算,获得一计算结果。当该计算结果与保存于区块链中的结果一致时,表明数据并未被修改。采用此种方式,极大的方便了数据的验证。

本发明实施例提出的一种基于区块链的数据验证方法,当操作端操作存储数据库后,记录最后存储数据库的数据状态属性,即存储数据库的最终数据,然后通过设置的连接池组件对最终数据进行解析、封装以及计算,把最终数据转换成再生数据,存储于区块链数据库,通过区块链数据库记录存储数据库最后的数据状态以及操作的动作,为后期数据的验证提供了保障。当需要验证业务数据库的数据是否被篡改时,先将待验数据发送提交至连接池组件,连接池组件对待验证数据进行解析封装以及计算,获得验证数据,同时连接池组件调取存储于区块链数据库中与待验数据相匹配的区块链数据,比较两数据是否一致,若两者一致,则验证通过,表明数据违背修改。此过程利用区块链数据库的不可篡改性,保证数据验证的准确性。由于此系统中的连接池组件可以实现模块化编辑,因此可以适用于不同的系统,避免系统过于定制化,提高了系统的适用性。

在本申请的一实施例中,所述连接池组件至少包括连接池、语言解析包以及sdk;所述连接池拦截所述最终数据并为其分配连接,所述语言解析包连通所述连接池,所述语言解析包用于解析所述最终数据,所述sdk获取解析后的最终数据,并对其进行计算生成再生数据,所述区块链数据库获取所述再生数据并根据所述再生数据完成数据更新。

具体的,连接池组件包含有,连接池,语言解析包以及sdk,本问中的连接池为创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。在连接池组件中封装连接池可以减少数据连接创建的时间,提高数据的响应速度,减少高负载下的异常发生。语言解析包用于对数据库命令以及数据形式进行解析。

sdk(软件开发工具包)软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言sdk即开发windows平台下的应用程序所使用的sdk。它可以简单的为某个程序设计语言提供应用程序接口api的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。sdk至少封装有:

1、区块链数据的相关配置信息,用户可以使用该配置信息对区块链数据库进行自定义,自定义至少包含以下部分:1)、业务数据库数据的加密hash算法和初始数据状态;2)、区块链数据底层存储数据类型项,用户可以使用该选项对数据的存储类型进行预设,以适应不同的数据库,提高了sdk对不同数据库的兼容性。3)、消息队列的批次数设置,通过设置该批次数,根据不同的使用环境以使sdk达到数据最优化状态。4)、延时时间设置,针对不同的使用环境,通过改变延迟时间,优化数据传输;

2、批处理延时消息队列,批处理延时消息队列中包含有延时批处理的线程安全队列,当语言解析包对数据进行解析后,数据传输至延时批处理的线程安全队列,然后根据到达时间或者队列顺序进入到消息队列,以完成数据的资源整合,由于数据的传输具有突发性和紧急性,批处理延时消息队列中还数据优先级排序,当处理有高优先级的数据时,对高优先级的数据进行插队处理;

3、默克尔树结构;

4、区块链数据结构模型,以实现对区块链数据库的规范定义;

5、数据库工具包,数据库工具中预设有区块链数据的接口,实现与区库链数据库之间的数据传输,同时也提供了底层数据库之间的连接管理、数据增加、修改以及查询接口。

当连接池拦截到最终数据时,对最终数据分配数据接口后将数据传输至语言解析包,语言解析包用于解析最终数据,以使数据符合数据规范,提高数据的处理效率。完成数据解析后,数据传入sdk,封装在sdk中的批处理延时消息队列获取数据,将数据分配至线程安全队列中,进行排队等待处理。到达规定时间内或者队列到达时,将数据传输至消息队列,对数据进行加密处理,完成加密后,数据通过数据库工具包中对应的接口传入区块链数据库。以实现数据的备份,通过上述方式,实现对数据加密和备份。保证了保存在区块链中数据的准确性,为后期的数据校验提供了保证。由于sdk采用模块化设计,可以适用不同的数据库系统,提高了本申请的适用性。

在本申请的一实施例中,所述sdk至少封装有默克尔树算法,所述sdk获取解析后的最终数据并对其进行默克尔树计算,获取最终数据对应的hash值,所述区块链数据库获取所述hash值并根据获取的hash值更新数据。

具体的,sdk封装有默克尔树算法,用于对数据进行加密,默克尔树封装在sdk的加密工具包模块下,当数据进入将数据传输至消息队列后,默克尔树算法对队列中的数据进行加密,获得数据相对应的hash值,当计算结束后,数据通过数据库工具包中对应的接口传入区块链数据库,在区块链数据库中进行保存。

采用上述技术方案,通过默克尔树算法极大的提高了数据的安全性,保证数据在校验时的真实性,当然根据设计的需要也可以采用其他的加密方式对数据进行加密,进一步提升数据的安全性。

在本申请的一实施例中,所述sdk还封装有批处理延时消息队列,所述批处理延时消息队列获取解析后的最终数据,若所述批处理延时消息队列未抛出异常,则对解析后的最终数据进行默克尔树计算,获取数据状态的hash值,根据获取的hash值更新所述区块链数据库的数据状态。

具体的,将数据提交至批处理延时消息队列,并记录到区块链消息日志并记录数据状态,此时若所述批处理延时消息队列未抛出异常,则表明操作合法,数据库连接池结束拦截并对数据进行默克尔树计算,以获取数据的hash值。若所述批处理延时消息队列抛出异常,则将失败消息写入区块链消息日志,并保存失败信息,结束拦截。

采用上述技术方案,根据是否抛出异常,做初步判断数据是否符合写入条件,减少错误数据冗余,提高了数据库的利用率。

在本申请的一实施例中,所述语言解析包获取所述待验数据,并对所述待验数据进行解析,获取所述待验证数据的所有数据列属性。

具体的,语言解析包获取待验数据,并对待验数据进行解析,获取待验数据的所有数据属性,对待验数据的所有属性进行记录,提高验证的精准度。待验数据的所有数据列属性至少包括:数据唯一标志,数据库表以及数据库连接区块链消息日志表等。

在本申请的一实施例中,所述sdk获取所述待验数据的所有数据列属性,所述sdk根据所述待验数据的所有数据列属性获取所述区块链数据库中的日志文件,所述日志文件与所述待验数据相对应。

具体的,sdk获取待验数据中的表对象唯一标识,数据库表以及数据库连接区块链消息日志表,通过表对象唯一标识,数据库表以及数据库连接区块链消息日志表对应查询区块链数据库中相应的最新日志文件,并获取该日志文件。日志文件中至少记载有数据对应的默克尔树算法索引,通过获取该日志文件可以方便校验数据对应相应的默克尔树算法,减少系统开支,提高验证效率。

在本申请的一实施例中,若获取日志成功,则所述sdk获取所述日志文件中的记录的默克尔根hash值和待验证数据区块链操作序列号。

具体的,根据表对象唯一标识,数据库表以及数据库连接区块链消息日志表获取日志文件,若获取日志文件失败,则可以推断出该请求不合法,直接返回无法验证消息,避免后续的验证继续运行,减少了系统开支。若获取日志成功,则sdk获取该日志文件中的默克尔根hash值和待验证数据区块链操作序列号。获取默克尔根hash值,可以直接对应默克尔树算法,提高了系统的想相应速度。

在本申请的一实施例中,所述sdk通过所述日志中的记录的默克尔根hash值匹配对应默克尔树算法,并通过匹配的默克尔树算法对所述待验数据进行计算,获得所述待验数据的节点值,定义该节点值为n1。

具体的,同过默克尔根hash值匹配对应默克尔树算法,提高了校验的速度,减少系统开支,通过获取的对应的默克尔树算法对需要校验的数据进行计算,保证最后校对数据的一致,提高了校验的精度。

在本申请的一实施例中,所述sdk通过所述待验数据区块链操作序列号获取匹配的默克尔树算法的另一节点值,定义该节点值为n2。

具体的,获取的另一节点值为备份于区块链的中的hash,无需再次计算,减少系统开支。

在本申请的一实施例中,若所述节点n1与所述节点n2一致,则验证成功。

具体的,比对两节点n1和n2是否相同,若两者相同,则验证通过,表示数据并未被篡改,通过上述方式,可直接得出验证结果,提高校验速度。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1