分布式存储方法、电子装置及存储介质与流程

文档序号:15636836发布日期:2018-10-12 21:34阅读:110来源:国知局

本发明涉及区块链领域,尤其涉及一种分布式存储方法、电子装置及存储介质。



背景技术:

基于p2p网络的分布式存储系统已经做到了将数据分布到p2p网络节点上,实现了数据的去中心化存储。而数据的索引信息要么是存储在中心服务器,或是将索引信息通过在p2p网络中广播的方式存储至p2p网络节点。当前存在的问题是:将索引信息存储在中心服务器的方式使得分布式系统无法脱离服务器运行,未能彻底实现去中心化;而通过p2p网络广播的方式又要求所有p2p网络节点都是可信节点,否则数据可能会被篡改,无法保证数据安全。



技术实现要素:

鉴于以上内容,本发明提供一种分布式存储方法、电子装置及存储介质,基于区块链网络来存储索引数据。

为实现上述目的,本发明提供一种分布式存储方法,其该方法包括:

节点初始化步骤:每个存储节点获取该存储节点用户的私钥,利用区块链共识算法生成各私钥对应的公钥,得到各存储节点的公私钥对;

数据存储步骤:发起文件存储请求的第一存储节点利用私钥加密原文件得到加密文件,将加密文件编码为多个编码文件分发至相应的多个第二存储节点存储;

索引存储步骤:第一存储节点为每个第二存储节点生成一个存储合约,在所述存储合约中存储文件的索引信息,并将各存储合约分发至所述第一存储节点及相应的第二存储节点。

可选地,所述区块链共识算法为pow、pos、dpos、pool、pbft其中之一。

可选地,在所述数据存储步骤中,“将加密文件编码为多个编码文件”包括:

参数计算步骤:根据第一存储节点选取的第二存储节点的数量计算编码参数;

编码步骤:通过喷泉码方法,根据所述编码参数将加密文件编码为多个编码文件。

可选地,所述编码参数包括将文件平均分割为一个或多个数据块的每个数据块的大小,将各个数据块编码为多个片段的片段数量n。

可选地,所述编码步骤包括:

根据所述数据块大小将加密后的文件分割为一个或多个数据块;

将各数据块编码为n个片段;

从各数据块的n个片段分别提取一个片段组装为一个编码文件,得到n个编码文件。

可选地,所述文件的索引信息包括:根据原文件生成的加密文件的第一哈希值,根据原文件生成的各编码文件的第二哈希值,原文件所属的第一存储节点的第一公钥,各编码文件的第二存储节点的第二公钥,以及第一哈希值、第二哈希值、第一公钥、第二公钥之间的索引关系。

可选地,所述方法还包括文件下载步骤:

查询第一存储节点存储的索引文件得到所述第一公钥及加密文件的第一哈希值,根据索引确定该第一哈希值对应的各编码文件的第二哈希值,以及所述第一公钥对应的所有第二公钥,从而确定存储所述原文件生成的多个编码文件的第二存储节点及各个第二存储节点存储的编码文件;

从确定的第二存储节点下载编码文件;

将下载的编码文件进行解码,还原为加密文件;

利用第一存储节点的私钥解密所述加密文件,得到原文件。

可选地,所述存储合约是区块链上的智能合约,存储合约根据合约条款周期性检查第二存储节点是否违约,并给第二存储节点结算存储文件的费用。

此外,本发明还提供一种电子装置,该电子装置包括存储器及处理器。所述存储器上存储有分布式存储程序,该分布式存储程序被处理器执行时,实现如上所述分布式存储方法中的步骤。

进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括分布式存储程序,所述分布式存储程序被处理器执行时,可实现如上所述分布式存储方法中的步骤。

本发明提出的分布式存储方法、装置及存储介质,通过p2p网络和区块链网络,分别用于存储数据和索引,实现了去中心化的分布式存储,并且使其形成一个存储服务的生态,其中存储文件的用户和提供存储的用户通过区块链实现了p2p结算。利用区块链的共识机制,来确保数据在各个节点上的一致性。并且使用区块链的去中心化交易,来为属主节点和外部存储节点之间提供文件存储费用的交易机制。

附图说明

图1为本发明中实现分布式存储方法的电子装置较佳实施例的示意图。

图2为本发明中分布式存储系统较佳实施例的架构示意图。

图3为本发明分布式存储方法第一较佳实施例的流程图。

图4为根据编码参数将加密文件编码为多个编码文件的示意图。

图5为本发明分布式存储方法第二较佳实施例的流程图。

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

具体实施方式

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

如图1所示,是本发明实现高性能的分布式存储方法的电子装置1较佳实施例的示意图。

在本实施例中,电子装置1可以是云服务智能设备,例如矿机(miningmachine),或者服务器、智能手机、平板电脑、个人电脑、便携计算机以及其它具有运算功能的电子设备。

所述电子装置1应用于基于p2p网络和区块链网络的分布式存储系统,该系统中包括多个存储节点(如图2所示)。其中,p2p网络中的存储节点用于存储数据,区块链网络中的存储节点用于存储索引。一个存储节点可以既属于于所述p2p网络,又属于所述区块链网络。在一优选实施例中,所述电子装置1可以为一个所述存储节点。

所述电子装置1包括:存储器11、处理器13、网络接口15及通信总线17。其中,网络接口15可选地可以包括标准的有线接口、无线接口(如wi-fi接口)。通信总线17用于实现这些组件之间的连接通信。

存储器11至少包括一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,所述存储器11可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘。在另一些实施例中,所述存储器11也可以是所述电子装置1的外部存储单元,例如所述电子装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。

在本实施例中,所述存储器11可以用于存储安装于所述电子装置1的应用软件及各类数据,例如分布式存储程序10的程序代码及其运行过程中产生的相关数据。

处理器13在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其它数据处理芯片,用于运行存储器11中存储的程序代码或处理数据。

图1仅示出了具有组件11-17以及分布式存储程序10的电子装置1,但是应理解的是,图1并未示出电子装置1的所有组件,可以替代实施更多或者更少的组件。该电子装置1还可以包括射频(radiofrequency,rf)电路、传感器和音频电路等等,在此不再赘述。

在图1所示的电子装置1实施例中,作为一种计算机存储介质的存储器11中存储分布式存储程序10的程序代码,处理器13执行所述分布式存储程序10的程序代码时,在基于p2p网络的去中心化数据存储的同时,基于区块链网络来存储索引数据,为所述数据存储提供索引查询,保障数据安全。以下结合图3-5说明分布式存储程序10运行时实现的分布式存储方法。

如图3所示,是本发明分布式存储方法第一较佳实施例的流程图。在本实施例中,在本实施例中,处理器13执行存储器11中存储的分布式存储程序10的程序代码时实现的分布式存储方法包括:

步骤s10,每个存储节点获取该存储节点用户的私钥,利用区块链共识算法生成各私钥对应的公钥,得到各存储节点的公私钥对。

具体地,所述私钥可以为512bit随机数的sha256哈希值。所述区块链共识算法为pow、pos、dpos、pool、pbft其中之一。每个存储节点使用所述区块链共识算法,根据该私钥生成对应的公钥,形成公私钥对,由该存储节点使用,作为该用户的标识和签名机制。

步骤s12,发起文件存储请求的第一存储节点(也称为属主节点)利用私钥加密原文件得到加密文件,将加密文件编码为多个编码文件分发至相应的多个第二存储节点存储。

具体地,所述编码文件通过p2p网络分发至所述多个第二存储节点进行存储。所述“将加密文件编码为多个编码文件”包括:

(1)参数计算步骤:根据第一存储节点选取的第二存储节点的数量计算编码参数。

(2)编码步骤:通过喷泉码方法,根据所述编码参数将加密文件编码为多个编码文件。

在本实施例中,所述加密文件通过喷泉码(fountaincodes),也即无码率擦除码(ratelesserasurecodes)方式编码。具体而言,可以使用raptor算法的改进raptorq算法。

喷泉码是将一些数据,例如文件,转化为一个有效的任意数量的编码包的方法,这样只要接收到稍大于信源数据表数量的编码包的子集,就可以恢复信源数据。因此,即使存储在第二存储节点的一些数据传递不回来,第一存储节点只要接收到足够数量的编码包,就可以恢复数据,因此增强了数据存储的安全性、可靠性。

所述编码参数包括将文件平均分割为一个或多个数据块的每个数据块的大小,将各个数据块编码为多个片段的片段数量n。在本实施例中,可以根据所选取的第二存储节点的数量得到所述片段数量。所述数据块大小则可以由第一存储节点的计算能力确定。

所述编码步骤具体包括:

根据所述数据块大小将加密后的文件分割为一个或多个数据块;

将各数据块编码为n个片段;

从各数据块的n个片段分别提取一个片段组装为一个编码文件,得到n个编码文件。

如图4所示,首先将所述加密文件分割为4个数据块,然后将各数据块编码为4个片段;之后从各数据块的4个片段分别提取一个片段,并将提取的片段组装为一个编码后的文件;重复该步骤直至所有数据块片段组装完成,最后得到4个编码文件。

所述片段数量的多少,是衡量以下因素的结果:

1)编码后的每个文件的大小,越小越好,传输成功率越高;

2)编码消耗的内存,每个数据块越小越好;

3)编码性能,片段越小,性能越高;

4)数据块不能太大,否则对于小文件来说,填充数据量相比有效数据的比例就增加了。

在一优选实施例中,第一存储节点将编码文件分发至选取的第二存储节点前,需要发请求确认,确认与第二存储节点之间的连接稳定。也可以在第一存储节点从接受所述请求的外部存储节点中选取多个所述第二存储节点后,将所述加密文件编码为多个文件。

步骤s14,第一存储节点为每个第二存储节点生成一个存储合约,在所述存储合约中存储文件的索引信息,并将各存储合约分发至所述第一存储节点及相应的第二存储节点。

具体地,所述存储合约是区块链网络上的智能合约,存储合约根据合约条款周期性检查第二存储节点是否违约,并给第二存储节点结算存储文件的费用。所述文件的索引信息包括:根据原文件生成的加密文件的第一哈希值(filehash),根据原文件生成的各编码文件的第二哈希值(piecehash),原文件所属的第一存储节点的第一公钥(owner),各编码文件的第二存储节点的第二公钥(keeper),以及所述第一哈希值、第二哈希值、第一公钥、第二公钥之间的索引关系。所述索引信息表明了属主节点的原文件,经过切片编码后,存储在了哪个存储节点上。

在区块链网络的智能合约交易中,所述索引信息存储在交易的data字段,区块链网络的存储节点可以读取并解析该字段,并分别建立owner+filehash和keeper为key的索引。因此,区块链网络的存储节点可以实现以下操作:

(1)通过owner+filehash查询原文件的所有切片编码文件分别在哪些存储节点以及piecehash上;

(2)通过owner查询对应属主节点的所有文件filehash;

(3)通过keeper查询所有文件的索引数据。

如图5所示,是本发明分布式存储方法第二较佳实施例的流程图。本实施例中,所述分布式存储方法的步骤s20-s24与第一实施例的步骤s10-s14相类似,区别在于该方法还包括步骤s26。该方法包括:

步骤s20,每个存储节点获取该存储节点用户的私钥,利用区块链共识算法生成各私钥对应的公钥,得到各存储节点的公私钥对。

具体地,所述私钥可以为512bit随机数的sha256哈希值。所述区块链共识算法为pow、pos、dpos、pool、pbft其中之一。每个存储节点使用所述区块链共识算法,根据该私钥生成对应的公钥,形成公私钥对,由该存储节点使用,作为该用户的标识和签名机制。

步骤s22,发起文件存储请求的第一存储节点利用私钥加密原文件得到加密文件,将加密文件编码为多个编码文件分发至相应的多个第二存储节点存储。

具体地,所述编码文件通过p2p网络分发至所述多个第二存储节点进行存储。所述“将加密文件编码为多个编码文件”包括:

(1)参数计算步骤:根据第一存储节点选取的第二存储节点的数量计算编码参数。

所述编码参数包括将文件平均分割为一个或多个数据块的每个数据块的大小,将各个数据块编码为多个片段的片段数量n。

(2)编码步骤:通过喷泉码方法,根据所述编码参数将加密文件编码为多个编码文件。

所述编码步骤具体包括:

根据所述数据块大小将加密后的文件分割为一个或多个数据块;

将各数据块编码为n个片段;

从各数据块的n个片段分别提取一个片段组装为一个编码文件,得到n个编码文件。

步骤s24,第一存储节点为每个第二存储节点生成一个存储合约,在所述存储合约中存储文件的索引信息,并将各存储合约分发至所述第一存储节点及相应的第二存储节点。

具体地,所述存储合约是区块链网络上的智能合约,存储合约根据合约条款周期性检查第二存储节点是否违约,并给第二存储节点结算存储文件的费用。所述文件的索引信息包括:根据原文件生成的加密文件的第一哈希值,根据原文件生成的各编码文件的第二哈希值,原文件所属的第一存储节点的第一公钥,各编码文件的第二存储节点的第二公钥,以及所述第一哈希值、第二哈希值、第一公钥、第二公钥之间的索引关系。所述索引信息表明了属主节点的原文件,经过切片编码后,存储在了哪个存储节点上。

步骤s26,根据所述索引信息从p2p网络中下载编码文件,并经过解码和解密得到原文件。

在本实施例中,该步骤具体包括:

(1)查询第一存储节点存储的索引文件得到所述第一公钥及加密文件的第一哈希值,根据索引确定该第一哈希值对应的各编码文件的第二哈希值,以及所述第一公钥对应的所有第二公钥,从而确定存储所述原文件生成的多个编码文件的第二存储节点及各个第二存储节点存储的编码文件。

(2)从确定的第二存储节点下载编码文件。

(3)将下载的编码文件进行解码,还原为加密文件。

(4)利用第一存储节点的私钥解密所述加密文件,得到原文件。

下面以所述存储节点为云服务智能设备(例如玩客云)为例对所述方法进行具体说明。例如,所述云服务智能设备的用户自动成为所属分布式存储系统的用户,并且也具备了访问该分布式存储系统的权限。

用户在所述云服务智能设备app端,可以看到接入的硬盘上的文件,并可以请求将文件备份到所述分布式存储系统中的其它云服务智能设备(其它存储节点)接入的硬盘。之后文件将会被所述云服务智能设备上的节点服务加密、编码,分发到系统中的其它存储节点进行备份。备份后,用户可以在所述云服务智能设备app端查看备份好的文件列表。

当本地的硬盘损坏导致本地文件丢失时,用户可以更换新的硬盘,并在所述云服务智能设备app端中选择要恢复的文件进行恢复。此时,所述云服务智能设备上的节点服务将从其它存储节点中下载编码文件,进行解码、解密,从而恢复出原文件。

需要指出的是,图3、图5所示的流程图中,并不必然包括图中所示的所有步骤,也不限于图中所示的步骤。此外,有关区块链系统的常规处理步骤,可以根据实际应用场景纳入本发明。

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

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

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