本发明涉及分布式存储和区块链领域,具体来说是一种基于区块链的分布式存储方法。
背景技术:
1、分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
2、传统分布式系统如hdfs采用中心服务器路由,中心服务器记录文件存储在哪个机器,一旦中心服务器损坏将不可用。
3、上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
技术实现思路
1、本发明的目的就是为了解决上述问题,提供一种基于区块链的分布式存储方法。
2、为了实现上述目的,本发明的技术方案如下:
3、基于区块链的分布式存储方法,账户获得存储权限后,发起文件存储任务,包括如下步骤:s1.前端对文件进行分片,得到各字节分片的内容标识符;s2.将所有字节分片的内容标识符构造成一个梅克尔树(merkle tree),得到整个文件的以及所需存储空间大小;s3.获取在线的存储节点信息,将节点地址哈希与文件的进行异或计算,得到每个节点与文件的距离;s4.根据距离大小,选择最近的一个或多个节点进行存储。
4、进一步的,步骤s4中,进行存储的具体步骤如下:s41.将文件上传到距离最近的一个或多个节点,并存在其临时文件夹中;s42.将文件存储的相关信息组装成一笔区块链交易并进行签名,发送交易后先异步返回交易哈希和文件上传状态信息;s43.区块链调用合约,进行文件的存储。
5、进一步的,账户需要通过链上交易获取存储权限。
6、进一步的,存储节点存储文件时,同时将文件的梅克尔树存到当前存储节点本地的缓存服务器数据库中。
7、另外,本发明还提供一种基于区块链的分布式存储系统,包括分片模块、梅克尔树构造模块和距离计算模块和存储模块;所述分片模块对文件进行分片,获得每个字节分片的;所述梅克尔树构造模块通过递归将分片模块获得的字节分片的构造成文件的梅克尔树;所述距离计算模块对节点地址哈希与文件的进行异或计算,得到每个节点与文件的距离。
8、所述存储模块包括用于存储文件字节分片的分片存储模块和用于存储文件梅克尔树的本地缓存服务器数据库模块。
9、另外,本发明还提供一种基于区块链的分布式存储设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于区块链的分布式存储程序,所述基于区块链的分布式存储程序,配置有实现基于区块链的分布式存储方法。
10、本发明还提供一种存储介质,所述存储介质上存储有基于区块链的分布式存储程序,所述基于区块链的分布式存储程序,在被执行时,实现基于区块链的分布式存储方法。
11、采用以上技术方案,本发明具有以下优点:
12、1.文件分布式存储与链上结合,文件的内容标识符(即哈希)上链后无法篡改,可溯源文件是否被篡改过以及上传者等信息。
13、2.存储时对文件的和存储节点地址的哈希进行异或计算,根据距离远近排序,存储于最近的几个节点,这样查找文件时不用知道文件在哪个服务器上,一般查询距离最近的几个节点即可找到,这样也就不用服务器记载文件的存储位置,进一步去中心化。
14、3.常规的权限系统是记录在链下数据库中,中心化,可篡改。本发明的权限系统是记录在链上的,需要在链上发起交易,打包交易出块以及共识后才会通过。
15、4.常规的文件上传不用和区块链交互,本发明文件上传也需要通过在链上发起交易,打包交易出块以及共识后才可以上传。
16、5.本发明文件存储结构采用merkle tree的数据结构,可以提供merkle proof,验证文件块是否被篡改。
1.基于区块链的分布式存储方法,其特征在于,账户获得存储权限后,发起文件存储任务,包括如下步骤:s1.前端对文件进行分片,得到各字节分片的内容标识符;
2.根据权利要求1所述的基于区块链的分布式存储方法,其特征在于,步骤s4中,进行存储的具体步骤如下:s41.将文件上传到距离最近的一个或多个节点,并存在其临时文件夹中;
3.根据权利要求1所述的基于区块链的分布式存储方法,其特征在于,账户需要通过链上交易获取存储权限。
4.根据权利要求1所述的基于区块链的分布式存储方法,其特征在于,存储节点存储文件时,同时将文件的梅克尔树存到当前存储节点本地的缓存服务器数据库中。
5.基于区块链的分布式存储系统,其特征在于,包括分片模块、梅克尔树构造模块和距离计算模块和存储模块;
6.根据权利要求5所述的基于区块链的分布式存储系统,其特征在于,所述存储模块包括用于存储文件字节分片的分片存储模块和用于存储文件梅克尔树的本地缓存服务器数据库模块。
7.基于区块链的分布式存储设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于区块链的分布式存储程序,所述基于区块链的分布式存储程序,配置有实现如权利要求1至4任一项所述的基于区块链的分布式存储方法。
8.存储介质,其特征在于,所述存储介质上存储有基于区块链的分布式存储程序,所述基于区块链的分布式存储程序,在被执行时,实现如权利要求1至4任一项所述的基于区块链的分布式存储方法。