一种通过区块链技术存储用户数据的方法及系统与流程

文档序号:25542511发布日期:2021-06-18 20:39阅读:180来源:国知局
一种通过区块链技术存储用户数据的方法及系统与流程

本申请涉及信息数据传输通信领域,尤其涉及一种通过区块链技术存储用户数据的方法及系统。



背景技术:

区块链是一个去中心化去信任的集体维护的可靠数据库,从本质上讲,它是一个共享数据库,存储于其中的数据或信息具有不可伪造、全程留痕、可以追溯、公开透明、集体维护等特征。基于这些特征,区块链技术奠定了坚实的信任基础,创造了可靠的合作机制,具有广阔的运用前景。

区块链的最基础特点即是分布式存储,然而现有的分布式数据存储一般都是直接将数据分别存储到各区块链节点中,并未衡量各区块链节点的能力,不能最优化的分配用户数据以提高存储效果。



技术实现要素:

本申请提供了一种通过区块链技术存储用户数据的方法,包括:

当前区块链节点为用户数据设置存储级别并整理为待存储数据,将待存储数据的长度及其存储级别发送至与当前区块链节点相关联的其他各区块链节点;

其他各区块链节点分别根据待存储数据长度及存储级别计算自身的存储能力,将各区块链节点的存储能力返回当前区块链节点;

当前区块链节点根据其他各区块链节点返回的存储能力对待存储数据进行分割,得到多个数据块,将各数据块发送至对应的其他各区块链节点。

如上所述的通过区块链技术存储用户数据的方法,其中,预先根据用户数据的应用排序及使用排序在区块链节点中设置用户数据的来源值,将用户数据、存储级别以及数据来源进行整理得到待存储数据,将待存储数据的长度和存储级别发送至与当前区块链节点相关联的其他各区块链节点。

如上所述的通过区块链技术存储用户数据的方法,其中,在各区块链节点中预先按照存储级别分配有n个安全存储区域,且约定只有高于或等于待存储数据的存储级别的安全存储区域能够存储待存储数据。

如上所述的通过区块链技术存储用户数据的方法,其中,在各区块链节点接收到待存储数据长度及其存储级别之后,各区块链节点采用下式计算自身的存储能力:

其中,t为各区块链节点计算的自身的存储能力,为第j个安全存储区域的剩余存储长度,n为安全存储区域的总数,s为待存储数据的存储级别,j的取值为从计算~(n-s),l为待存储数据的长度,为第i个安全存储区域的总长度,i的取值为1~n

如上所述的通过区块链技术存储用户数据的方法,其中,其他各区块链节点返回自身的存储能力之后,对各节点存储能力进行排序,按照排序结果根据待存储数据的长度选择存储能力最高的若干区块链节点。

如上所述的通过区块链技术存储用户数据的方法,其中,具体按照l=floor(2t)确定区块链节点数量t的取值,l为待存储数据的长度,floor为matlab中的向下取整函数,t即为根据待存储数据的长度选择存储能力最高的若干区块链节点的数量。

如上所述的通过区块链技术存储用户数据的方法,其中,当前区块链节点将各数据块发送至对应的其他各区块链节点,具体为当前区块链节点将各数据块进行哈希运算后将各数据块的哈希结果发送至对应的其他各区块链节点。

如上所述的通过区块链技术存储用户数据的方法,其中,当前区块链节点将各数据块发送至对应的其他各区块链节点之后,还包括:

其他各区块链节点接收到各自的数据块之后,将数据块存储至对应的高于待存储数据存储级别的安全存储区域中,并将数据块的存储地址返回当前区块链节点;

当前区块链节点记录分配了数据块的其他各区块链节点,以及对应所分配的数据块、数据块所存储的安全存储区域存储地址和数据块长度。

本申请还提供一种区块链存储系统,包括多个区块链设备,每一个区块链设备作为一个区块链节点,所述区块链节点执行上述任一项所述的通过区块链技术存储用户数据的方法。

本申请还提供一种计算机可读存储介质,包括至少一个存储器和至少一个处理器;存储器用于存储一个或多个程序指令;处理器,用于运行一个或多个程序指令,用以执行上述任一项所述的一种通过区块链技术存储用户数据的方法。

本申请实现的有益效果如下:采用本申请的技术方案,在进行区块链分布式存储时需要对用户数据进行预处理,然后各区块链节点根据预处理后的数据长度和存储级别计算自身的存储能力,然后根据不同区块链节点的不同存储能力进行数据块的分割,由此保证数据能够更加优化的进行分布式存储,提高数据存储的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是一种通过区块链技术存储用户数据的方法流程图;

图2是一种通过区块链技术存储用户数据的区块链存储系统示意图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本申请实施例一提供一种通过区块链技术存储用户数据的方法,应用于区块链存储系统中,区块链存储系统包括多个区块链设备,每一个区块链设备作为一个区块链节点,为保证每个区块链节点中的用户数据的安全性,利用区块链去中心化的特点,将每个区块链节点中的用户数据按照各区块链节点的存储能力拆分存储至其他的区块链节点中,保证每个区块链节点都只保留某一区块链节点中用户数据的一部分,由此确保用户数据的安全存储。

如图1所示,所述通过区块链技术存储用户数据的方法,具体包括如下步骤:

步骤110、当前区块链节点为用户数据设置存储级别并整理为待存储数据,将待存储数据的长度及其存储级别发送至与当前区块链节点相关联的其他各区块链节点;

当某一区块链节点需要安全性地存储其内的用户数据,则为这些需要存储的用户数据设置存储级别01~ff(可根据用户需求或程序需要),并预先在区块链节点中设置各数据的来源值,例如将当前区块链节点中的应用程序排序,各应用程序中按照使用过程排序(如登录为01,中间数据02等),比如,登录第二应用的数据,第二应用的排序为02,登录的动作为01,则登录第二应用的数据来源值为0201,然后将用户数据、存储级别以及数据来源进行整理得到待存储数据;例如,第一用户数据0f34567891a11,为用户安全登录第三应用(即数据来源预设为0301),设置存储级别为04,则整理得到的待存储数据为0f234567891a11030104;然后将待存储数据的长度和存储级别发送至与当前区块链节点相关联的其他各区块链节点。

需要说明的是,此处所说的当前区块链节点可以泛指任意一个要存储用户数据的区块链节点,并不具体指向某一特定区块链节点。

步骤120、其他各区块链节点分别根据待存储数据长度及存储级别计算自身的存储能力,将各节点的存储能力返回当前区块链节点;

本申请实施例中,在各区块链节点中预先按照存储级别分配有n个安全存储区域,且约定只有高于或等于存储级别的安全存储区域可以存储待存储数据,例如有10个安全存储区域,分别命名为存储区域1~存储区域10,待存储数据的存储级别为4,则只能存储至区块链节点内的1~4的安全存储区域内;

在各区块链节点接收到待存储数据长度及其存储级别之后,各区块链节点采用下式计算自身的存储能力:

其中,t为各区块链节点计算的自身的存储能力,为第j个安全存储区域的剩余存储长度,n为安全存储区域的总数,s为待存储数据的存储级别,j的取值为从计算~(n-s),l为待存储数据的长度,为第i个安全存储区域的总长度,i的取值为1~n

步骤130、当前区块链节点根据其他各区块链节点返回的存储能力对待存储数据进行分割,得到多个数据块,将各数据块发送至对应的其他各区块链节点;

具体地,其他各区块链节点返回自身的存储能力之后,先对各节点存储能力进行排序,按照排序结果根据待存储数据的长度选择存储能力最高的若干区块链节点,比如按照l=floor(2t)确定节点数量t的取值,floor为matlab中的向下取整函数,然后采用下式对待存储数据进行分割:

其中,是为第i个区块链节点所分割的数据块,为第i个区块链节点返回的存储能力,为按照存储能力排序后的前k个区块链节点的总存储能力,l为待存储数据的长度,t为根据待存储数据的长度选择存储能力最高的若干区块链节点的数量,ceil函数为matlab中的向上取整函数。

例如,各区块链节点返回的存储能力分别为0.5、0.4、0.22、0.7、0.6、0.32,则将上述存储能力排序后取存储能力最高的三个区块链节点进行数据存储,即取第四区块链节点、第五区块链节点、第一区块链节点和第二区块链节点,按照上述公式计算后将上述的待存储数据0f234567891a11030104的长度20将待存储数据分割为四个数据块,分别为0f23456、7891a1、10301、04,分别发送至第四区块链节点、第五区块链节点和第一区块链节点进行存储;优选可以将各数据块进行哈希运算,向各区块链节点发送各数据块的哈希结果。

进一步地,在当前区块链节点将各数据块发送至对应的其他各区块链节点之后,还可以包括如下子步骤:

step1、其他各区块链节点存储对应的数据块,并将数据块的存储地址返回当前区块链节点;在其他各区块链节点接收到各自的数据块之后,将数据块存储至对应的安全存储区域中,即存储在高于待存储数据存储级别的存储区域中,优选将数据存储在能够容纳整个数据的区域中,然后将数据块的存储地址返回当前区块链节点。

step2、当前区块链节点记录各数据块的存储顺序,及其各数据块在其他各区块链节点的存储地址和数据块长度;在当前区块链节点中,按照之前排序的存储能力的存储顺序记录对应的区块链节点、以及这些区块链节点所分配的数据块、所存储的安全存储区域存储地址和数据块长度;

例如,上述示例中当前区块链节点记录的结果为:0f2345604a10207、7891a1031006、10301a10105、04bc1001,其中最后一个字节为数据块长度、倒数第二三字节为所存储的安全存储区域存储地址、剩余字节为数据块;由此在当前区块链节点中存储的数据不是直接的用户数据,保证用户数据在当前区块链节点中的安全性,并且在其他各区块链节点中也只存储部分用户数据,更加能够保证用户数据的安全。

实施例二

本申请实施例二提供一种区块链存储系统,如图2所示,包括多个区块链设备,每一个区块链设备作为一个区块链节点,按照要进行数据存储的形式将区块链节点分为待分配数据的当前区块链节点和待进行分布式存储的其他各区块链节点;

当前区块链节点包括待存储数据整理模块211、数据发送模块212、数据接收模块213和数据块分割模块214;待存储数据整理模块211为用户数据设置存储级别并整理为待存储数据,数据发送模块212将待存储数据的长度及其存储级别发送至与当前区块链节点相关联的其他各区块链节点;数据接收模块213接收其他各区块链节点返回的存储能力;数据块分割模块214根据其他各区块链节点返回的存储能力对待存储数据进行分割,得到多个数据块;数据发送模块212还用于将各数据块发送至对应的其他各区块链节点。

其他各区块链节点包括数据接收模块221、存储能力计算模块222和数据发送模块223;数据接收模块221接收当前区块链节点发送的待存储数据的长度及其存储级别;存储能力计算模块222用于根据待存储数据长度及存储级别计算自身的存储能力;数据发送模块223将各节点的存储能力返回当前区块链节点。

与上述实施例对应的,本发明实施例提供一种计算机可读存储介质,计算机存储介质中包含一个或多个程序指令,一个或多个程序指令用于被处理器执行一种通过区块链技术存储用户数据的方法。

本发明所公开的实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行上述的方法。

在本发明实施例中,处理器可以是一种集成电路芯片,具有信号的处理能力。处理器可以是通用处理器、数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecific工ntegratedcircuit,简称asic)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。处理器读取存储介质中的信息,结合其硬件完成上述方法的步骤。

存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。

其中,非易失性存储器可以是只读存储器(read-onlymemory,简称rom)、可编程只读存储器(programmablerom,简称prom)、可擦除可编程只读存储器(erasableprom,简称eprom)、电可擦除可编程只读存储器(electricallyeprom,简称eeprom)或闪存。

易失性存储器可以是随机存取存储器(randomaccessmemory,简称ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,简称sram)、动态随机存取存储器(dynamicram,简称dram)、同步动态随机存取存储器(synchronousdram,简称sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,简称ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,简称esdram)、同步连接动态随机存取存储器(synchlinkdram,简称sldram)和直接内存总线随机存取存储器(directrambusram,简称drram)。

本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

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