CN108764902A - 用于存储数据的方法、节点和区块链系统 - Google Patents
用于存储数据的方法、节点和区块链系统 Download PDFInfo
- Publication number
- CN108764902A CN108764902A CN201810499689.5A CN201810499689A CN108764902A CN 108764902 A CN108764902 A CN 108764902A CN 201810499689 A CN201810499689 A CN 201810499689A CN 108764902 A CN108764902 A CN 108764902A
- Authority
- CN
- China
- Prior art keywords
- chain
- information
- node
- data
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
Abstract
本公开提供一种用于存储数据的方法、节点和区块链系统。该节点随机选择已加入的一条链作为存储主链,将需要存储的数据进行随机拆分,以得到多份数据块,针对每一份数据块,从链列表中随机选择一条链作为存储副链,将各数据块发送给与相应存储副链对应的全部节点进行存储,根据数据块与相应存储副链的对应关系生成关联信息,将关联信息发送给与存储主链对应的全部节点进行存储。本公开通过将数据进行拆分,每份数据块存储至不同的链。由此有效增加数据的安全性,同时降低了单链过长比较难维护的问题。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种用于存储数据的方法、节点和区块链系统。
背景技术
随着互联网技术的发展和人们对信任问题的逐步关注,如何保证数据的安全性(不被篡改)和保密性越来越受到人们重视。区块链技术以其防篡改、可追溯等特点,已经成为解决这个问题的关键技术。越来越多的企业开始提供对外的区块链存储系统,以便用户进行数据存储。
发明内容
发明人发现,现有的区块链存储技术通常有以下三种存储方式:1)维护一条链,将所有用户的所有数据都存储至此链;2)对每个用户开启一条链,将用户的数据每条链单独存储;3)对于规模比较小的用户合用一条链,大规模用户单独分链存储。
上述存储方式存在以下缺陷:1)无论哪种方式,只要获得加入此链的权限,就有可能获取到某些用户的所有数据;2)对于维护一条链的方式,会导致此链越来越长,后期维护难度剧增;3)对于每个用户开发一条链的方式,对于小规模用户而言太浪费;4)混合方式虽然减少了资源消耗,但无法摆脱只要加入此链便可能获取到当前链所有用户的数据的问题,无法保证其保密性。
为此,本公开提供一种能够降低维护难度、减小资源浪费和提高数据保密性的数据存储方案。
根据本公开的一个或多个实施例的一个方面,提供一种用于存储数据的方法,包括:随机选择当前节点已加入的一条链作为存储主链;将需要存储的数据进行随机拆分,以得到多份数据块;针对每一份数据块,从链列表中随机选择一条链作为存储副链,并获取与存储副链对应的全部节点信息;将数据块发送给与相应存储副链对应的全部节点进行存储;根据数据块与相应存储副链的对应关系生成关联信息;将关联信息发送给与存储主链对应的全部节点进行存储。
可选地,上述方法还包括:在将关联信息发送给与所述存储主链对应的全部节点进行存储后,将主链交易标识和主链的链名信息存储在本地。
可选地,上述方法还包括:将所述存储副链的副链交易标识发送给与所述存储副链对应的全部节点。
可选地,上述方法还包括:在接收到数据块后,判断相应的副链交易标识是否重复出现;在副链交易标识未重复出现的情况下,根据数据块生成区块;将生成的区块写入本地账本;通知与存储副链对应的其它节点进行本地账本同步。
可选地,上述方法还包括:在接收到关联信息后,判断关联信息中的主链交易标识是否重复出现;在主链交易标识未重复出现的情况下,根据关联信息生成区块;将生成的区块写入本地账本;通知当前接入区块链的其它节点进行本地账本同步。
可选地,上述方法还包括:在预定时刻检查当前节点是否已完成注册;在当前节点未完成注册的情况下,向中心节点发送注册请求,以便获得中心节点下发的用户密钥;在接收到中心节点下发的用户密钥后,向中心节点发送节点信息查询请求,以便获取当前接入区块链的全部节点信息;在接收到中心节点下发的全部节点信息后,向当前接入区块链的全部节点发送链信息查询请求,以便获取各节点已加入的链信息;将接收到链信息进行汇总,以得到链列表。
可选地,上述方法还包括:在接收到链信息查询请求后,将当前节点已加入的链信息发送给发送链信息查询请求的节点。
可选地,上述方法还包括:在接收到用户输入的主链交易标识和链名信息后,判断当前节点是否加入到与链名信息对应的链中;在当前节点加入到与链名信息对应的链中的情况下,根据主链交易标识获取对应的关联信息;对关联信息进行解析,以获得对应的数据存储列表;根据数据存储列表中的每条记录,从对应副链中获取存储的数据块;将所获得的数据块按序进行组合,以得到所存储的数据。
可选地,上述根据数据存储列表中的每条记录,从对应副链中获取存储的数据块包括:针对数据存储列表中的每条记录,提取出对应的副链信息和副链交易标识;查询与所提取的副链信息对应的全部节点;向查询到的全部节点发送数据查询请求,以便从与所提取的副链信息对应的各节点获取与副链交易标识对应的交易信息;根据交易信息的内容对所获取的交易信息进行统计,将出现次数最多的交易信息作为当前交易信息;从当前交易信息中提取出对应的数据块。
可选地,上述方法还包括:在接收到数据查询请求后,从数据查询请求中提取出副链信息和副链交易标识;判断当前节点是否加入到与提取出的副链信息对应的链中;在当前节点加入到与提取出的副链信息对应的链中的情况下,根据副链交易标识获取对应的交易信息;将所获取的交易信息发送给数据查询请求。
根据本公开的一个或多个实施例的另一个方面,提供一种用于存储数据的节点,包括:主链选择模块,被配置为随机选择当前节点已加入的一条链作为存储主链;数据拆分模块,被配置为将需要存储的数据进行随机拆分,以得到多份数据块;副链选择模块,被配置为针对每一份数据块,从链列表中随机选择一条链作为存储副链,并获取与存储副链对应的全部节点信息;数据块存储管理模块,被配置为将数据块发送给与相应存储副链对应的全部节点进行存储;关联信息生成模块,被配置为根据数据块与相应存储副链的对应关系生成关联信息;关联信息存储管理模块,被配置为将关联信息发送给与存储主链对应的全部节点进行存储。
可选地,上述节点还包括:信息存储模块,被配置为在关联信息存储管理模块将关联信息发送给与所述存储主链对应的全部节点进行存储后,将主链交易标识和主链的链名信息存储在本地。
可选地,数据块存储管理模块还被配置为将存储副链的副链交易标识发送给与存储副链对应的全部节点。
可选地,上述节点还包括:账本管理模块,被配置为在接收到数据块后,判断相应的副链交易标识是否重复出现,在副链交易标识未重复出现的情况下,根据数据块生成区块,将生成的区块写入本地账本,通知与存储副链对应的其它节点进行本地账本同步。
可选地,账本管理模块还被配置为在接收到关联信息后,判断关联信息中的主链交易标识是否重复出现,在主链交易标识未重复出现的情况下,根据关联信息生成区块,将生成的区块写入本地账本,通知当前接入区块链的其它节点进行本地账本同步。
可选地,上述节点还包括:注册管理模块,被配置为在预定时刻检查当前节点是否已完成注册,在当前节点未完成注册的情况下,向中心节点发送注册请求,以便获得中心节点下发的用户密钥;在接收到中心节点下发的用户密钥后,向中心节点发送节点信息查询请求,以便获取当前接入区块链的全部节点信息;在接收到中心节点下发的全部节点信息后,向当前接入区块链的全部节点发送链信息查询请求,以便获取各节点已加入的链信息;将接收到链信息进行汇总,以得到链列表。
可选地,上述节点还包括:链信息获取模块,被配置为在接收到链信息查询请求后,将当前节点已加入的链信息发送给发送链信息查询请求的节点。
可选地,上述节点还包括:数据获取模块,被配置为在接收到用户输入的主链交易标识和链名信息后,判断当前节点是否加入到与链名信息对应的链中,在当前节点加入到与链名信息对应的链中的情况下,根据主链交易标识获取对应的关联信息,对关联信息进行解析,以获得对应的数据存储列表,根据数据存储列表中的每条记录,从对应副链中获取存储的数据块,将所获得的数据块按序进行组合,以得到所存储的数据。
可选地,上述数据获取模块还被配置为针对数据存储列表中的每条记录,提取出对应的副链信息和副链交易标识,查询与所提取的副链信息对应的全部节点,向查询到的全部节点发送数据查询请求,以便从与所提取的副链信息对应的各节点获取与副链交易标识对应的交易信息,根据交易信息的内容对所获取的交易信息进行统计,将出现次数最多的交易信息作为当前交易信息,从当前交易信息中提取出对应的数据块。
可选地,上述节点还包括:账本提供模块,被配置为在接收到数据查询请求后,从数据查询请求中提取出副链信息和副链交易标识,判断当前节点是否加入到与提取出的副链信息对应的链中,在当前节点加入到与提取出的副链信息对应的链中的情况下,根据副链交易标识获取对应的交易信息,将所获取的交易信息发送给数据查询请求。
根据本公开的一个或多个实施例的又一个方面,提供一种用于存储数据的节点,包括:存储器,被配置为存储指令;处理器,耦合到存储器,处理器被配置为基于存储器存储的指令执行实现如上述任一实施例涉及的方法。
根据本公开的一个或多个实施例的又一个方面,提供一种区块链系统,包括如上述任一实施例涉及的节点,以及中心节点,被配置为在接收到注册请求后,为发送注册请求的节点下发用户密钥;在接收到节点信息查询请求后,为发送节点信息查询请求的节点下发当前接入区块链的全部节点信息;在接收到链信息查询请求后,为发送链信息查询请求的节点下发当前接入区块链的各节点已加入的链信息。
根据本公开的一个或多个实施例的又一个方面,提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上述任一实施例涉及的方法。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一个实施例的用于存储数据的方法的示例性流程图。
图2为本公开一个实施例的节点注册方法的示例性流程图。
图3为本公开一个实施例的数据获取方法的示例性流程图。
图4为本公开另一个实施例的节点注册方法的示例性流程图。
图5为本公开另一个实施例的用于存储数据的方法的示例性流程图。
图6为本公开另一个实施例的数据获取方法的示例性流程图。
图7为本公开一个实施例的用于存储数据的节点的示例性框图。
图8为本公开另一个实施例的用于存储数据的节点的示例性框图。
图9为本公开又一个实施例的用于存储数据的节点的示例性框图。
图10为本公开一个实施例的区块链系统的示例性框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1为本公开一个实施例的用于存储数据的方法的示例性流程图。可选地,本实施例的方法步骤由区块链中的节点执行。
在步骤101,随机选择当前节点已加入的一条链作为存储主链。
在步骤102,将需要存储的数据进行随机拆分,以得到多份数据块。
在一些实施例中,在随机拆分前,利用用户公钥对需要存储的数据进行加密,以便提高系统安全性。
在步骤103,针对每一份数据块,从链列表中随机选择一条链作为存储副链,并获取与存储副链对应的全部节点信息。
在链列表中,包括全网中各节点所加入的链信息,以及与各链对应的全部节点信息。
在步骤104,将各数据块发送给与相应存储副链对应的全部节点进行存储。
由此,与存储副链对应的节点根据数据块生成区块,将生成的区块写入本地账本,并通知与存储副链对应的其它节点进行本地账本同步。
可选地,还将存储副链的副链交易标识发送给与存储副链对应的全部节点。例如,某个节点在接收到其它节点发送的数据块后,判断相应的副链交易标识是否重复出现。若副链交易标识未重复出现,则该节点根据数据块生成区块,将生成的区块写入本地账本,并通知与存储副链对应的其它节点进行本地账本同步。由此可有效避免信息重复写入。
在一些实施例中,节点在发送交易信息前,利用用户私钥对发送的数据块进行签名。其它节点在接收到数据块后,首先对数据块进行签名验证,仅在签名验证通过后才会进行后续的区块写入本地账本的处理。由此可提高系统的安全性。
在步骤105,在各数据块处理完成后,根据数据块与相应存储副链的对应关系生成关联信息。
在步骤106,将关联信息发送给与存储主链对应的全部节点进行存储。
与存储主链对应的节点根据关联信息生成区块,将生成的区块写入本地账本,并通知当前接入区块链的其它节点进行本地账本同步,其中关联信息包括主链交易标识、主链信息、以及由与各数据块对应的序号、副链交易标识和副链信息构成的数据存储列表。
在一些实施例中,某个节点在接收到关联信息后,判断关联信息中的主链交易标识是否重复出现。若主链交易标识未重复出现,则该节点根据关联信息生成区块,将生成的区块写入本地账本,并通知当前接入区块链的其它节点进行本地账本同步。由此可有效避免关联信息重复写入。
在一些实施例中,节点在发送关联信息前,利用用户私钥对发送的关联信息进行签名。其它节点在接收到关联信息后,首先对关联信息进行签名验证,仅在签名验证通过后才会进行后续的区块写入本地账本的处理。由此可提高系统的安全性。
在一些实施例中,在将关联信息发送给与存储主链对应的全部节点进行存储后,将主链交易标识和主链的链名信息存储在本地,以便用户利用主链交易标识和相应的链名信息获取相应的数据。
在本公开上述实施例提供的用于存储数据的方法中,通过将数据进行拆分,每份数据块存储至不同的链。由于是分散存储,即使有部分链数据被查获,也无法还原所有数据。由此有效增加了数据的安全性,同时降低了单链过长比较难维护的问题。此外,由于将数据块随机分配至不同的链,从而可保证每条链的长度相仿,确保链维护的高效性。
图2为本公开一个实施例的节点注册方法的示例性流程图。可选地,本实施例的方法步骤由区块链中的节点执行。
在步骤201,在预定时刻检查当前节点是否已完成注册。
可选地,在当前节点启动、或在指定时刻进行相应检查。
在步骤202,在当前节点未完成注册的情况下,向中心节点发送注册请求,以便获得中心节点下发的用户密钥。
在步骤203,在接收到中心节点下发的用户密钥后,向中心节点发送节点信息查询请求,以便获取当前接入区块链的全部节点信息。
可选地,节点信息为相应节点的IP地址信息。
在步骤204,在接收到中心节点下发的全部节点信息后,向当前接入区块链的全部节点发送链信息查询请求,以便获取各节点已加入的链信息。
在一些实施例中,某个节点在接收到链信息查询请求后,将当前节点已加入的链信息发送给发送链信息查询请求的节点。
在步骤205,将接收到链信息进行汇总,以得到链列表。
例如,在链列表中,包括全网中各节点所加入的链信息,以及与各链对应的全部节点信息。
图3为本公开一个实施例的数据获取方法的示例性流程图。可选地,本实施例的方法步骤由区块链中的节点执行。
在步骤301,在接收到用户输入的主链交易标识和链名信息后,判断当前节点是否加入到与链名信息对应的链中。
在步骤302,在当前节点加入到与链名信息对应的链中的情况下,根据主链交易标识获取对应的关联信息。
在步骤303,对关联信息进行解析,以获得对应的数据存储列表。
在步骤304,根据数据存储列表中的每条记录,从对应副链中获取存储的数据块。
在一些实施例中,针对数据存储列表中的每条记录,提取出对应的副链信息和副链交易标识。查询与所提取的副链信息对应的全部节点,向查询到的全部节点发送数据查询请求,以便从与所提取的副链信息对应的各节点获取与副链交易标识对应的交易信息。根据交易信息的内容对所获取的交易信息进行统计,将出现次数最多的交易信息作为当前交易信息。从当前交易信息中提取出对应的数据块。
在一些实施例中,某个节点在接收到数据查询请求后,从数据查询请求中提取出副链信息和副链交易标识,判断当前节点是否加入到与提取出的副链信息对应的链中。若当前节点加入到与提取出的副链信息对应的链中,该节点,根据副链交易标识获取对应的交易信息,将所获取的交易信息发送给数据查询请求发送方。
在步骤305,将所获得的数据块按序进行组合,以得到所存储的数据。
图4为本公开另一个实施例的节点注册方法的示例性流程图。
在步骤401,在预定时刻检查当前节点是否已完成注册。
在步骤402,若当前节点未完成注册,向中心节点发送注册请求。
在步骤403,中心节点记录节点A信息,并为节点A分配全网唯一的用户密钥。
在步骤404,节点A向中心节点发送节点信息查询请求。
在步骤405,中心节点将当前接入区块链的全部节点信息发送给节点A。
可选地,节点信息为相应节点的IP地址信息。
在步骤406,节点A向当前接入区块链的全部节点发送链信息查询请求,以便获取各节点已加入的链信息。
为了简明起见,在图4中,仅给出节点C的处理步骤以作为示例。
在步骤407,节点C获取自身已加入的链信息。
在步骤408,节点C将获取的链信息发送给节点A。
在步骤409,节点A将接收到链信息进行汇总,以得到链列表。
例如,链列表的结构如表1所示。
表1
图5为本公开另一个实施例的用于存储数据的方法的示例性流程图。
在步骤501,节点A在存储数据时,利用用户公钥对该数据进行加密,以得到经加密的交易数据。
在步骤502,节点A随机选择当前已加入的一条链作为存储主链。
在步骤503,节点A将交易数据进行随机拆分,以得到多份数据块。
在步骤504,节点A针对每一份数据块,从链列表中随机选择一条链作为存储副链,并获取与存储副链对应的全部节点信息。
在步骤505,节点A生成唯一标识数据块的副链交易标识,利用当前处理的数据块及对应的副链交易标识组装交易信息,并用用户私钥对交易信息进行加密。
在步骤506,节点A将加密码后的交易信息发送给与存储副链对应的全部节点。
为了简明起见,在图5所示实施例中,以节点A将交易信息发送给节点B作为示例。
在步骤507,节点B在接收到交易信息后,对交易信息进行签名验证。
在步骤508,节点B在签名验证成功后,进一步判断交易信息中的副链交易标识是否重复出现。
在步骤509,若副链交易标识未重复出现,则节点B向节点A发送成功应答信息。
在步骤510,节点A在接收到成功应答信息后,记录当前数据块的序号、副链交易标识及对应链的信息。
在步骤511,节点B基于POW(Proof of Work,工作量证明)进行写入处理。即节点B利用结块规则,根据交易信息生成区块,将生成的区块写入本地账本。
在步骤512,节点B通知与存储副链对应的其它节点进行本地账本同步。
为了简明起见,在图5所示实施例中,以节点B将区块信息发送给中心节点作为示例。
在步骤513,中心节点判断交易信息中的副链交易标识是否重复出现。
在步骤514,若副链交易标识未重复出现,中心节点利用结块规则,将区块写入本地账本。
重复执行步骤504-514,以便处理全部数据块。
在步骤515,在各数据块处理完成后,节点A生成相应的关联信息。关联信息包括生成的主链交易标识、主链信息、以及由与各数据块对应的序号、副链交易标识和副链信息构成的数据存储列表。
例如,关联关系如表2所示。
表2
在步骤516,节点A用用户私钥对关联信息进行加密。
在步骤517,节点A将经加密的关联信息发送给与存储主链对应的全部节点。
为了简明起见,在图5所示实施例中,以节点A将关联信息发送给节点C作为示例。
在步骤518,节点C在接收到关联信息后,对关联信息进行签名验证。
在步骤519,节点C在签名验证成功后,进一步判断关联信息中的主链交易标识是否重复出现。
在步骤520,若主链交易标识未重复出现,则节点C向节点A发送成功应答信息。
在步骤521,节点C基于POW(Proof of Work,工作量证明)进行写入处理。即节点C利用结块规则,根据关联信息生成区块,将生成的区块写入本地账本。
在步骤522,节点C通知当前接入区块链的其它节点进行本地账本同步。
为了简明起见,在图5所示实施例中,以节点C将区块信息发送给节点A作为示例。
在步骤523,节点A判断关联信息中的主链交易标识是否重复出现。
在步骤524,若主链交易标识未重复出现,节点A利用结块规则,将区块写入本地账本。
在步骤525,节点A在结块成功后,将主链交易标识和主链的链名信息存储在本地,以便用户利用主链交易标识和相应的链名信息获取相应的数据。
图6为本公开另一个实施例的数据获取方法的示例性流程图。
在步骤601,节点A在接收到用户输入的主链交易标识和链名信息后,判断自身是否加入到与链名信息对应的链中。
在步骤602,在当前节点加入到与链名信息对应的链中的情况下,节点A根据主链交易标识获取对应的关联信息。
在步骤603,对关联信息进行解析,以获得对应的数据存储列表。
在步骤604,根据数据存储列表中的每条记录,提取出对应的副链信息和副链交易标识,并查询与所提取的副链信息对应的全部节点。
在步骤605,向查询到的全部节点发送数据查询请求。
为了简明起见,在图6所示实施例中,以节点A将数据查询请求发送给节点B作为示例。
在步骤606,节点B在接收到数据查询请求后,从数据查询请求中提取出副链信息和副链交易标识,判断自身是否加入到与提取出的副链信息对应的链中。
在步骤607,若节点B加入到与提取出的副链信息对应的链中,则节点B根据副链交易标识获取对应的交易信息。
在步骤608,节点B将所获取的交易信息发送给数据查询请求发送方。
在步骤609,节点A根据交易信息的内容对所获取的交易信息进行统计,将出现次数最多的交易信息作为当前交易信息。从当前交易信息中提取出对应的数据块。
通常情况下,节点A接收到的交易信息应当是相同的。若某个节点的账本被恶意篡改,则该节点提供的交易信息会与其它节点提供的交易信息存在不同。在这种情况下,节点A会对接收到的交易信息进行统计。若在接收到100条交易信息,第一版本的交易信息有95条,其它版本的交易信息共有5条。在这种情况下,将第一版本的交易信息作为未被篡改的交易信息。
在步骤610,节点A将所获得的数据块按序进行组合,以得到所存储的交易数据。
在步骤611,节点A利用用户私钥对交易数据进行解密,以得到所存储的数据。
图7为本公开一个实施例的用于存储数据的节点的示例性框图。如图7所示,该节点包括主链选择模块71、数据拆分模块72、副链选择模块73、数据块存储管理模块74、关联信息生成模块75和关联信息存储管理模块76。
主链选择模块71被配置为随机选择当前节点已加入的一条链作为存储主链。
数据拆分模块72被配置为将需要存储的数据进行随机拆分,以得到多份数据块。
副链选择模块73被配置为针对每一份数据块,从链列表中随机选择一条链作为存储副链,并获取与存储副链对应的全部节点信息。
数据块存储管理模块74被配置为将各数据块发送给与相应存储副链对应的全部节点进行存储。
在一些实施例中,数据块存储管理模块74还被配置为将存储副链的副链交易标识发送给与存储副链对应的全部节点。
关联信息生成模块75被配置为根据数据块与相应存储副链的对应关系生成关联信息。
关联信息存储管理模块76被配置为将关联信息发送给与存储主链对应的全部节点进行存储。
在本公开上述实施例提供的用于存储数据的节点中,通过将数据进行拆分,每份数据块存储至不同的链。由于是分散存储,即使有部分链数据被查获,也无法还原所有数据。由此有效增加了数据的安全性,同时降低了单链过长比较难维护的问题。此外,由于将数据块随机分配至不同的链,从而可保证每条链的长度相仿,确保链维护的高效性。
图8为本公开另一个实施例的用于存储数据的节点的示例性框图。图8与图7的不同之处在于,在图8所示实施例中,该节点还包括信息存储模块77。
信息存储模块77被配置为在关联信息存储管理模块76将关联信息发送给与所述存储主链对应的全部节点进行存储后,将主链交易标识和主链的链名信息存储在本地。以便用户利用主链交易ID和链名信息进行信息查询。
在一些实施例中,如图8所示,该节点还包括账本管理模块78。账本管理模块78被配置为在接收到数据块后,判断相应的副链交易标识是否重复出现,在副链交易标识未重复出现的情况下,根据数据块生成区块,将生成的区块写入本地账本,通知与存储副链对应的其它节点进行本地账本同步。
在一些实施例中,账本管理模块78还被配置为在接收到关联信息后,判断关联信息中的主链交易标识是否重复出现,在主链交易标识未重复出现的情况下,根据关联信息生成区块,将生成的区块写入本地账本,通知当前接入区块链的其它节点进行本地账本同步。
在一些实施例中,如图8所示,该节点还包括注册管理模块79。注册管理模块79被配置为在预定时刻检查当前节点是否已完成注册,在当前节点未完成注册的情况下,向中心节点发送注册请求,以便获得中心节点下发的用户密钥;在接收到中心节点下发的用户密钥后,向中心节点发送节点信息查询请求,以便获取当前接入区块链的全部节点信息;在接收到中心节点下发的全部节点信息后,向当前接入区块链的全部节点发送链信息查询请求,以便获取各节点已加入的链信息;将接收到链信息进行汇总,以得到链列表。
在一些实施例中,如图8所示,该节点还包括链信息获取模块710。链信息获取模块710被配置为在接收到链信息查询请求后,将当前节点已加入的链信息发送给发送链信息查询请求的节点。
在一些实施例中,如图8所示,该节点还包括数据获取模块711。数据获取模块711被配置为在接收到用户输入的主链交易标识和链名信息后,判断当前节点是否加入到与链名信息对应的链中,在当前节点加入到与链名信息对应的链中的情况下,根据主链交易标识获取对应的关联信息,对关联信息进行解析,以获得对应的数据存储列表,根据数据存储列表中的每条记录,从对应副链中获取存储的数据块,将所获得的数据块按序进行组合,以得到所存储的数据。
在一些实施例中,数据获取模块711还被配置为针对数据存储列表中的每条记录,提取出对应的副链信息和副链交易标识,查询与所提取的副链信息对应的全部节点,向查询到的全部节点发送数据查询请求,以便从与所提取的副链信息对应的各节点获取与副链交易标识对应的交易信息,根据交易信息的内容对所获取的交易信息进行统计,将出现次数最多的交易信息作为当前交易信息,从当前交易信息中提取出对应的数据块。
在一些实施例中,如图8所示,该节点还包括账本提供模块712。账本提供模块712被配置为在接收到数据查询请求后,从数据查询请求中提取出副链信息和副链交易标识,判断当前节点是否加入到与提取出的副链信息对应的链中,在当前节点加入到与提取出的副链信息对应的链中的情况下,根据副链交易标识获取对应的交易信息,将所获取的交易信息发送给数据查询请求。
图9为本公开又一个实施例的用于存储数据的节点的示例性框图。如图9所示,该节点包括存储器91和处理器92。
存储器91用于存储指令,处理器92耦合到存储器91,处理器92被配置为基于存储器存储的指令执行实现如图1至图6中任一实施例涉及的方法。
如图9所示,该节点还包括通信接口93,用于与其它设备进行信息交互。同时,该装置还包括总线94,处理器92、通信接口93、以及存储器91通过总线94完成相互间的通信。
存储器91可以包含高速RAM存储器,也可还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。存储器91也可以是存储器阵列。存储器91还可能被分块,并且块可按一定的规则组合成虚拟卷。
此外,处理器92可以是一个中央处理器CPU,或者可以是专用集成电路ASIC,或者是被配置成实施本公开实施例的一个或多个集成电路。
本公开同时还涉及一种计算机可读存储介质,其中计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如图1至图6中任一实施例涉及的方法。
图10为本公开一个实施例的区块链系统的示例性框图。如图10所示,区块链系统包括多个成员节点1001以及中心节点1002。成员节点1001为图7-图9中任一实施例涉及的节点。
中心节点1002被配置为在接收到注册请求后,为发送注册请求的成员节点下发用户密钥;在接收到节点信息查询请求后,为发送节点信息查询请求的成员节点下发当前接入区块链的全部节点信息;在接收到链信息查询请求后,为发送链信息查询请求的成员节点下发当前接入区块链的各节点已加入的链信息。
可选地,在上面所描述的功能单元模块可以实现为用于执行本公开所描述功能的通用处理器、可编程逻辑控制器(Programmable LogicController,简称:PLC)、数字信号处理器(Digital Signal Processor,简称:DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称:ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意适当组合。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。
Claims (23)
1.一种用于存储数据的方法,包括:
随机选择当前节点已加入的一条链作为存储主链;
将需要存储的数据进行随机拆分,以得到多份数据块;
针对每一份数据块,从链列表中随机选择一条链作为存储副链,并获取与所述存储副链对应的全部节点信息;
将所述数据块发送给与相应存储副链对应的全部节点进行存储;根据所述数据块与相应存储副链的对应关系生成关联信息;
将所述关联信息发送给与所述存储主链对应的全部节点进行存储。
2.根据权利要求1所述的用于存储数据的方法,还包括:
在将关联信息发送给与所述存储主链对应的全部节点进行存储后,将相应的主链交易标识和主链链名信息存储在本地。
3.根据权利要求1所述的用于存储数据的方法,还包括:
将所述存储副链的副链交易标识发送给与所述存储副链对应的全部节点。
4.根据权利要求3所述的用于存储数据的方法,还包括:
在接收到所述数据块后,判断相应的副链交易标识是否重复出现;
在副链交易标识未重复出现的情况下,根据所述数据块生成区块;
将生成的区块写入本地账本;
通知与所述存储副链对应的其它节点进行本地账本同步。
5.根据权利要求4所述的用于存储数据的方法,还包括:
在接收到所述关联信息后,判断所述关联信息中的主链交易标识是否重复出现;
在主链交易标识未重复出现的情况下,根据所述关联信息生成区块;
将生成的区块写入本地账本;
通知当前接入区块链的其它节点进行本地账本同步。
6.根据权利要求1所述的用于存储数据的方法,还包括:
在预定时刻检查当前节点是否已完成注册;
在当前节点未完成注册的情况下,向中心节点发送注册请求,以便获得中心节点下发的用户密钥;
在接收到中心节点下发的用户密钥后,向中心节点发送节点信息查询请求,以便获取当前接入区块链的全部节点信息;
在接收到中心节点下发的所述全部节点信息后,向当前接入区块链的全部节点发送链信息查询请求,以便获取各节点已加入的链信息;
将接收到链信息进行汇总,以得到链列表。
7.根据权利要求6所述的用于存储数据的方法,还包括:
在接收到所述链信息查询请求后,将当前节点已加入的链信息发送给发送链信息查询请求的节点。
8.根据权利要求1所述的用于存储数据的方法,还包括:
在接收到用户输入的主链交易标识和链名信息后,判断当前节点是否加入到与所述链名信息对应的链中;
在当前节点加入到与所述链名信息对应的链中的情况下,根据主链交易标识获取对应的关联信息;
对关联信息进行解析,以获得对应的数据存储列表;
根据数据存储列表中的每条记录,从对应副链中获取存储的数据块;
将所获得的数据块按序进行组合,以得到所存储的数据。
9.根据权利要求8所述的用于存储数据的方法,根据数据存储列表中的每条记录,从对应副链中获取存储的数据块包括:
针对数据存储列表中的每条记录,提取出对应的副链信息和副链交易标识;
查询与所提取的副链信息对应的全部节点;
向查询到的全部节点发送数据查询请求,以便从与所提取的副链信息对应的各节点获取与副链交易标识对应的交易信息;
根据交易信息的内容对所获取的交易信息进行统计,将出现次数最多的交易信息作为当前交易信息;
从所述当前交易信息中提取出对应的数据块。
10.根据权利要求9所述的用于存储数据的方法,还包括:
在接收到所述数据查询请求后,从所述数据查询请求中提取出副链信息和副链交易标识;
判断当前节点是否加入到与提取出的副链信息对应的链中;
在当前节点加入到与提取出的副链信息对应的链中的情况下,根据副链交易标识获取对应的交易信息;
将所获取的交易信息发送给所述数据查询请求的发送节点。
11.一种用于存储数据的节点,包括:
主链选择模块,被配置为随机选择当前节点已加入的一条链作为存储主链;
数据拆分模块,被配置为将需要存储的数据进行随机拆分,以得到多份数据块;
副链选择模块,被配置为针对每一份数据块,从链列表中随机选择一条链作为存储副链,并获取与所述存储副链对应的全部节点信息;
数据块存储管理模块,被配置为将所述数据块发送给与相应存储副链对应的全部节点进行存储;
关联信息生成模块,被配置为根据所述数据块与相应存储副链的对应关系生成关联信息;
关联信息存储管理模块,被配置为将所述关联信息发送给与所述存储主链对应的全部节点进行存储。
12.根据权利要求11所述的用于存储数据的节点,还包括:
信息存储模块,被配置为在关联信息存储管理模块将关联信息发送给与所述存储主链对应的全部节点进行存储后,将所述主链交易标识和所述主链的链名信息存储在本地。
13.根据权利要求11所述的用于存储数据的节点,其中,
数据块存储管理模块还被配置为将所述存储副链的副链交易标识发送给与所述存储副链对应的全部节点。
14.根据权利要求13所述的用于存储数据的节点,还包括:
账本管理模块,被配置为在接收到所述数据块后,判断相应的副链交易标识是否重复出现,在副链交易标识未重复出现的情况下,根据所述数据块生成区块,将生成的区块写入本地账本,通知与所述存储副链对应的其它节点进行本地账本同步。
15.根据权利要求14所述的用于存储数据的节点,其中,
账本管理模块还被配置为在接收到所述关联信息后,判断所述关联信息中的主链交易标识是否重复出现,在主链交易标识未重复出现的情况下,根据所述关联信息生成区块,将生成的区块写入本地账本,通知当前接入区块链的其它节点进行本地账本同步。
16.根据权利要求11所述的用于存储数据的节点,还包括:
注册管理模块,被配置为在预定时刻检查当前节点是否已完成注册,在当前节点未完成注册的情况下,向中心节点发送注册请求,以便获得中心节点下发的用户密钥;在接收到中心节点下发的用户密钥后,向中心节点发送节点信息查询请求,以便获取当前接入区块链的全部节点信息;在接收到中心节点下发的所述全部节点信息后,向当前接入区块链的全部节点发送链信息查询请求,以便获取各节点已加入的链信息;将接收到链信息进行汇总,以得到链列表。
17.根据权利要求16所述的用于存储数据的节点,还包括:
链信息获取模块,被配置为在接收到所述链信息查询请求后,将当前节点已加入的链信息发送给发送链信息查询请求的节点。
18.根据权利要求11所述的用于存储数据的节点,还包括:
数据获取模块,被配置为在接收到用户输入的主链交易标识和链名信息后,判断当前节点是否加入到与所述链名信息对应的链中,在当前节点加入到与所述链名信息对应的链中的情况下,根据主链交易标识获取对应的关联信息,对关联信息进行解析,以获得对应的数据存储列表,根据数据存储列表中的每条记录,从对应副链中获取存储的数据块,将所获得的数据块按序进行组合,以得到所存储的数据。
19.根据权利要求18所述的用于存储数据的节点,其中,
数据获取模块还被配置为针对数据存储列表中的每条记录,提取出对应的副链信息和副链交易标识,查询与所提取的副链信息对应的全部节点,向查询到的全部节点发送数据查询请求,以便从与所提取的副链信息对应的各节点获取与副链交易标识对应的交易信息,根据交易信息的内容对所获取的交易信息进行统计,将出现次数最多的交易信息作为当前交易信息,从所述当前交易信息中提取出对应的数据块。
20.根据权利要求19所述的用于存储数据的节点,还包括:
账本提供模块,被配置为在接收到所述数据查询请求后,从所述数据查询请求中提取出副链信息和副链交易标识,判断当前节点是否加入到与提取出的副链信息对应的链中,在当前节点加入到与提取出的副链信息对应的链中的情况下,根据副链交易标识获取对应的交易信息,将所获取的交易信息发送给所述数据查询请求的发送节点。
21.一种用于存储数据的节点,包括:
存储器,被配置为存储指令;
处理器,耦合到存储器,处理器被配置为基于存储器存储的指令执行实现如权利要求1-10中任一项的方法。
22.一种区块链系统,包括如权利要求11-21中任一项所述的节点,以及
中心节点,被配置为在接收到注册请求后,为发送所述注册请求的节点下发用户密钥;在接收到节点信息查询请求后,为发送所述节点信息查询请求的节点下发当前接入区块链的全部节点信息;在接收到链信息查询请求后,为发送所述链信息查询请求的节点下发当前接入区块链的各节点已加入的链信息。
23.一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如权利要求1-10中任一项的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810499689.5A CN108764902B (zh) | 2018-05-23 | 2018-05-23 | 用于存储数据的方法、节点和区块链系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810499689.5A CN108764902B (zh) | 2018-05-23 | 2018-05-23 | 用于存储数据的方法、节点和区块链系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108764902A true CN108764902A (zh) | 2018-11-06 |
CN108764902B CN108764902B (zh) | 2020-12-22 |
Family
ID=64005007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810499689.5A Active CN108764902B (zh) | 2018-05-23 | 2018-05-23 | 用于存储数据的方法、节点和区块链系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108764902B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858285A (zh) * | 2018-12-07 | 2019-06-07 | 上海异势信息科技有限公司 | 区块链数据的处理方法、装置、设备和介质 |
CN110287196A (zh) * | 2019-06-29 | 2019-09-27 | 杭州复杂美科技有限公司 | 区块存储方法、平行链交易获取方法、设备和存储介质 |
CN110730185A (zh) * | 2019-10-22 | 2020-01-24 | 张瑞 | 一种基于分布式计算的区块链大数据处理方法及系统 |
CN112506914A (zh) * | 2019-09-16 | 2021-03-16 | 西安华域网络文化发展有限公司 | 基于双链结构的区块链数据管理方法、系统、装置及介质 |
CN116561231A (zh) * | 2023-07-10 | 2023-08-08 | 北京银联金卡科技有限公司 | 一种基于分链技术的联盟链数据处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534317A (zh) * | 2016-11-17 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种基于区块链技术的灾备云存储系统构建方法 |
CN107273410A (zh) * | 2017-05-03 | 2017-10-20 | 上海点融信息科技有限责任公司 | 基于区块链的分布式存储 |
CN107360156A (zh) * | 2017-07-10 | 2017-11-17 | 广东工业大学 | 一种大数据环境下基于区块链的p2p网络云端存储方法 |
WO2018067271A1 (en) * | 2016-10-06 | 2018-04-12 | Mastercard International Incorporated | Method and system for identity and credential protection and verification via blockchain |
CN108062202A (zh) * | 2017-12-15 | 2018-05-22 | 中链科技有限公司 | 一种文件分块存储方法及系统 |
-
2018
- 2018-05-23 CN CN201810499689.5A patent/CN108764902B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018067271A1 (en) * | 2016-10-06 | 2018-04-12 | Mastercard International Incorporated | Method and system for identity and credential protection and verification via blockchain |
CN106534317A (zh) * | 2016-11-17 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种基于区块链技术的灾备云存储系统构建方法 |
CN107273410A (zh) * | 2017-05-03 | 2017-10-20 | 上海点融信息科技有限责任公司 | 基于区块链的分布式存储 |
CN107360156A (zh) * | 2017-07-10 | 2017-11-17 | 广东工业大学 | 一种大数据环境下基于区块链的p2p网络云端存储方法 |
CN108062202A (zh) * | 2017-12-15 | 2018-05-22 | 中链科技有限公司 | 一种文件分块存储方法及系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858285A (zh) * | 2018-12-07 | 2019-06-07 | 上海异势信息科技有限公司 | 区块链数据的处理方法、装置、设备和介质 |
CN109858285B (zh) * | 2018-12-07 | 2023-03-14 | 上海异势信息科技有限公司 | 区块链数据的处理方法、装置、设备和介质 |
CN110287196A (zh) * | 2019-06-29 | 2019-09-27 | 杭州复杂美科技有限公司 | 区块存储方法、平行链交易获取方法、设备和存储介质 |
CN112506914A (zh) * | 2019-09-16 | 2021-03-16 | 西安华域网络文化发展有限公司 | 基于双链结构的区块链数据管理方法、系统、装置及介质 |
CN112506914B (zh) * | 2019-09-16 | 2024-02-27 | 西安华域网络文化发展有限公司 | 基于双链结构的区块链数据管理方法、系统、装置及介质 |
CN110730185A (zh) * | 2019-10-22 | 2020-01-24 | 张瑞 | 一种基于分布式计算的区块链大数据处理方法及系统 |
CN116561231A (zh) * | 2023-07-10 | 2023-08-08 | 北京银联金卡科技有限公司 | 一种基于分链技术的联盟链数据处理方法 |
CN116561231B (zh) * | 2023-07-10 | 2023-09-22 | 北京银联金卡科技有限公司 | 一种基于分链技术的联盟链数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108764902B (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108764902A (zh) | 用于存储数据的方法、节点和区块链系统 | |
JP7266638B2 (ja) | 統合ブロックチェーンに基づくデータ転送制御方法及びシステム | |
CN107332826B (zh) | 区块链代理节点的通信方法及装置 | |
JP6995762B2 (ja) | ブロックチェーンからのデータのセキュアな抽出のための暗号方法及びシステム | |
CN107622096A (zh) | 基于区块链系统的异步多方数据交互方法和存储介质 | |
CN106789875B (zh) | 一种区块链服务装置、区块链服务系统及其通信方法 | |
CN109154885A (zh) | 区块链平台上的业务处理执行 | |
CN108876365A (zh) | 一种生成区块发布机制的智能合约 | |
CN108737374A (zh) | 一种区块链中数据存储的隐私保护方法 | |
CN106228446A (zh) | 基于私有区块链的资产交易平台系统及方法 | |
CN107239953A (zh) | 基于区块链的快速数据存储方法及系统 | |
CN110096551A (zh) | 基于区块链的信用数据存储方法、装置、设备及介质 | |
CN104780187B (zh) | 链接处理方法、装置、服务器、客户端及系统 | |
CN107481140A (zh) | 凭证标识码处理方法及系统、服务器及存储介质 | |
CN111125781B (zh) | 一种文件签名方法、装置和文件签名验证方法、装置 | |
CN107920110A (zh) | 一种数据共享的方法及装置 | |
CN115208665B (zh) | 一种基于区块链的种质资源数据安全共享方法及系统 | |
CN108256354A (zh) | 一种基于试验数据的存储方法及存储介质 | |
CN104618410B (zh) | 资源推送方法和装置 | |
CN110490640A (zh) | 用于对象分发处理的方法、装置及系统 | |
CN110009339A (zh) | 基于区块链的数据处理方法和装置 | |
CN107634989A (zh) | 一种云钱包构建方法及服务器 | |
CN109784918A (zh) | 基于区块链的信息监督方法、装置、设备和存储介质 | |
CN109493126A (zh) | 基于区块链的积分数据处理方法及装置 | |
CN110324365A (zh) | 无密钥前端集群系统、应用方法、存储介质、电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |