掌桥专利:专业的专利平台
掌桥专利
首页

一种基于区块链的存证数据上链方法

文献发布时间:2023-06-19 11:29:13


一种基于区块链的存证数据上链方法

技术领域

本发明涉及区块链存证领域,具体涉及一种基于区块链的存证数据上链方法。

背景技术

区块链技术具有防伪验真、追踪溯源的功效。其主要功能是将数据上传至区块链,由于区块链的不可篡改特性,当数据被上传到区块链时,数据就会被区块链所有的节点传播并保存下来,如果想要修改区块链网络中的数据,需要满足一定的条件,如50%/75%以上的节点都需要同意修改等。

存证技术就是利用区块链网络的不可篡改特性,将数据存放在区块链中当作各类业务的一项数字资产证明。因为数据在区块链网络是不可篡改的,因此区块链网络中的数据被运用在存证领域具有非常高的可信度。

现如今,信息时代各类数据都有其存证的用途,传统数据中心利用各类数据库表/文件存储数据,其存储的数据量庞大繁杂、结构多样。现有技术中大多只能根据某个数据中心的数据库表/文件结构,手动读取解析并封装后存证至区块链,但对于其他数据中心的数据,极大可能又面临重新开始、重复工作的问题;即是,现有技术中不同的数据中心需要适配不同的存证方法,如何将这些不同的数据中心的数据都能简单通用的存证到区块链网络,并能适用大部分的数据中心,是现有技术中难以解决的一个问题。

发明内容

本发明提供一种基于区块链的存证数据上链方法,以解决现有技术中不同的数据中心需要适配不同的区块链存证方法的问题,实现使得区块链存证方法具有高度通用性、兼容性,能够适配各类数据中心的目的。

本发明通过下述技术方案实现:

一种基于区块链的存证数据上链方法,包括:

S1、将数据中心的库表和/或文件抽象化为数据源;

S2、将所述数据源的属性信息存储至数据源表中;

S3、扫描数据源表,建立对应的客户端连接,按行读取数据,通过哈希算法为每条数据计算出唯一的存证标识码;

S4、提取每条数据的存证标识码,将存证标识码与其对应的数据类型进行链接,生成区块链存证码;

S5、将数据的存证标识码与区块链存证码一起上传至区块链网络。

针对现有技术中不同的数据中心需要适配不同的区块链存证方法的问题,本发明提出一种基于区块链的存证数据上链方法,现有技术中,数据中心利用各类数据库表/文件存储数据,本方法首先将其中既有的库表和/或文件抽象化为数据源,其中具体的抽象化方法及过程可由本领域技术人员采用任意现有技术实现,在此不做赘述;之后将数据源的属性信息存储至数据源表中。之后扫描数据源表,建立对应的客户端连接,按行读取数据,通过哈希算法为每条数据计算出唯一的存证标识码。本方法充分利用了存证标识码,将其与对应的数据类型进行链接,生成唯一的区块链存证码,最后将数据的存证标识码与区块链存证码一起上传至区块链网络。本申请的上链方法,由于区块链存证码的计算和上传,保证了后续的业务或交易时能通过区块链存证码唯一定位到某个数据中心的某条数据,且数据能被源源不断的存证至区块链,成功的解决了多个数据中心不同的数据存储类型的数据存证难题。综上,本申请旨在将绝大部分数据中心存储的数据都能存证在区块链网络上,利用其简单通用的特性,能够适配绝大多数数据中心,能够克服现有技术的每个数据中心都需要一套与之适配的存证方法的不足。

进一步的,步骤S1中抽象化的方法包括:根据数据存储类型建立对应的客户端,所述客户端能够读取到数据源数据中的属性信息。本方案记载的方法,为将数据中心的库表和/或文件抽象化为数据源的具体方法;其中优选的,所述客户端的功能满足最小必要原则,即客户端读取的内容应控制在满足需求的前提下的最小范围。

进一步的,所述属性信息包括数据存储类型、数据中心iP地址、数据中心端口号、数据库账号、数据库密码、数据库名、数据表名/数据文档名、数据库表主键字段中的一种或多种。本方法可以通过以上属性信息,成功建立mysql连接,并按序读取到对应表中存储的数据。其中,对于关系型数据库而言,能够获取数据表名;对于非关系型数据库,其没有“表”的概念,而是“文档”类型,因此相应的数据表名对应的属性信息是数据文档名。

进一步的,步骤S3中,所述对应的客户端连接基于数据存储类型进行建立。

进一步的,步骤S1中,根据所述数据源每行数据的大小,以及主机内存可用空间,计算出上链最大可用内存,根据所述上链最大可用内存将数据源的全部数据分块,使每块数据都小于或等于上链最大可用内存;再执行步骤S2~S5,将每块数据的存证标识码与区块链存证码打包上传至区块链网络。此外,现有技术中,数据大小难以与上链主机的内存进行适配,容易出现长期超负荷运转或内存浪费严重的问题。为此本方案提出了一种内存最大化的拓展方法,根据数据源每行数据的大小以及主机内存可用空间,计算出上链最大可用内存,然后基于这个上链最大可用内存,对数据源的全部数据进行分块,使得每块数据都小于或等于上链最大可用内存,在此基础上,再进入步骤S2~S5的上链过程,以此实现对内存运用的最大化,同时解决现有技术中主机容易长期长期超负荷运转的问题。

进一步的,若任意块数据成功上传至区块链网络后,记录下该数据块的上链结果及下一数据块的起始点,用于断点续传;若任意块数据上传失败,则该数据块不予更新起始点;每次上传时,从当前记录的数据块起始点开始,逐块扫描并上传数据源数据。本方案给出了对于存证数据上链过程的断点续传方法,此方法是基于前述数据分块过程而实现的,不仅填补了现有技术的空白,也与传统断点续传方法有显著差异。

进一步的,定时对数据块的起始点进行重置,重置后执行步骤S3~S5。本方案定时对数据块的起始点进行重置,重置后执行步骤S3~S5,这样能够保证更新数据也能被扫描到,克服了只能保证所有数据不被遗漏地上链、但对于源数据有更新情况的则无法保证更新上链的缺陷。

进一步的,在执行步骤S5上传至区块链网络时,对每块数据的存证标识码进行对比:若该块数据的存证标识码与已存储的存证标识码相同,则忽略本次上传;若该块数据的存证标识码与已存储的存证标识码不匹配,则执行本次上传。前述方法只能保证所有数据不被遗漏且更新的数据也能及时的上链,但对于源数据有重复上链情况的则无法有效解决。为此,本方案在上链时对每条数据的存证标识码做比对,因为数据一旦有更新,数据的存证标识码肯定会变更,因此若上链时,只有检测到与之前存储的存证标识码不匹配时,才会进行上链,否则表示数据源重复,直接忽略即可,以此规避了重复上链的情况。

进一步的,步骤S2中,通过配置方式将数据源的属性信息存储至数据源表中,所述配置方式需满足使一类数据唯一对应一条数据源。所述配置方式可依据数据存储类型进行设置,也可由本领域技术人员根据具体需要进行适应性设置。

进一步的,步骤S4中,存证标识码与其对应的数据类型之间通过指定符号进行链接。所述数据类型可包括纯数据或行为数据,所述指定符号优选为便于识别的特殊符号,如英文句点等。

本发明与现有技术相比,具有如下的优点和有益效果:

1、本发明一种基于区块链的存证数据上链方法,能够识别每个数据中心的各类数据,而不用针对每个数据中心适配一套数据读取方案。读取成功后,针对每个数据中心的每一类数据,都能生成全局唯一的区块链存证码,保证后续的业务交易时能通过区块链存证码唯一定位到某个数据中心的某条数据,成功克服了现有技术的每个数据中心都需要一套与之适配的存证方法的不足。

2、本发明一种基于区块链的存证数据上链方法,根据数据源每行数据的大小以及主机内存可用空间,计算出上链最大可用内存,然后基于这个上链最大可用内存,对数据源的全部数据进行分块,使得每块数据都小于或等于上链最大可用内存,在此基础上,再进入上链过程,以此实现对内存运用的最大化,同时解决现有技术中主机容易长期长期超负荷运转的问题。

3、本发明一种基于区块链的存证数据上链方法,给出了对于存证数据上链过程的断点续传方法,该方法是基于数据分块过程而实现的,不仅填补了现有技术的空白,也与传统断点续传方法有显著差异。

4、本发明一种基于区块链的存证数据上链方法,保证了更新数据也能被扫描到并及时更新上链;还在上链时对每条数据的存证标识码做比对,以此规避了重复上链的情况。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:

图1为本发明具体实施例的流程示意图;

图2为本发明具体实施例的系统示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。在本申请的描述中,需要理解的是,术语“前”、“后”、“左”、“右”、“上”、“下”、“竖直”、“水平”、“高”、“低”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请保护范围的限制。

实施例1:

如图1所示的一种基于区块链的存证数据上链方法,包括:

S1、将数据中心的库表和/或文件抽象化为数据源;

S2、将所述数据源的属性信息存储至数据源表中;

S3、扫描数据源表,建立对应的客户端连接,按行读取数据,通过哈希算法为每条数据计算出唯一的存证标识码;

S4、提取每条数据的存证标识码,将存证标识码与其对应的数据类型进行链接,生成区块链存证码;

S5、将数据的存证标识码与区块链存证码一起上传至区块链网络。

步骤S1中抽象化的方法包括:根据数据存储类型建立对应的客户端,所述客户端能够读取到数据源数据中的属性信息。

所述属性信息包括数据存储类型、数据中心iP地址、数据中心端口号、数据库账号、数据库密码、数据库名、数据表名/数据文档名、数据库表主键字段中的一种或多种。

步骤S3中,所述对应的客户端连接基于数据存储类型进行建立。

步骤S1中,根据所述数据源每行数据的大小,以及主机内存可用空间,计算出上链最大可用内存,根据所述上链最大可用内存将数据源的全部数据分块,使每块数据都小于或等于上链最大可用内存;再执行步骤S2~S5,将每块数据的存证标识码与区块链存证码打包上传至区块链网络。

优选的,若任意块数据成功上传至区块链网络后,记录下该数据块的上链结果及下一数据块的起始点,用于断点续传;

若任意块数据上传失败,则该数据块不予更新起始点;

每次上传时,从当前记录的数据块起始点开始,逐块扫描并上传数据源数据。

优选的,定时对数据块的起始点进行重置,重置后执行步骤S3~S5。

优选的,在执行步骤S5上传至区块链网络时,对每块数据的存证标识码进行对比:若该块数据的存证标识码与已存储的存证标识码相同,则忽略本次上传;若该块数据的存证标识码与已存储的存证标识码不匹配,则执行本次上传。

优选的,步骤S2中,通过配置方式将数据源的属性信息存储至数据源表中,所述配置方式需满足使一类数据唯一对应一条数据源。

优选的,步骤S4中,存证标识码与其对应的数据类型之间通过指定符号进行链接。

实施例2:

如图2所示的一种基于区块链的存证数据上链系统,包括:

第一处理模块,用于将数据中心的库表和/或文件抽象化为数据源;

存储模块,用于将所述数据源的属性信息存储至数据源表中;

第二处理模块,用于扫描数据源表,建立对应的客户端连接,按行读取数据,通过哈希算法为每条数据计算出唯一的存证标识码;

第三处理模块,用于提取每条数据的存证标识码,将存证标识码与其对应的数据类型进行链接,生成区块链存证码;

上传模块,用于将数据的存证标识码与区块链存证码一起上传至区块链网络。

本系统的具体工作过程如下:

步骤1:将数据中心的库表/文件等抽象化为数据源;抽象化数据源的具体方法是根据数据存储类型(如mysql/oracle/mongodb/file等)使用最小必要原则能建立对应客户端且读取到数据源数据的若干属性信息:如对于关系型数据库如mysql,则数据源属性有数据存储类型(mysql),数据中心iP地址(localhost),数据中心端口号(3306),数据库账号(user_account),数据库密码(user_password),数据库名(db_name),数据表名(table_name),数据库表主键字段 (pkfields)。系统可以通过以上属性,成功建立mysql连接,并按序读取到对应表中存储的数据。

步骤2:在步骤1的基础上,通过系统/人工配置,将上述数据源属性等存储在系统的数据源表中,一类数据唯一对应一条数据源。人工配置时,会根据选择的数据存储类型选择需要配置的属性。Oracle、SqlSever等关系型及Mongodb、Couchdb等非关系型数据库所需要配置的属性与步骤1提到的属性基本相同,含义略有差别,比如非关系型数据库mongodb没有表(table)的概念,而是文档(Document)类型,因此相应的数据表名对应的属性的含义是数据文档名。

步骤3:在步骤2的基础上,扫描数据源,并根据配置和数据存储类型,建立对应的客户端连接进行数据按行读取,通过哈希算法为每条数据计算出唯一的存证识别码;

步骤4:在步骤3的基础上,提取每条数据的存证标识码,将存证标识码与其对应的数据类型(纯数据或行为数据)通过特殊符号(如英文句点.)链接生成区块链存证码

步骤5:在步骤4的基础上,将数据的存证标识码与区块链存证码一起上传至区块链网络。

在一个或多个优选的实施方式中,还包括:

内存最大化的方法扩展:进行数据分块,根据数据源每行数据的大小,及运行系统的主机的内存可用空间,自动计算出上链最大可用内存。根据上链最大可用内存将数据源的全部数据分块,每块数据都小于或等于上链最大可用内存。

优选的,系统自动将每块数据计算出存证标识码及区块链存证码,并打包上传至区块链。成功上链后,会记录下每块数据的上链结果及下一个数据块的起始点,用作断点续传,若数据块上链失败则整个块都不予更新起始点。

优选的,系统会当前记录的数据块起始点开始逐个扫描并上传数据源数据,对于零值的起始点(未成功上链过)则从第一个块开始上链,而对于非零值的起始点,则直接从起始点记录的下一块开始上链。

优选的,上述过程只能保证所有数据不被遗漏地上链,但对于源数据有更新情况的,则无法保证。因此,系统会在每天凌晨2点及晚上11点,将数据源起始点重置为零,并重复上链的过程,这样来保证更新数据也能被扫描到。

优选的,上述过程只能保证所有数据不被遗漏且更新的数据也能及时的上链,但对于源数据有重复上链情况的,则无法保证。因此,系统会在上链时,对每条数据的存证标识码做比对,因为数据一旦有更新,数据的存证标识码肯定会变更,因此若上链时,只有系统检测到与之前存储的存证标识码不匹配时,才会进行上链,否则会忽略。

本系统将各类数据中心多样化的数据存储方式简化为简单通用的数据源,通过不同的iP 地址、数据存储类型等可自适应读取各种类型的数据存储格式,如SQL/NOSQL/FILE等,保证系统能自动识别每个数据中心的各类数据,而不用针对每个数据中心适配一套数据读取方案。读取成功后,针对每个数据中心的每一类数据,都能生成全局唯一的区块链存证码,保证后续的业务交易时能通过区块链存证码唯一定位到某个数据中心的某条数据。系统运行后,一次配置,无需再做任何操作,数据就能被源源不断的存证至区块链,成功的解决了多个数据中心不同的数据存储类型的数据存证难题。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体,意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

相关技术
  • 一种基于区块链的存证数据上链方法
  • 一种基于区块链的用户行为存证系统及其上链确权方法
技术分类

06120112941648