一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种区块链数据存储与共享方法、系统、设备及终端与流程

2022-02-22 03:16:31 来源:中国专利 TAG:


1.本发明属于区块链多个数据拥有者的数据存储和共享技术领域,尤其涉及 一种区块链数据存储与共享方法、系统、设备及终端。


背景技术:

2.目前,区块链是由对等网络的节点维护的分布式数据库,它由密码学、数 据库、p2p网络、共识算法和智能合约等技术综合而成的一门新兴技术。其中智 能合约是一种旨在以信息化方式传播、验证和执行合同的计算机协议,允许在 区块链中进行可信交易,因此通过智能合约可实现数据共享。
3.随着区块链技术的不断发展,为了解决区块链存储大量数据导致效率低下 等问题,提出了一种基于云的链下存储方式,其主要思想是将原本存储在区块 链中的数据转移到非区块链存储系统中,并按照某种规则生成存储数据的唯一 标识,当区块链数据需要访问完整数据时,通过该数据的唯一标识便可在非区 块链存储系统中获取原始数据。
4.huffman编码是一种可变长编码方式,依据字符在需要编码文件中出现的概 率进行排序,挑选概率最小的两个组合并合并为一组分支,从而构造出huffman 树。huffman压缩是一种采用huffman编码的无损压缩算法,一般用于减少存 储空间压缩文件。因此,在区块链中引入huffman压缩可减少云的链下存储空 间。
5.纠删码属于编码理论的一种保护和恢复数据的方法,由于纠删码技术在保 护和恢复数据过程中取得了较好的效果,并且在保证数据安全性的前提下降低 存储开销,因此被引入了存储领域。其中,里德-索罗门(rs)算法是存储系统 中常用的一种纠删码算法,rs算法对m个数据块进行编码,生成m n个编码 块,任取m块便可解码出原始数据,即rs算法最多容忍n个数据块或者编码 块同时丢失。但现有技术中关于将huffman压缩技术与里德-索罗门(rs)算法 相结合应用于区块链数据存储与共享中的技术方案尚未见报道。因此,亟需一 种新的基于huffman压缩和纠删码技术的区块链数据存储与共享方法、系统。
6.通过上述分析,现有技术存在的问题及缺陷为:
7.(1)区块链存储大量数据会导致效率低下等问题。
8.(2)现有技术中关于将huffman压缩技术与里德-索罗门(rs)算法相结 合应用于区块链数据存储与共享中的技术方案尚未见报道。
9.解决以上问题及缺陷的难度为:
10.(1)既要使huffman压缩技术对共享数据进行压缩提高rs纠删码的编解 码效率和数据共享的效率,又要保证使用huffman压缩技术压缩后的数据的真 实性;
11.(2)借助链下存储方案是现在最为广泛应用的模式,该方案可提高区块链 的运行效率,但如何高效保证基于云的链下存储的数据安全性是一个难点;
12.(3)由于现有数据量大且数据类型多样,选取合适的存储与共享方案并保 证数据的安全存储和可靠数据共享是一个难点。
13.解决以上问题及缺陷的意义为:
14.(1)现阶段基于区块链的数据共享方案多应用于单一数据拥有者,而在实 际的应用场景中,一个数据可能同时属于多个数据拥有者,该方案解决了当数 据属于多个数据拥有者时难以决定是否进行数据共享的难题;
15.(2)该方案采用链上链下的存储方式,将数据存储在云中,而不是将所有 的数据都存储在区块链上,同时只在区块链上进行数据共享过程,以此减少了 区块链的存储压力,提高了区块链的交易速度;
16.(3)由于现有数据量大,该方案使用huffman压缩技术将数据进行压缩, 并使用rs算法将压缩后的数据处理为不同的编码块,以此减少云的数据存储压 力。


技术实现要素:

17.针对现有技术存在的问题,本发明提供了一种区块链数据存储与共享方法、 系统、设备及终端,尤其涉及一种基于huffman压缩和纠删码技术的区块链数 据存储与共享方法、系统、设备及终端。
18.本发明是这样实现的,一种区块链数据存储与共享方法,所述区块链数据 存储与共享方法包括:
19.将原始数据进行分片后使用huffman算法进行压缩后,使用纠删码技术将 分片数据编码为多个数据块后存储在云中,并将云端生成的文件hash存储在区 块链中;当数据请求者请求数据时,数据拥有者使用纠删码技术恢复原始数据 即可进行数据共享。
20.进一步,所述区块链数据存储与共享方法包括以下步骤:
21.步骤一,原始数据的获取和预处理:将数据进行分片后使用huffman算法 进行压缩,并使用纠删码技术将压缩后的数据处理为不同的编码块,上述做法 使用huffman算法将数据进行压缩以此减少链下数据存储的压力;
22.步骤二,数据存储:将原本存储在区块链的数据转移到云端,且每个云端 只存储一个编码块,上述做法采用了链上链下的存储方式,将原始数据存储在 云中,只在区块链中使用hash值进行交易,以此提升区块链的运行效率;
23.步骤三,数据共享:首先使用纠删码技术恢复数据,随后使用huffman算 法解压缩数据后便获得原始数据,最后使用带有访问控制权限的智能合约进行 数据共享,上述做法解决了当数据属于多个数据拥有者时安全、高效的数据共 享问题。
24.进一步,所述区块链数据存储与共享方法,还包括:
25.(1)确定原始数据:获取原始数据d并确定共同拥有者的个数p;
26.(2)预处理原始数据:首先将p分为m和n两部分,即p=m n,且m》n, 其中m为原始数据d的分片个数,n为校验块个数,其次将原始数据d分为m 个分块,并使用基于huffman树的压缩方法对m个分片数据进行压缩,最后增 加n份校验数据并使用rs纠删码对m份压缩数据进行编码形成p份编码数据;
27.(3)数据存储:将形成的m n份编码数据分别存储在p个数据拥有者的云 端,并将生成的数据散列值保存在区块链中,解决区块链的存储扩展性问题;
28.(4)数据共享:统计想要共享数据d的数据拥有者个数s,以此判断是否 进行数据共享。
29.进一步,步骤(4)中,所述数据共享过程分为以下两种情况:
30.1)若s《m,使用s个分块不能恢复原始数据d,则不能进行数据共享;
31.2)若s≥m,则进行数据共享。
32.进一步,步骤2)中,所述数据共享过程如下:
33.①
下载分片数据:s个数据拥有者分别从各自的云端下载存储的分片数据;
34.②
恢复原始数据:使用rs纠删码技术解码s个分块数据并获得未解压的原 始数据;
35.③
解压缩分片数据:使用基于huffman树的解压缩方法解压缩数据后获得 原始数据d;
36.④
数据共享:数据拥有者通过具有访问控制权限的智能合约将原始数据d 的hash值上传到区块链中,数据请求者通过智能合约下载原始数据d的hash 值,完成数据共享过程。
37.进一步,步骤

中,所述数据共享,包括:
38.数据请求者通过智能合约向数据拥有者进行数据请求,并将自己的公钥发 送给数据拥有者;数据拥有者响应数据请求者的数据请求,并使用数据请求者 的公钥加密hash;数据拥有者使用智能合约将加密后的hash上传到区块链;数 据请求者通过智能合约下载加密后的hash,并使用自己的私钥进行解密。
39.本发明的另一目的在于提供一种应用所述的区块链数据存储与共享方法的 区块链数据存储与共享系统,所述区块链数据存储与共享系统包括:
40.数据获取和预处理模块,用于将原始数据进行分片后使用huffman算法进 行压缩,并使用纠删码技术将压缩后的数据处理为不同的编码块;
41.数据存储模块,用于将原本存储在区块链的数据转移到云端,且每个云端 只存储一个编码块;
42.数据共享模块,用于使用纠删码技术恢复数据,使用huffman算法解压缩 数据获得原始数据,并使用带有访问控制权限的智能合约进行数据共享。
43.本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器 和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行 时,使得所述处理器执行如下步骤:
44.将原始数据进行分片后使用huffman算法进行压缩后,使用纠删码技术将 分片数据编码为多个数据块后存储在云中,并将云端生成的文件hash存储在区 块链中;当数据请求者请求数据时,数据拥有者使用纠删码技术恢复原始数据 即可进行数据共享。
45.本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序, 所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
46.将原始数据进行分片后使用huffman算法进行压缩后,使用纠删码技术将 分片数据编码为多个数据块后存储在云中,并将云端生成的文件hash存储在区 块链中;当数据请求者请求数据时,数据拥有者使用纠删码技术恢复原始数据 即可进行数据共享。
47.本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终 端用于实现所述的区块链数据存储与共享系统。
48.结合上述的所有技术方案,本发明所具备的优点及积极效果为:传统基于 区块链的数据共享方案仅适用于单一数据拥有者,而在实际的应用场景中,某 一数据可能有多个
数据拥有者,因此本发明提供了一种适用于多个数据拥有者 的区块链数据存储与共享方法,基于huffman压缩和rs纠删码技术,对原始数 据进行分片并压缩后使用rs纠删码技术进行编码,且每个数据拥有者的云端仅 存储一个分片数据。与现有存储技术相比,该做法通过将区块链的存储压力转 移到基于云的链下存储,以此减轻区块链节点的存储压力,同时使用huffman 压缩技术减少了链下存储的存储压力。当进行数据共享时,若同意进行共享数 据的数据拥有者个数s不少于m时,使用纠删码技术恢复原始数据后便可进行 数据共享,该过程减弱了单个数据拥有者的权限,提高了数据的安全性。
49.本发明涉及一种基于huffman压缩和纠删码技术的区块链数据存储与共享 方法,与现有技术相比,该方案解决了当某一数据属于多个数据拥有者时,基 于区块链的数据存储和共享方法的缺陷。本发明包含以下步骤:原始数据的获 取和预处理;数据存储;数据共享。当存储数据时,本发明将本应存储在区块 链的数据转移到云端,且每个云端只存储经过huffman压缩和纠删码技术处理 后的编码块;当大多数数据拥有者同意进行数据共享时,使用纠删码技术解码 数据后使用huffman算法解压缩获取原始数据,并使用带有访问控制权限的智 能合约进行数据共享。本发明能够减轻区块链的存储压力,提高数据共享效率。
50.与已有技术相比,本发明的有益效果还体现在:
51.(1)本发明将原始数据分片,使用rs纠删码技术将数据编码为多个数据 块,并将编码后的数据块分别存储在不同的云端,通过上述方法减轻了区块链 的存储压力。
52.(2)本发明使用基于huffman树的压缩方法对分片数据进行压缩,以此提 高rs纠删码的编解码效率,同时也降低了云的存储压力。
53.(3)本发明基于纠删码技术的容错能力,在少数数据拥有者不愿共享数据 或数据丢失的情况下,利用rs纠删码技术进行解码便可恢复原始数据,从而实 现数据共享。
附图说明
54.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所 需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下 还可以根据这些附图获得其他的附图。
55.图1是本发明实施例提供的区块链数据存储与共享方法流程图。
56.图2是本发明实施例提供的区块链数据存储与共享方法原理图。
57.图3是本发明实施例提供的数据存储示意图。
58.图4是本发明实施例提供的数据共享示意图。
59.图5是本发明实施例提供的区块链数据存储与共享系统结构框图;
60.图中:1、数据获取和预处理模块;2、数据存储模块;3、数据共享模块。
具体实施方式
61.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例, 对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以 解释本发明,并不用于限定本发明。
62.针对现有技术存在的问题,本发明提供了一种区块链数据存储与共享方法、 系统、设备及终端,下面结合附图对本发明作详细的描述。
63.如图1所示,本发明实施例提供的区块链数据存储与共享方法包括以下步 骤:
64.s101,原始数据的获取和预处理:将数据进行分片后使用huffman算法进行 压缩,并使用纠删码技术将压缩后的数据处理为不同的编码块;
65.s102,数据存储:将原本存储在区块链的数据转移到云端,且每个云端只 存储一个编码块;
66.s103,数据共享:首先使用纠删码技术恢复数据,其次使用huffman算法解 压缩数据获得原始数据,最后使用带有访问控制权限的智能合约进行数据共享。
67.本发明实施例提供的区块链数据存储与共享方法原理图如图2所示,本发 明实施例提供的数据存储示意图如图3所示,本发明实施例提供的数据共享示 意图如图4所示。
68.如图5所示,本发明实施例提供的区块链数据存储与共享系统包括:
69.数据获取和预处理模块1,用于将原始数据进行分片后使用huffman算法进 行压缩,并使用纠删码技术将压缩后的数据处理为不同的编码块;
70.数据存储模块2,用于将原本存储在区块链的数据转移到云端,且每个云端 只存储一个编码块;
71.数据共享模块3,用于使用纠删码技术恢复数据,使用huffman算法解压缩 数据获得原始数据,并使用带有访问控制权限的智能合约进行数据共享。
72.下面结合具体实施例对本发明的技术方案作进一步描述。
73.实施例1
74.本发明的目的是为了解决当数据有多个数据拥有者时,如何对数据进行安 全存储和共享机制的缺陷,提出了一种基于huffman压缩和纠删码技术的区块 链安全存储和共享方案。该方法首先将原始数据进行分片后使用huffman算法 进行压缩,最后使用纠删码技术将分片数据编码为多个数据块后存储在云中, 并将云端生成的文件hash存储在区块链中。当数据请求者请求数据时,数据拥 有者使用纠删码技术恢复原始数据便可进行数据共享。
75.为了实现上述目的,本发明的技术方案如下:
76.本发明基于哈夫曼树和纠删码技术的区块链数据存储与共享方案,包括以 下步骤:
77.1.确定原始数据:获取原始数据d并确定共同拥有者的个数p;
78.2.预处理原始数据:首先将p分为m和n两部分,即p=m n,且m》n,其 中m为原始数据d的分片个数,n为校验块个数,其次将原始数据d分为m个 分块,并使用基于huffman树的压缩方法对m个分片数据进行压缩,最后增加 n份校验数据并使用rs纠删码对m份压缩数据进行编码形成p份编码数据;
79.3.数据存储:将形成的m n份编码数据分别存储在p个数据拥有者的云端, 并将生成的数据散列值保存在区块链中,从而解决区块链的存储扩展性问题;
80.4.数据共享:首先统计想要共享数据d的数据拥有者个数s,以此判断是 否进行数据共享,该过程分为以下两种情况;
81.4.1若s《m,使用s个分块不能恢复原始数据d,则不能进行数据共享;
82.4.2若s≥m,则进行数据共享,具体过程如下:
83.(1)下载分片数据:s个数据拥有者分别从自己的云端下载存储的分片数 据;
84.(2)恢复原始数据:使用rs纠删码技术解码s个分块数据获得未解压的 原始数据;
85.(3)解压缩分片数据:使用基于huffman树的解压缩方法解压缩数据后获 得原始数据d;
86.(4)数据共享:数据拥有者通过具有访问控制权限的智能合约datasharing 的uploadhash()接口将原始数据d的hash值上传到区块链,数据请求者通过智 能合约datasharing的requesthash()接口下载原始数据d的hash值,上述过程完 成了数据共享过程。
87.本发明是一种基于huffman压缩和rs纠删码技术的区块链安全存储和共享 方法,当数据属于多个数据拥有者时,对原始数据进行分片并压缩后使用rs纠 删码技术进行编码,且每个数据拥有者的云端仅存储一个分片数据。与现有存 储技术相比,该做法通过将区块链的存储压力转移到基于云的链下存储,以此 减轻区块链节点的存储压力,同时使用huffman压缩技术减少了链下存储的存 储压力。当进行数据共享时,若同意进行共享数据的数据拥有者个数s不少于m 时,使用纠删码技术恢复原始数据后便可进行数据共享,该过程减弱了单个数 据拥有者的权限,提高了数据的安全性。
88.本发明将原始数据分片,使用rs纠删码技术将数据编码为多个数据块,并 将编码后的数据块分别存储在不同的云端,通过上述方法减轻了区块链的存储 压力。本发明使用基于huffman树的压缩方法对分片数据进行压缩,以此提高 rs纠删码的编解码效率,同时也降低了云端的存储压力。本发明基于纠删码技 术的容错能力,在少数数据拥有者不愿共享数据或数据丢失的情况下,利用rs 纠删码技术进行解码便可恢复原始数据,从而实现数据共享。
89.实施例2
90.如图2所示,本发明实施例提供的基于纠删码的区块链数据存储与共享方 法,包含以下步骤:
91.第一步,确定原始数据:获取原始数据d并确定数据拥有者的个数p,将p 分为m和n两部分,即p=m n,且m》n,其中m为原始数据d的分片个数,n 为校验块个数;
92.第二步,预处理原始数据:将原始数据d分为m个分片,利用rs纠删码 将m份原始数据增加n份校验数据形成p份编码数据,该编码过程采用基于柯 西矩阵的里得-索罗门算法,具体分为以下5部分:
93.(1)以m=5,n=3为例,即将原始数据d进行分片,分片后的数据记为 m1,m2,m3,m4,m5;
94.(2)使用基于huffman树的压缩方法对分片数据m1,m2,m3,m4,m5 进行压缩,压缩后的数据为d1,d2,d3,d4,d5,并记为d=[d1,d2,d3,d4,d5]-1

[0095]
(3)生成柯西矩阵:
[0096][0097]
(4)增加3个校验块数据后生成基于柯西矩阵的纠删码编码矩阵b并进行 编码,该过程记为p=bd,其中,p为编码后的数据矩阵,b为编码矩阵,d为 压缩后的分片数据矩阵;
[0098][0099]
(5)编码后的矩阵p包含d1,d2,d3,d4,d4,d5,c1,c2,c3,记为p=[d1,d2,d3,d4,d5,c1,c2,c3]-1

[0100]
第三步,数据存储:将形成的矩阵p中编码数据分别存储在p个数据拥有 者的云端,并将生成的数据散列值保存在区块链中,从而解决区块链的存储扩 展性问题;
[0101]
第四步,数据共享:由于原始数据d属于多个数据拥有者,因此首先统计 愿意共享原始数据d的数据拥有者个数s,以此判断是否进行数据共享,该过 程分为以下两种情况;
[0102]
3.1若s《m,表示只有s个数据拥有者愿意共享原始数据d,其余p-s个数 据拥有者不愿进行数据共享,同时使用s个分片数据不能恢复原始数据d,因此 不能进行数据共享;
[0103]
3.2若s≥m,表示使用s个分片数据可以恢复原始数据d,则进行数据共享, 具体过程如下:
[0104]
(1)下载分片数据:s个数据拥有者分别从自己的云端下载存储的分片数 据;
[0105]
(2)恢复原始数据:使用rs纠删码算法通过解码s个分块数据恢复原始 数据d;
[0106]
首先假设s=5,表明3个数据拥有者(假设存储d1,d4和c2的用户)不愿 进行共享原始数据d,其余5个数据拥有者表示愿意共享,则恢复原始数据d 的过程如下:
[0107]
step1:删除不愿共享的分片数据在编码矩阵中对应的行,则矩阵b
(m n)m
变 为矩阵b'
mm
,为了方便描述,将矩阵b'
mm
记为b';
[0108][0109]
step2:计算矩阵b'的逆矩阵b'-1

[0110]
step3:解码恢复原始数据,具体过程分为以下4步:
[0111]

为了恢复原始数据,首先将愿意共享用户的数据组成新的矩阵 k=[d2,d3,d5,c1,c3]-1

[0112]

为了计算数据d,首先表示等式b'd=k;
[0113][0114]

由于b'-1
b=e,等式b'd=k两边同时乘以b'-1
得到b'-1
b'd=b'-1
k;
[0115]

得到d=b'-1
k,上述过程完成了解码过程,即得到分片数据d1,d2,d3, d4,d5;
[0116]
(3)解压缩分片数据:使用基于huffman树的解压方法解压缩分片数据d1, d2,d3,d4,d5得到m1,m2,m3,m4,m5,上述过程完成恢复原始数据d 的全部过程;
[0117]
(4)数据共享:当数据请求者请求数据d时,数据拥有者使用具有访问控 制权限的智能合约datasharing实现数据上链。
[0118]

数据请求者通过智能合约向数据拥有者进行数据请求,并将自己的公钥 通过sendpk()接口发送给数据拥有者;
[0119]

数据拥有者响应数据请求者的数据请求,并使用数据请求者的公钥加密 hash;
[0120]

数据拥有者使用智能合约的uploadhash()接口将加密后的hash上传到区 块链;
[0121]

数据请求者通过智能合约requesthash()接口下载加密后的hash,并使用 自己的私钥进行解密。
[0122]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组 合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程 序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指 令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可 以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算 机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向 另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、 计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl) 或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器 或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的 任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据 存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质 (例如dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0123]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明 的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的 保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献