基于区块链的分布式存储的制作方法

文档序号:11774592阅读:310来源:国知局
基于区块链的分布式存储的制作方法与工艺

本公开的实施例总体上涉及文件存储技术领域,更具体地涉及基于区块链的分布式存储方法和设备。



背景技术:

区块链是一种去中心化的存储和计算技术,其通过将加密数据块按照时间顺序叠加而生成的持久的不可修改的记录,并且将计入存储在区块链网络的各个节点中,使得以去中心化的方式集体维护一个可靠数据库。每个数据块中包含了一定时间内的系统数据,并且生成数据指纹用于验证其信息的有效性和链接下一个数据库块。因此,区块链在数据防篡改、透明性以及去中心化方面具有技术优势。

通常,互联网中介机构通过第三方数字签名公司来保证文件(例如电子合同)的真实性。例如,电子合同所涉及的各方对电子合同进行签名,然后将电子合同存储到第三方数字签名公司的存储设备中,以保证电子合同的真实性(无篡改)和可用性(备份)。当出现争议时,可以从数字签名公司获得真实且可用的电子合同,以保证电子合同的法律效力。在此过程中,需要一些时间去第三方数字签名公司获取电子合同并且需要支付一些认证和存档费用。



技术实现要素:

有鉴于此,本公开的各实施例提出了一种基于区块链的分布式存储方法和设备。本公开的实施例通过将区块链和分布式文件系统相结合,能够实现文件的防篡改和分布式存储,从而解决了区块链节点容量有限的问题,并且有效保证了所存储的文件的真实性和可用性。

根据本公开的第一方面,提供了一种基于区块链的分布式存储方法。该方法包括获得要被存储的文件并且生成针对该文件的哈希值以及哈希值的索引。该方法还包括将哈希值记录在区块链网络中并且将文件存储在分布式网络中,其中文件在分布式网络中基于哈希值被定位。

根据本公开的第二方面,提供了一种电子设备。该电子设备包括处理器和耦合至处理器并且存储有指令的存储器。所述指令在由处理器执行时使得电子设备执行以下动作:获得要被存储的文件;生成针对该文件的哈希值以及哈希值的索引;将哈希值记录在区块链网络中;以及将文件存储在分布式网络中,其中文件在分布式网络中基于哈希值被定位。

根据本公开的第三方面,本公开的实施例还提供了一种计算机可读存储介质。该计算机可读存储介质具有存储在其上的计算机可读程序指令。这些计算机可执行指令在设备中运行时使得该设备执行根据本公开中的各个实施例所描述的方法或过程。

附图说明

结合附图并参考以下详细说明,本公开的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施例,在附图中:

图1图示了传统的区块链网络的架构的示意图;

图2图示了根据本公开的实施例的基于区块链的分布式存储方法的流程图;

图3图示了根据本公开的一个实施例的基于区块链的分布式网络的架构的示意图;

图4图示了根据本公开的另一实施例的基于区块链的分布式网络的架构的示意图;

图5图示了根据本公开的又一实施例的基于区块链的分布式网络的架构的示意图;

图6图示了根据本公开的实施例的从基于区块链的分布式网络获取文件的方法的流程图;以及

图7图示了可以用来实施本公开的实施例的设备的示意性框图。

具体实施方式

以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。

本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。在本公开内容中,术语“基于”是“至少部分地基于”;术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。

应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制发明的范围。

传统地,通过第三方数字签名公司来保证电子合同的真实性的效率较低,需要合同各方去数字签名公司进行取证,取证过程繁琐。此外,还需向数字签名公司支付一些认证和存档费用。对于传统合同保全方式的一种改进是使用区块链来存储电子合同。由于可以将电子合同直接存储在区块链网络中,因而使用区块链的方法便于维权,同时增加了存储的透明度,还能够降低成本。

然而,区块链技术使用的是多点镜像技术,数据块会在区块链网络中的各个节点上进行存储。此外,区块链全量节点的数据已经非常大,并且各个节点的容量有限,因而只能将文件(例如电子合同)的摘要信息保存在区块链网络中,而不能保存原始文件。由于区块链网络中不存储原始文件,一旦数据意外失效或者被物理删除,将导致电子合同无法被恢复,因而区块链技术只能用来验证电子合同是否被篡改,而无法保证电子合同的可用性。

本公开的实施例提供了一种基于区块链的分布式存储方法和设备。本公开的实施例通过将区块链和分布式文件系统相结合,在区块链网络中存储文件的哈希值,同时在分布式网络中分散地存储原始文件的各个文件块。因此,本公开的实施例能够解决区块链节点容量有限的问题,并且能够实现文件的防篡改和分布式存储,由此有效保证所存储的文件的真实性和可用性。以下参考附图描述了本公开的实施例示例性方法和设备。

图1图示了传统的区块链网络的架构100的示意图。如图1所示,架构100包括区块链节点111、112、113、114、115以及116。这些区块链节点可以通过网络同步数据,例如,可以将电子合同的摘要信息同步在区块链网络中。由于区块链网络的去中心化和透明性,在需要时可以从区块链网络中获取原始且真实的电子合同摘要信息。然而,传统的区块链网络由于容量原因,并不会保存电子合同的原始文件,因而无法保证原始文件的可用性。

图2图示了根据本公开的实施例的基于区块链的分布式存储方法200的流程图。应当理解,方法200例如可以由以下参考图3所描述的节点313、图4所描述的节点413、图5所描述的节点513或者图7说明书的设备700所执行。

在202,获得要被存储的文件。在一些实施例,文件可以为与多个用户相关联的电子合同,其中每个用户可以通过线下身份审核而获得由认证中心颁发的密钥(例如数字证书),密钥可以用于对电子合同进行签名。例如,针对涉及两方的电子合同,一方可以创建电子合同并且对电子合同进行签名,然后将电子合同提交到区块链网络中。区块链网络然后将对电子合同进行签名的请求发给另一方以,当另一方完成签名后,电子合同的签名以及签名状态会被实时地修改并且存储在区块链网络中。备选地,该文件还可以为电子协议、电子邮件以及聊天资料等。

在204,生成针对文件的哈希值和哈希值的索引。本领域技术人员应当理解,任何现有的或将来开发的哈希值生成方法可用于生成针对文件的哈希值,只要所生成的哈希值能够区分不同的文件。此外,还生成针对哈希的索引(也称交易哈希),并且将索引提供给用户,以用于后续查询。

在206,将哈希值记录在区块链网络中。例如,利用区块链的去中心化和透明性等特性,在区块链网络中保存所生成的哈希值,其用于标识原始文件。在一些实施例中,可以使用区块链智能合约来存储文件的哈希值及其相应签名状态。

在208,将文件存储在分布式网络中,其中文件在分布式网络中基于哈希值被定位。在一些实施例中,分布式网络是基于点对点协议的星际文件系统(interplanetaryfilesystem,ipfs)网络,并且ipfs分布式网络维护分布式哈希表。ipfs使用基于内容的地址来取代传统的基于域名的方式,当一个新的文件被添加到ipfs分布式网络中时,该文件的哈希值作为该文件在ipfs分布式网络中的索引。如果文件存在任何修改,则其对应的哈希值都会发生改变。由于使用文件的哈希值来查找文件,因而文件更安全且更可靠。

与区块链网络相比,ipfs分布式网络中每个节点仅存储一部分数据,ipfs分布式网络中将文件划分成多个文件块分散在各个节点中进行存储和备份,使得文件更难以被攻击或被篡改。应当理解,虽然本公开的实施例主要以ipfs分布式网络作为示例描述了本公开的实施例,但是基于哈希值来定位文件的其他分布式网络也是可行的。

在一些实施例中,可以将文件完整在存储在ipfs中的多个节点中。备选地,也可以将文件切分成多个文件块,然后将多个文件块分布地存储在ipfs分布式网络中的多个节点中。为了保证数据备份和冗余,每个文件块被存储在多个节点中的至少两个节点中。

因此,根据本公开的实施例的方法200,需要被保全的文件的哈希值被存储在区块链网络中,而原始文件被存储在分布式网络中,因而既保证了文件的真实性,又保证了文件的可用性,弥补了区块链节点容量有限和不支持存储空间线性扩展的缺陷。此外,当需要查验文件(例如电子合同)时,电子合同的相关方通过身份验证后可以从基于区块链的分布式网络获取电子合同。

图3图示了根据本公开的一个实施例的基于区块链的分布式网络的架构300的示意图。如图3所示,架构300包括区块链网络310和ipfs分布式网络320,其中区块链网络310包括区块链节点311、312、313、314、315以及316,而ipfs分布式网络320包括分布式节点321、322、323、324以及325。此外,如图3所示,架构300还可以包括计算设备330和340。在一些实施例中,监管部门可以对接区块链网络,成为区块链网络中的一个节点,例如监管部门的设备可以是区块链节点311,则其可以获得区块链网络中的所有数据,从而履行监管职责。区块链网络支持节点自动数据同步,也就是说,区块链网络中的任何节点都可以获得区块链上完整的数据备份。

区块链节点311-316和分布式节点321-325中的每个节点可以为计算设备,计算设备可以为服务器或者用户设备(例如移动设备,诸如智能手机、平板电脑、便携式计算机等,或固定设备,诸如台式计算机)。本领域技术人员应当理解,虽然图3中示出了区块链网络310和ipfs分布式网络320中的一些节点,但是也可以包括其他的节点。

在一些实施例中,区块链网络310中的区块链节点311-316之间通过网络同步数据块,而ipfs分布式网络320中的节点321-325通过网络实现分布式文件存储,区块链网络310与ipfs分布式网络320也是通过网络相连接。网络可以是任何有线和/或无线网络。可选地,该网络可以包括但不限于因特网、广域网、城域网、局域网、虚拟专用网络(vpn)网络、无线通信网络,等等。

在一个实施例中,计算设备330将电子合同提交到区块链节点313,然后由区块链节点313生成针对该电子合同的哈希值及其索引,将哈希值存储在分布式网络310中,并且向计算设备330提供索引。然后,计算设备340可以对该电子合同进行签名,并且将签名后的签名状态存储到区块链网络310中。接下来,区块链节点313可以将文件发送到ipfs分布式网络320进行分布式存储。例如,文件可以被切分成多个文件块分散地存储在ipfs分布式网络320中,其中文件可以通过哈希值被查找。由于文件的哈希值被存储在区块链网络310中,因而可以验证文件没被篡改,此外,由于文件被分布式地存储在ipfs分布式网络320中,因为文件通常不会被丢失,因而可以保证文件的可用性。

图4图示了根据本公开的另一实施例的基于区块链的分布式网络的架构400的示意图。如图4所示,架构400包括区块链网络410和ipfs分布式网络420,其中区块链网络410包括区块链节点411、412、413、414、415以及416,而ipfs分布式网络420包括分布式节点421、422、423、424、425、413以及414。

与图3中所描述的架构300不同之处在于,图3中的区块链网络310和ipfs分布式网络320是完全分离的,节点之间没有重复;而图4中的区块链网络410和ipfs分布式网络420之间有部分重叠,也即,一些节点既充当区块链节点又充当分布式节点,如节点413、414。例如,节点413和414上同时运行区块链程序和分布式存储程序,这样,节点413和414既存储文件的哈希值,又存储文件的文件块。

图5图示了根据本公开的又一实施例的基于区块链的分布式网络的架构500的示意图。如图5所示,架构500包括网络510,而网络510既充当区块链网络又充当ipfs分布式网络,也即,区块链网络和ipfs分布式网络完全重叠,其中网络510包括节点511、512、513、514、515、516。如图5所示,节点511-516中的每个节点既是区块链节点又是分布式节点,每个节点同时运行区块链程序和分布式存储程序,这样,所有节点都存储文件的哈希值,而每个节点只存储文件中的一部分文件块。

根据本公开的实施例的架构300-500,可以实现文件的防篡改、防丢失、以及安全备份存储。此外,任何参与者或监督机构可以加入区块链网络中作为成员节点进行公证和监督。

图6图示了根据本公开的实施例的从基于区块链的分布式网络获取文件的方法600的流程图。应当理解,方法200例如可以由以上参考图3所描述的节点313、图4所描述的节点413、图5所描述的节点513以及以下参考图7所描述的设备700所执行。

在602,基于索引从区块链网络获得哈希值,例如,区块链节点313根据从计算设备330接收到的索引来在区块链网络310中查找哈希值,然后使用该哈希值来查询ipfs分布式网络320中的分布式哈希表。在604,确定哈希值是否存在于分布式哈希表中,例如使用该哈希值去查询分布式哈希表中的所有记录,完全相同时表示哈希值存在于分布式哈希表中。如果存在,则在606通过该哈希值从ipfs分布式网络320获得文件。由于是通过区块链网络中未被更改过的哈希值获得的文件,因而该文件是真实且可靠的。在608,可以从区块链网络验证文件的签名状态,例如,验证电子合同是否已由计算设备330和340签名。如果哈希值不存在于分布式哈希表,则在610指示文件在分布式网络中被修改。由于ipfs分布式网络具有备份和冗余机制,因此ipfs分布式网络中的文件通常不会被损坏或者被修改。根据本公开的实施例,由于文件的哈希值在区块链网络中不会被修改,因而从ipfs分布式网络中获得的文件也是未被篡改的原始文件。

因此,本公开的实施例通过将区块链和分布式文件系统相结合,能够解决区块链节点容量有限的问题,并且能够实现文件的防篡改和分布式存储,由此有效保证所存储的文件的真实性和可用性。此外,与传统的第三方签名认证方式相比,本公开的实施例取证流程简单、周期短,有效地提高了电子合同的取证效率。

在一些实施例中,可以使用新的用户设备去接入区块链网络和ipfs分布式网络。例如,基于索引从区块链网络获得文件的元数据(例如哈希值),然后基于哈希值从ipfs分布式网络获得原始文件。可选地或者附加地,用户设备每次查询时都会在本地构建本地数据块,使其成为区块链网络节点的一部分,从而更好地保证了数据的去中心化存储。

应当理解,根据本公开的实施例的设备可以利用各种方式来实现。例如,在某些实施例中,该设备可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、光盘载体介质、诸如只读存储器的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本公开的实施例的设备和装置不仅可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合来实现。

图7图示了可以用来实施本公开的实施例的电子设备700的示意性框图。应当理解,电子设备700可以被实现为图3-5所描述的任一节点,或者电子设备700也可以被实现为图3-5所描述的任一节点中的任一个模块。如图7所示,设备700包括中央处理单元(cpu)701(例如处理器),其可以根据存储在只读存储器(rom)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序指令,来执行各种适当的动作和处理。在ram703中,还可存储设备700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

上文所描述的各种方法,例如方法200或600,可由处理单元701执行。例如,在一些实施例中,方法200和600可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到ram703并由cpu701执行时,可以执行上文描述的方法200和600中的一个或多个动作或步骤。

计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

本文所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本公开内容操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开内容的各个方面。

应当注意,尽管在上文的详细描述中提及了设备的若干模块或子模块,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。

以上所述仅为本公开的实施例可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。

虽然已经参考若干具体实施例描述了本公开的实施例,但是应该理解,本公开的实施例并不限于所公开的具体实施例。本公开的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。所附的权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。

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