基于区块链的数据存储、查询方法及装置和电子设备与流程

文档序号:18739472发布日期:2019-09-21 01:36阅读:158来源:国知局
基于区块链的数据存储、查询方法及装置和电子设备与流程

本说明书实施例涉及区块链技术领域,尤其涉及一种基于区块链的数据存储、查询方法及装置和电子设备。



背景技术:

区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术在众多的领域中广泛的进行应用。



技术实现要素:

本说明书实施例提供的一种基于区块链的数据存储、查询方法及装置和电子设备:

根据本说明书实施例的第一方面,提供一种基于区块链的数据存储方法,所述方法包括:

分布式存储系统的存储节点设备接收请求方提交的存储目标数据的请求;

存储所述目标数据;

针对所述目标数据,计算所述目标数据的哈希指针;

将所述哈希指针打包为用于所述区块链的交易,并将所述交易发送给所述区块链的区块节点设备,以使所述区块节点设备响应所述交易,存证所述目标数据的哈希指针。

可选的,所述存储节点设备与所述区块节点设备之间具有对应关系;

所述将所述交易发送给所述区块链的区块节点设备,包括:

将所述交易发送给所述区块链中该存储节点设备对应的区块节点设备。

可选的,在存储所述目标数据之前,所述方法还包括:

对所述目标数据进行校验;

所述存储所述目标数据,具体包括:

在校验通过的情况下,存储所述目标数据。

可选的,对所述目标数据进行校验,具体包括:

对所述目标数据的数据结构进行有效性校验;

或者,

对所述目标数据的结构体中数据进行有效性校验;

或者,

对所述请求中携带的签名进行有效性校验。

可选的,所述哈希指针,具体包括:

针对所述目标数据的内容进行哈希计算后得到的哈希值。

根据本说明书实施例的第二方面,提供一种基于区块链的数据查询方法,所述区块链中的数据通过上述任一项基于区块链的数据存储方法存证,所述方法包括:

区块链的区块节点设备接收请求方提交的用于查询目标数据的交易;其中,所述交易中携带有哈希指针;

响应所述交易,查询所述区块链中是否存证了所述哈希指针;

在所述区块链中存证了所述哈希指针后,向分布式存储系统获取所述哈希指针对应的目标数据;

将所述分布式存储系统返回的所述哈希指针对应的目标数据反馈给所述请求方。

可选的,向分布式存储系统获取所述哈希指针对应的目标数据,具体包括:

调用发布于区块链的智能合约,将所述哈希指针发送给所述分布式存储系统中的存储节点设备;以使所述存储节点设备查询并反馈所述哈希指针对应的目标数据。

可选的,所述存储节点设备与所述区块节点设备之间具有对应关系;

所述将所述哈希指针发送给所述分布式存储系统中的存储节点设备,包括:

将所述哈希指针发送给所述分布式存储系统中该区块节点设备对应的存储节点设备。

可选的,所述存储节点设备查询所述哈希指针对应的目标数据,具体包括:

计算存储节点设备中存储数据的哈希指针;

将与所述哈希指针相同的存储数据确定为目标数据。

可选的,所述哈希指针,具体包括:

针对所述目标数据的哈希计算得到的哈希值。

根据本说明书实施例的第三方面,提供一种基于区块链的数据存储装置,所述装置包括:

接收单元,分布式存储系统的存储节点设备接收请求方提交的存储目标数据的请求;

存储单元,存储所述目标数据;

计算单元,针对所述目标数据,计算所述目标数据的哈希指针;

发送单元,将所述哈希指针打包为用于所述区块链的交易,并将所述交易发送给所述区块链的区块节点设备,以使所述区块节点设备响应所述交易,存证所述目标数据的哈希指针。

可选的,所述存储节点设备与所述区块节点设备之间具有对应关系;

所述发送单元中,将所述交易发送给所述区块链的区块节点设备,包括:

将所述交易发送给所述区块链中该存储节点设备对应的区块节点设备。

可选的,在所述存储单元之前,所述装置还包括:

校验单元,对所述目标数据进行校验;

所述存储单元,具体包括:

在校验通过的情况下,存储所述目标数据。

可选的,所述校验单元,具体包括:

对所述目标数据的数据结构进行有效性校验;

或者,

对所述目标数据的结构体中数据进行有效性校验;

或者,

对所述请求中携带的签名进行有效性校验。

可选的,所述哈希指针,具体包括:

针对所述目标数据的内容进行哈希计算后得到的哈希值。

根据本说明书实施例的第四方面,提供一种基于区块链的数据查询装置,所述区块链中的数据通过上述任一项基于区块链的数据存储方法存证,所述装置包括:

接收单元,区块链的区块节点设备接收请求方提交的用于查询目标数据的交易;其中,所述交易包含哈希指针;

响应单元,响应所述交易,查询所述区块链中是否存证了所述哈希指针;

查询单元,在所述区块链中存证了所述哈希指针后,向分布式存储系统获取所述哈希指针对应的目标数据;

反馈单元,将所述分布式存储系统返回的所述哈希指针对应的目标数据反馈给所述请求方。

可选的,所述查询单元中向分布式存储系统获取所述哈希指针对应的目标数据,具体包括:

调用发布于区块链的智能合约,将所述哈希指针发送给所述分布式存储系统中的存储节点设备;以使所述存储节点设备查询并反馈所述哈希指针对应的目标数据。

可选的,所述存储节点设备与所述区块节点设备之间具有对应关系;

所述查询单元中向分布式存储系统获取所述哈希指针对应的目标数据,包括:

向所述分布式存储系统中该区块节点设备对应的存储节点设备获取所述哈希指针对应的目标数据。

可选的,所述存储节点设备查询所述哈希指针对应的目标数据,具体包括:

计算存储节点设备中存储数据的哈希指针;

将与所述哈希指针相同的存储数据确定为目标数据。

可选的,所述哈希指针,具体包括:

针对所述目标数据的哈希计算得到的哈希值。

根据本说明书实施例的第五方面,提供一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为上述任一项基于区块链的数据存储方法。

根据本说明书实施例的第六方面,提供一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为上述任一项基于区块链的数据查询方法。

本说明书实施例,提供了一种基于区块链的数据存储方案,由外部(相当对区块链系统)的分布式存储系统存储原始的目标数据,并根据该目标数据生成唯一的哈希指针;区块链上实际不直接存储目标数据,而是仅存储目标数据的哈希指针。相对应的,本说明书还提供了一种基于区块链的数据查询方案,区块链的区块节点设备在响应数据查询的交易时,首先查询区块链中是否存在该交易中包含的哈希指针,如果存在说明待查询的目标数据存在,进而向前述的分布式存储系统获取该哈希指针对应的目标数据,将从分布式存储系统获取到的目标数据返回给请求方。如此,通过将目标数据存储到分布式存储系统,可以降低区块链中存储的数据量。

附图说明

图1是传统区块链的区块结构示意图;

图2是本说明书一实施例提供的基于区块链的数据存储方法的流程图;

图3是本说明书一实施例提供的数据存储的系统架构图;

图4是本说明书一实施例提供的区块链的区块结构示意图;

图5是本说明书一实施例提供的区块节点设备与存储节点设备对应关系的示意图;

图6是本说明书一实施例提供的基于区块链的数据查询方法的流程图;

图7是本说明书一实施例提供的基于区块链的数据存储装置的硬件结构图;

图8是本说明书一实施例提供的基于区块链的数据存储装置的模块示意图;

图9是本说明书一实施例提供的基于区块链的数据存储装置的硬件结构图;

图10是本说明书一实施例提供的基于区块链的数据查询装置的模块示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。

在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,介绍传统的区块链进行数据存证的情况。

如图1所示的传统区块链的区块结构示意图。一般的,区块链是由若干个区块链接而成,具体的下一区块通过上一区块的区块哈希进行的关联。每个区块通常包含有两个部分,分别为区块头和区块体。

其中,区块体主要用于存储交易数据。

图1中,区块头中至少包含有若干参数,例如父区块哈希(即当前区块的上一区块哈希计算后的哈希值)、版本、时间戳(即当前区块生成的时刻)、难度、随机数、默克尔(Merkle)根。

区块头中存储了8个交易数据,分别为交易1至8。

需要说明的是,虚线框的内容并非实际存证的数据,更不是区块体内的数据,而是基于交易数据计算默克尔根的计算过程(一般的,该过程可以称默克尔树Merkle Tree)。

具体地,第一阶段计算:

基于交易1计算hash1;

基于交易2计算hash2;

基于交易3计算hash3;

基于交易4计算hash4;

基于交易5计算hash5;

基于交易6计算hash6;

基于交易7计算hash7;

基于交易8计算hash8;

第二阶段计算:

基于hash1和hash2计算hash12;

基于hash3和hash4计算hash34;

基于hash5和hash6计算hash56;

基于hash7和hash8计算hash78;

第三阶段计算:

基于hash12和hash34计算hash1234;

基于hash56和hash78计算hash5678;

第四阶段计算:

基于hash1234和hash5678计算hash1-8;

而最终得到的hash1-8就区块头中默克尔根的值。

在了解了区块链中区块的实际结构之后,可知区块链上存证的交易数据实际是记录在区块的区块体中的。

随着区块链业务不断发展,需要上链存证的交易数据会越来越多,并且区块链需要存证所有原始的交易数据(原始交易数据一旦上链即不可篡改)。这样,随着时间的推移,区块链存证的数据量就会越来越庞大,越来越臃肿。对于某些操作需求来说,也会变得越来越低效,例如对于新接入区块链的区块节点设备,需要拉取历史所有的区块,而这涉及到区块内海量的交易数据,所需时间会较长,影响该区块节点设备的业务处理;再例如,对于区块链中大批量的交易数据拷贝时,同样涉及到区块内海量的交易数据。

因此,现有区块链的数据存储方案,由于需要存储交易数据本身,因此存在区块链的区块存储系统占用大量的存储空间。

本说明书中的目标数据可以是指待存证的交易数据。

本说明书提出了一种基于区块链的数据存储方案,由外部(相当对区块链系统)的分布式存储系统存储原始的目标数据,并根据该目标数据生成唯一的哈希指针;区块链上实际不直接存储目标数据,而是仅存储目标数据的哈希指针。

需要说明的是,所述外部的分布式存储系统对于区块链系统来说是可信的,即区块链系统默认是信任该分布式存储系统的存储结果和查询结果。

相对应的,本说明书还提供了一种基于区块链的数据查询方案,区块链的区块节点设备在响应数据查询的交易时,首先查询区块链中是否存在该交易中包含的哈希指针,如果存在说明待查询的目标数据也存在,进而向前述的分布式存储系统获取该哈希指针对应的目标数据,将从分布式存储系统获取到的目标数据返回给请求方。如此,通过将目标数据存储到分布式存储系统,可以降低区块链中存储的数据量,而且还可以简化区块链中的共识过程,在共识过程中,只需要传递哈希指针即可。

本说明书中哈希指针实际是指针对目标数据的内容进行哈希计算后得到的哈希值,通常可以表示为Hash。

Hash又称散列函数或散列算法或哈希函数。Hash计算可以把任意大小的消息或数据压缩成相同长度的数字摘要,使得数据量变小,并且将数据的格式固定下来。哈希值通常用一个短的随机字母和数字组成的字符串来代表。

Hash值由于具有唯一性,即不同的数据经过相同的Hash计算后可以得到不同的Hash值,因此根据Hash值也可以作为指针使用;即根据Hash值确定对应原始的数据,所以Hash值本说明书中也可以称为哈希指针。

在本说明书所描述的区块链,具体可以包括私有链、共有链以及联盟链等,在本说明书中不进行特别限定。

例如,在一个场景中,上述区块链具体可以是由若干具有若信任关系的机构或组织作为联盟成员组成的一个联盟链;该联盟链的运营方可以依托于该联盟链,来部署相应的业务;而以上所描述的作为联盟成员的机构或组织都可以作为上述业务的一个业务节点。各个业务节点可以将接收到哈希指针以交易的形式在联盟链中进行发布,并在该交易经过联盟链中的共识节点的共识处理之后,在联盟链中的分布式数据库(该分布式数据库属于区块链,与前述外部分布式存储系统不同)进行存储,完成上述交易信息的“上链”存证。

其中,需要说明的是,在本说明书中所描述的交易(Transaction),可以是指通过区块链的客户端创建,并需要最终发布至区块链的分布式数据库中的一笔数据。

区块链中的交易,通常存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,宽泛的可以分为存证业务、查询业务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。

上述客户端,可以包括任意类型的以区块链中存储的底层业务数据作为数据支撑,来实现特定的业务功能的上层应用。

请参考图2,图2为本说明书一实施例提供的基于区块链的数据存储方法的流程图,所述方法可以应用于分布式存储系统的存储节点设备,所述方法可以包括以下步骤:

步骤110:分布式存储系统的存储节点设备接收请求方提交的存储目标数据的请求;

步骤120:存储所述目标数据;

步骤130:针对所述目标数据,计算所述目标数据的哈希指针;

步骤140:将所述哈希指针打包为用于所述区块链的交易,并将所述交易发送给所述区块链的区块节点设备,以使所述区块节点设备响应所述交易,存证所述目标数据的哈希指针。

其中,步骤120和步骤的时序可以根据业务需求确定。例如,可以是先执行步骤120后再执行步骤130;也可以是先执行步骤130后再执行步骤120;还可以是步骤120和步骤130同时执行。

以下结合图3所示的本说明书整个数据存储的系统架构图加以说明。该系统至少包含3个组成部分,分别为请求方、分布式存储系统和区块链系统。

其中,所述分布式存储系统,可以是由若干的存储节点设备构建的存储系统。

在分布式存储系统中,任意一个存储节点设备存储的交易信息都可以同步到其它任意存储节点设备,或者,可以被其它任意存储节点设备访问到。

通常,分布式存储系统可以具有更好的容灾能力(也称为容错能力)。由于分布式存储系统中存储的数据并非存储在唯一的存储设备,而是存储在所有的存储节点设备;因此,当部分存储节点设备出现异常(如宕机、火灾、停电、被攻击等)导致业务不可用时,依然可以通过其它存储节点设备执行业务操作。所述业务操作在本说明书中可以包括写入(Write)、读取(read)等操作。

所述分布式存储系统可以采用IPFS(InterPlanetary File System,星际文件系统)等技术实现。所述IPFS是一个分布式的web,提供了点到点超媒体协议,采用IPFS可以使得数据传输速度更快,更加安全,并且提供更加开放的环境。

所述请求方可以是指需要将目标数据上链存证的客户端设备。

如图3所示,在实际应用中,请求方如果发生了一笔业务交易,并产生了相应的目标数据时,可以执行:

步骤210,请求方将所述目标数据发送给所述分布式存储系统的存储节点设备。

所述存储节点设备可以是分布式存储系统中任意的一个存储节点设备。由于分布式存储系统的存储节点设备之间存在地理位置差异,为了竟可能提升存储效率,通常会由距离请求方最近的存储节点设备来响应请求方的请求,即请求方可以将目标数据发送给最近的存储节点设备。当然,这并非绝对的,实际应用中,可能存在各种特殊情况,例如最近的存储节点设备的负载太大,则需要由其它存储节点设备进行响应,为此分布式存储系统可以预先设置响应机制,以实现存储效率的最大化。

步骤220,所述分布式存储系统的存储节点设备在接收到目标数据后,可以将该目标数据存储到分布式存储系统中,并计算所述目标数据的哈希指针。

在一实施例中,存储节点设备该目标数据存储到分布式存储系统中,具体可以分为多种请求;

针对分布式存储系统中所有存储节点设备均存储全部数据的情况,该存储节点设备除了在本地存储该目标数据之外,还需要将存储的目标数据同步到其它所有的存储节点设备,以使每个存储节点设备均存储该目标数据。

针对分布式存储系统中分区存储数据的情况,该存储节点设备除了在本地存储该目标数据之外,还需要将存储的目标数据同步到同分区内其它的存储节点设备,以使所述分区内每个存储节点设备均存储该目标数据。

针对分布式存储系统中单独存储数据的情况,该存储节点设备在本地存储该目标数据即可。

如前所述,所述计算所述目标数据的哈希指针,具体包括:

针对所述目标数据的内容进行哈希计算后得到的哈希值。

在一实施例中,在存储所述目标数据之前,所述方法还包括:

存储节点设备对所述目标数据进行校验。

在校验通过的情况下,存储所述目标数据。

在存储的时候,存储节点设备可以对目标数据进行合法性校验,以确保目标数据的合法性。

所述合法性校验可以包括如下至少一种:

1、对所述目标数据的数据结构进行有效性校验;

2、对所述目标数据的结构体中数据进行有效性校验;

3、对所述请求中携带的签名进行有效性校验。

所述签名是指请求方的私有签名,当检验到请求方签名,说明请求是合法的,进而才可以存储目标数据。

步骤230:将所述哈希指针打包为用于所述区块链的交易,并将所述交易发送给所述区块链的区块节点设备。

步骤240:区块链的区块节点设备响应所述交易,存证所述目标数据的哈希指针。

如此,请求方需要上链存证的目标数据存证完成。

如图4所述,本实施将存储在区块体中的目标数据(图4左侧所示的传统区块体存储的目标数据)替换为了对应的哈希指针(图4右侧所示的本实施例区块体存储的目标数据的哈希指针);由于哈希指针相对于目标数据的数据量大大减少,因此能够大大的减少区块的大小。

这里需要说明的是,由于区块体中存证的是哈希指针,那么如何确保区块链是可信的呢?

正是基于哈希指针具有的全局唯一性的特点,由于区块链存证的哈希指针是不可篡改的;而哈希指针又与原始的目标数据具有一一对应关系;因此,只要当分布式存储系统中的目标数据再次哈希计算的哈希值与区块链存证的哈希指针一致就可以确定区块链存证的哈希指针对应的原始的目标数据了。

在一实施例中,所述存储节点设备与所述区块节点设备之间具有对应关系;

所述将所述交易发送给所述区块链的区块节点设备,包括:

将所述交易发送给所述区块链中该存储节点设备对应的区块节点设备。

如图5所示,区块链中的区块节点设备与分布式存储系统中的存储节点设备可以建立有对应关系,每个区块节点设备同时可以对应多个存储节点设备,以避免其中的某个存储节点设备不可用导致的服务不可用。

其中,所述存储节点设备与区块节点设备之间的对应关系,可以是多对对的关系,例如可以是1对1,也可以是1对多,还可以是对对1。即,一个存储节点设备可以唯一对应一个区块节点设备,或者一个存储节点设备可以对应多个区块节点设备,或者多个存储节点设备可以对应一个区块节点设备;在实际应用中,可以根据实际需求灵活进行配置。本说明书中的多个具体是指两个或两个以上,即至少两个的意思。

值得一提的是,本说明书中的目标数据不仅限于字符数据,还可以是图片、文档、视频、音频等多媒体数据。

综上所述,本说明书提出了一种基于区块链的数据存储方案,由外部(相当对区块链系统)的分布式存储系统存储原始的目标数据,并根据该目标数据生成唯一的哈希指针;区块链上实际不直接存储目标数据,而是仅存储目标数据的哈希指针。

与上述基于区块链的数据存储方案对应的,如图6所示为本说明书一实施例提供的基于区块链的数据查询方法的流程图,所述方法可以应用于区块链系统的区块节点设备,所述方法可以包括以下步骤:

步骤310:区块链的区块节点设备接收请求方提交的用于查询目标数据的交易;其中,所述交易中携带有哈希指针;

步骤320:响应所述交易,查询所述区块链中是否存证了所述哈希指针;

步骤330:在所述区块链中存证了所述哈希指针后,向分布式存储系统获取所述哈希指针对应的目标数据;

步骤340:将所述分布式存储系统返回的所述哈希指针对应的目标数据反馈给所述请求方。

以下结合图3所示的本说明书整个数据存储的系统架构图加以说明。如图3所示,在实际应用中,请求方如果需要查询某一笔业务交易,可以向区块链的节点设备发起用于查询交易,具体包括:

步骤250,请求方向区块链的节点设备提交的用于查询目标数据的交易;其中,所述交易中携带有哈希指针。

步骤260:区块节点设备在接收到请求方提交的查询交易后,根据交易中携带的哈希指针,查询区块链上是否存证了相同的哈希指针。

区块节点设备在响应查询交易后,首先需要确保哈希指针对应的目标数据是否存在,而由于区块体中没有存储目标数据而是存储的目标数据的哈希指针;因此,首先判断交易携带的哈希指针是否存证在区块链。如此,存在说明该哈希指针对应的目标数据同样存在;如果不存在就说明书请求方需要查询的目标数据也不存在。

步骤270:如果存在,区块节点设备进而可以向分布式存储系统获取所述哈希指针对应的目标数据。

具体地,区块节点设备可以调用发布于区块链的智能合约(Smartcontract),将所述哈希指针发送给所述分布式存储系统中的存储节点设备;以使所述存储节点设备查询并反馈所述哈希指针对应的目标数据。

其中,智能合约是一种旨在应用在可以部署在区块链上的以信息化方式传播、验证或执行合同的计算机协议。通过在智能合约中声明业务逻辑可以实现执行相应操作。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约能够提供优于传统合同方法的安全,并减少与合同相关的其他交易成本。

而该步骤中的智能合约中声明了与存储节点设备之间的通信协议、通信方式等。

在一实施例中,所述存储节点设备查询所述哈希指针对应的目标数据,具体包括:

计算存储节点设备中存储数据的哈希指针;

将与所述哈希指针相同的存储数据确定为目标数据。

在一实施例中,所述哈希指针,具体包括:

针对所述目标数据的哈希计算得到的哈希值。

如前所述,正是基于哈希指针具有的全局唯一性的特点,由于区块链存证的哈希指针是不可篡改的;而哈希指针又与原始的目标数据具有一一对应关系;因此,只要当分布式存储系统中的目标数据再次哈希计算的哈希值与区块链存证的哈希指针一致就可以确定区块链存证的哈希指针对应的原始的目标数据了。

步骤280:将所述分布式存储系统返回的所述哈希指针对应的目标数据反馈给所述请求方。

如此,请求方就可以查询到目标数据了。

可见,即使区块链上没有存证原始的目标数据,但通过哈希指针依然可以获取到原始的目标数据并反馈给请求方。

在一实施例中,所述存储节点设备与所述区块节点设备之间具有对应关系;

所述将所述哈希指针发送给所述分布式存储系统中的存储节点设备,包括:

将所述哈希指针发送给所述分布式存储系统中该区块节点设备对应的存储节点设备。

如图5所示,区块链中的区块节点设备可以选择信任的分布式存储系统中的存储节点设备来获取目标数据。每个区块节点设备同时可以选择多个存储节点设备,以避免其中的某个存储节点设备不可用导致的目标数据获取失败问题。

其中,所述区块节点设备与存储节点设备之间的对应关系,可以是多对对的关系,例如可以是1对1,也可以是1对多,还可以是对对1。即,一个区块节点设备可以唯一对应一个存储节点设备,或者一个区块节点设备可以对应多个存储节点设备,或者多个区块节点设备可以对应一个存储节点设备;在实际应用中,可以根据实际需求灵活进行配置。本说明书中的多个具体是指两个或两个以上,即至少两个的意思。

值得一提的是,本说明书中的目标数据不仅限于字符数据,还可以是图片、文档、视频、音频等多媒体数据。

综上所述,本说明书还提供了一种基于区块链的数据查询方案,区块链的区块节点设备在响应数据查询的交易时,首先查询区块链中是否存在该交易中包含的哈希指针,如果存在说明待查询的目标数据也存在,进而向前述的分布式存储系统获取该哈希指针对应的目标数据,将从分布式存储系统获取到的目标数据返回给请求方。如此,通过将目标数据存储到分布式存储系统,可以降低区块链中存储的数据量,而且还可以简化区块链中的共识过程,在共识过程中,只需要传递哈希指针即可。

在一实施例中,区块链系统和分布式存储之间还可以涉及一个缓存系统。所述缓存系统可以用于缓存请求方最近访问的目标数据;如此,当任意请求方查询目标数据时,可以从该缓存系统中快速获取。所述缓存系统可以采用如redis等缓存技术实现。

在一实施例中,如果区块链中区块节点设备本地存储的区块数据量较大时,可以对历史久远的区块进行压缩,并将压缩的区块存储到分布式存储系统中,并在需要访问是通过压缩区块的哈希指针进行访问、还原。如此,进一步降低了区块节点设备需要存储的区块数据量。

与前述基于区块链的数据存储方法实施例相对应,本说明书还提供了基于区块链的数据存储装置的实施例。所述装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机业务程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本说明书基于区块链的数据存储装置所在设备的一种硬件结构图,除了图7所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据基于区块链的数据存储实际功能,还可以包括其他硬件,对此不再赘述。

请参见图8,为本说明书一实施例提供的基于区块链的数据存储装置的模块图,所述装置对应了图2所示实施例,所述装置包括:

接收单元410,分布式存储系统的存储节点设备接收请求方提交的存储目标数据的请求;

存储单元420,存储所述目标数据;

计算单元430,针对所述目标数据,计算所述目标数据的哈希指针;

发送单元440,将所述哈希指针打包为用于所述区块链的交易,并将所述交易发送给所述区块链的区块节点设备,以使所述区块节点设备响应所述交易,存证所述目标数据的哈希指针。

可选的,所述存储节点设备与所述区块节点设备之间具有对应关系;

所述发送单元440中,将所述交易发送给所述区块链的区块节点设备,包括:

将所述交易发送给所述区块链中该存储节点设备对应的区块节点设备。

可选的,在所述存储单元420之前,所述装置还包括:

校验单元,对所述目标数据进行校验;

所述存储单元420,具体包括:

在校验通过的情况下,存储所述目标数据。

可选的,所述校验单元,具体包括:

对所述目标数据的数据结构进行有效性校验;

或者,

对所述目标数据的结构体中数据进行有效性校验;

或者,

对所述请求中携带的签名进行有效性校验。

可选的,所述哈希指针,具体包括:

针对所述目标数据的内容进行哈希计算后得到的哈希值。

与前述基于区块链的数据查询方法实施例相对应,本说明书还提供了基于区块链的数据查询装置的实施例。所述装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机业务程序指令读取到内存中运行形成的。从硬件层面而言,如图9所示,为本说明书基于区块链的数据查询装置所在设备的一种硬件结构图,除了图9所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据基于区块链的数据查询实际功能,还可以包括其他硬件,对此不再赘述。

请参见图10,为本说明书一实施例提供的基于区块链的数据查询装置的模块图,所述区块链中的数据通过前述任一项基于区块链的数据存储方法存证,所述装置对应了图6所示实施例,所述装置包括:

接收单元510,区块链的区块节点设备接收请求方提交的用于查询目标数据的交易;

响应单元520,响应所述交易,查询所述区块链中是否存证了所述哈希指针;

查询单元530,在所述区块链中存证了所述哈希指针后,向分布式存储系统获取所述哈希指针对应的目标数据;

反馈单元540,将所述分布式存储系统返回的所述哈希指针对应的目标数据反馈给所述请求方。

所述查询单元中向分布式存储系统获取所述哈希指针对应的目标数据,具体包括:

调用发布于区块链的智能合约,将所述哈希指针发送给所述分布式存储系统中的存储节点设备;以使所述存储节点设备查询并反馈所述哈希指针对应的目标数据。

可选的,所述存储节点设备与所述区块节点设备之间具有对应关系;

所述查询单元中向分布式存储系统获取所述哈希指针对应的目标数据,包括:

向所述分布式存储系统中该区块节点设备对应的存储节点设备获取所述哈希指针对应的目标数据。

可选的,所述存储节点设备查询所述哈希指针对应的目标数据,具体包括:

计算存储节点设备中存储数据的哈希指针;

将与所述哈希指针相同的存储数据确定为目标数据。

可选的,所述哈希指针,具体包括:

针对所述目标数据的哈希计算得到的哈希值。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上图8描述了基于区块链的数据存储装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

分布式存储系统的存储节点设备接收请求方提交的存储目标数据的请求;

存储所述目标数据;

针对所述目标数据,计算所述目标数据的哈希指针;

将所述哈希指针打包为用于所述区块链的交易,并将所述交易发送给所述区块链的区块节点设备,以使所述区块节点设备响应所述交易,存证所述目标数据的哈希指针。

以上图10描述了基于区块链的数据查询装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

区块链的区块节点设备接收请求方提交的用于查询目标数据的交易;其中,所述交易中携带有哈希指针;所述区块链中的数据通过前述任一项基于区块链的数据存储方法存证,

响应所述交易,查询所述区块链中是否存证了所述哈希指针;

在所述区块链中存证了所述哈希指针后,向分布式存储系统获取所述哈希指针对应的目标数据;

将所述分布式存储系统返回的所述哈希指针对应的目标数据反馈给所述请求方。

在上述电子设备的实施例中,应理解,该处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:RAM)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。

应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

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