System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及区块链,特别是涉及一种基于区块链的数据存取方法。
技术介绍
1、区块链是一种分布式数据库技术,区块链网络中每个节点都按照块链式结构存储完整的数据且区块链网络的每个节点上存储的数据都是独立的、地位等同的。当区块链网络中的某个节点因为受到攻击而被破坏时,该节点上存储的完整数据就会丢失,另外其他节点也无法获取到存储在该节点上的数据,将会导致数据缺失的问题。
2、目前,对于区块链数据的存储备份,一是:完全存储方式,即在1个或多个备份节点中存储待备份数据的完整原始数据。该方式虽然存储方式简单,但需要大量的存储空间来保存备份数据,随着数据量的增加,备份所需的存储空间也会不断增加,其不仅会占用较多的区块链存储资源,而且当原始数据节点和备份数据的节点都失效或被破坏时,原始数据将不能恢复,同时不能有效的保证数据的完整性。二是:将数据进行分片,将分片数据存储在多个节点上来实现的,可以在单一节点受到攻击时,即使单一节点的数据丢失仍然不影响数据的完整性。但是,现有技术的分片,大多采用直接拆分拼接的方式,且没有对数据的完整性、准确性进行验证,可能获得的数据存在着被篡改的风险,其数据恢复准确性低。
3、因此,如何改善该数据备份和恢复的方式,提供一种更完善的数据存取方式,是该领域亟待解决的技术问题。
技术实现思路
1、为解决上述技术问题,本专利技术提供一种数据存取方法,包括:
2、数据存储步骤:
3、a1:将原始数据分成m个数据分片,分发给m个不同的
4、a2:计算各数据分片的哈希值,并将各数据分片的存储位置、数据分片的哈希值,存储在本地数据库;
5、t为重构原始数据所需的最少数据分片的个数,1≤t≤m,初始化时tj=t;
6、数据读取步骤:
7、b1:向m个区块链节点中的至少tj个正常节点请求获取对应数据分片的信息,得到tj个数据分片;
8、b2:判断获取的tj个数据分片的哈希值与存储的对应数据分片的哈希值是否至少有tj个一致;
9、b3:若有,则根据获取的至少t个一致哈希值对应的数据分片,重构原始数据,得到对应待读取的数据;
10、b4:若无,则根据判断结果确定当前已有一致哈希值的数据分片数量t’,计算当前还需获取最少数据分片的个数tj=t-t’,返回步骤b1,直到获取至少t个一致哈希值对应的数据分片,根据获取的至少t个一致哈希值对应的数据分片,重构原始数据,得到待读取的数据。
11、进一步地,步骤b1前,还包括:
12、判断待读取数据,是否为某个正常节点单独存储的数据分片;
13、若是,则根据数据分片的存储位置,向对应节点请求获取对应数据分片的信息;并判断获取的数据分片的哈希值与存储的对应数据分片的哈希值是否一致,若一致,则数据读取成功;
14、若待读取数据不是某个正常节点单独存储的数据分片,或,获取的数据分片的哈希值与存储的对应数据分片的哈希值不一致,则执行步骤b1-b4,完成数据读取步骤。
15、进一步地,所述将原始数据分成m个数据分片的步骤,包括:
16、确定分片数量m和重构原始数据所需的最少数据分片t;
17、确定t-1个随机系数,构建一个度数为t-1的多项式;
18、计算多项式的自变量x依次为1至m的整数时多项式的值,将原始数据分成m个数据分片。
19、进一步地,所述重构原始数据的步骤,包括利用拉格朗日插值算法对数据进行重构。
20、进一步地,分片数量m,根据当前原始数据的长度、信息重要性程度、区块链系统中当前可用的节点数量而确定。
21、进一步地,重构原始数据所需的最少数据分片t,根据当前原始数据的长度、分片数量m、每片分片数据的长度而确定。
22、另一方面,本专利技术还提供一种数据存取系统,包括数据拥有者、数据分片模块、数据重构模块和区块链节点,用于执行上述任意的数据存取方法。
23、进一步地,数据拥有者,经数据分片模块,将原始数据分成m个数据分片,并计算各数据分片的哈希值;将各数据分片分发给m个不同的区块链节点,数据分片的存储位置、哈希值存储在本地数据库;
24、数据拥有者,经数据重构模块,从区块链系统中读取待读取信息。
25、另一方面,本专利技术还提供一种计算机存储介质,存储有可执行程序代码;所述可执行程序代码,用于执行上述任意的数据存取方法。
26、另一方面,本专利技术还提供一种终端设备,包括存储器和处理器;所述存储器存储有可被处理器执行的程序代码;所述程序代码用于执行上述任意的数据存取方法。
27、本专利技术提供了一种数据存取方法、系统及计算机存储介质和终端设备,涉及区块链数据的安全性和可靠性,可用于对区块链数据的存储和恢复,即数据存取。尤其涉及一种区块链数据的分片存储方法,设计了区块链数据的分片方案,同时基于哈希函数数据查询者可以有效的验证数据是否被篡改。优选的通过共享技术将数据分成多个数据分片并存储在不同的节点上,可以有效节省每个区块上的存储资源,并且即使部分节点出现异常或者其上的数据丢失、篡改时,也可将原始数据恢复出来。
本文档来自技高网...【技术保护点】
1.一种数据存取方法,其特征在于,包括:
2.根据权利要求1所述的数据存取方法,其特征在于,步骤B1前,还包括:
3.根据权利要求1所述的数据存取方法,其特征在于,所述将原始数据分成m个数据分片的步骤,包括:
4.根据权利要求3所述的数据存取方法,其特征在于,所述重构原始数据的步骤,包括利用拉格朗日插值算法对数据进行重构。
5.根据权利要求1-4任意一项所述的数据存取方法,其特征在于,分片数量m,根据当前原始数据的长度、信息重要性程度、区块链系统中当前可用的节点数量而确定。
6.根据权利要求5所述的数据存取方法,其特征在于,重构原始数据所需的最少数据分片t,根据当前原始数据的长度、分片数量m、每片分片数据的长度而确定。
7.一种数据存取系统,其特征在于,包括数据拥有者、数据分片模块、数据重构模块和区块链节点,用于执行权利要求1-6任意一项所述的数据存取方法。
8.根据权利要求7所述的数据存取系统,其特征在于,
9.一种计算机存储介质,其特征在于,存储有可执行程序代码;所述可执行程序代码
10.一种终端设备,其特征在于,包括存储器和处理器;所述存储器存储有可被处理器执行的程序代码;所述程序代码用于执行1-6任意一项所述的数据存取方法。
...【技术特征摘要】
1.一种数据存取方法,其特征在于,包括:
2.根据权利要求1所述的数据存取方法,其特征在于,步骤b1前,还包括:
3.根据权利要求1所述的数据存取方法,其特征在于,所述将原始数据分成m个数据分片的步骤,包括:
4.根据权利要求3所述的数据存取方法,其特征在于,所述重构原始数据的步骤,包括利用拉格朗日插值算法对数据进行重构。
5.根据权利要求1-4任意一项所述的数据存取方法,其特征在于,分片数量m,根据当前原始数据的长度、信息重要性程度、区块链系统中当前可用的节点数量而确定。
6.根据权利要求5所述的数据存取方法,其特征在于,重构原始数据所...
【专利技术属性】
技术研发人员:谭林,陈宛祯,钟思琪,刘齐军,
申请(专利权)人:湖南天河国云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。