CN109756566B - 基于区块链的数据存储方法、相关设备及存储介质 - Google Patents
基于区块链的数据存储方法、相关设备及存储介质 Download PDFInfo
- Publication number
- CN109756566B CN109756566B CN201811616617.0A CN201811616617A CN109756566B CN 109756566 B CN109756566 B CN 109756566B CN 201811616617 A CN201811616617 A CN 201811616617A CN 109756566 B CN109756566 B CN 109756566B
- Authority
- CN
- China
- Prior art keywords
- block
- token
- target node
- seed
- node
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000013500 data storage Methods 0.000 title claims abstract description 27
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种基于区块链的数据存储方法、相关设备及存储介质,其中方法包括:目标节点获取所述区块链系统中广播的新生成的第一区块的序号,其中,所述目标节点为所述多个节点中的任一个,所述第一区块包括区块数据和区块头,所述区块头包括所述第一区块的序号;所述目标节点获取第一令牌种子,其中,所述第一令牌种子是根据所述区块链系统的节点数量生成的;所述目标节点基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头,可有效缓解区块链系统中目标节点的数据存储压力。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于区块链的数据存储方法、相关设备及存储介质。
背景技术
当前的区块链存储技术大都采用直接在区块链上存储所有的区块数据,即区块链的所有节点存储有相同的区块数据,这种方法一般用于公链存储,但是,随着区块链运行时间的加长,区块链中的数据量会越来越大,特别是在大数据环境下,将会导致每个节点要求存储的数据量也越来越大,可见,采用上述常用的区块存储技术会给区块链中各节点带来较大的数据存储压力。
发明内容
本发明实施例提供了一种基于区块链的数据存储方法、相关设备及存储介质,可有效缓解节点的数据存储压力。
第一方面,本发明实施例提供了一种数据存储方法,应用于区块链系统,所述区块链系统包括多个节点,其中,该方法包括:
目标节点获取所述区块链系统中广播的新生成的第一区块的序号,其中,所述目标节点为所述多个节点中的任一个,所述第一区块包括区块数据和区块头,所述区块头包括所述第一区块的序号;
所述目标节点获取第一令牌种子,其中,所述第一令牌种子是根据所述区块链系统的节点数量生成的;
所述目标节点基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头。
在一个实施例中,所述目标节点基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头,包括:
所述目标节点根据所述第一区块的序号和所述第一令牌种子,确定需存储所述第一区块对应节点的目标令牌值;
在确定所述目标节点的第一令牌值和所述目标令牌值相同的情况下,所述目标节点确定存储所述第一区块;或者,
在确定所述目标节点的第一令牌值和所述目标令牌值不同的情况下,所述目标节点确定存储所述第一区块的区块头。
在一个实施例中,所述目标节点根据所述第一区块的序号和所述第一令牌种子,确定需存储所述第一区块对应节点的目标令牌值,包括:
所述目标节点对所述第一令牌种子与所述第一区块的序号进行取模,得到取模结果;
所述目标节点将所述取模结果确定为需存储所述第一区块对应节点的目标令牌值。
在一个实施例中,所述方法还包括:
在令牌种子更新时间到达时,所述目标节点获取第二令牌种子,所述第二令牌种子是在所述令牌种子更新时间到达时,基于所述区块链系统当前的节点数量生成的;
所述目标节点基于所述第二令牌种子,对所述第一令牌值进行更新得到所述目标节点的第二令牌值;
所述目标节点基于所述目标节点的第二令牌值和所述第二令牌种子,更新所述目标节点存储的区块。
在一个实施例中,所述目标节点基于所述目标节点的第二令牌值和所述第二令牌种子,更新所述目标节点存储的区块,包括:
所述目标节点根据所述第二令牌值和所述区块链系统中的各区块的序号,确定需要存储的区块和需要删除的区块;
所述目标节点对所述需要存储的区块进行存储,并对所述需要删除的区块进行记录。
在一个实施例中,所述目标节点对所述需要存储的区块进行存储,包括:
所述目标节点向第一节点发送区块获取请求,所述区块获取请求包括所述目标节点需要存储但未存储区块的序号,所述第一节点为所述区块链系统中令牌值与所述第二令牌值不同的节点集合中的任一个;
所述目标节点接收所述第一节点基于所述区块获取请求发送的所述目标节点需要存储但未存储区块;
所述目标节点存储所述需要存储但未存储区块。
在一个实施例中,所述方法还包括:
所述目标节点将在上一个令牌周期内记录的需要删除的区块的区块数据进行删除,所述令牌周期为相邻两次生成令牌种子之间的时间段。
在一个实施例中,所述目标节点基于所述第二令牌种子,对所述第一令牌值进行更新得到所述目标节点的第二令牌值,包括:
在所述第一令牌种子大于所述第二令牌种子时,所述目标节点对所述第一令牌值与所述第二令牌种子进行取模,将得到的取模结果确定为所述目标节点的第二令牌值;
在所述第一令牌种子小于所述第二令牌种子时,所述目标节点对所述第一令牌种子,所述第二令牌种子和所述第一令牌值进行计算,将得到的计算结果确定为所述目标节点的第二令牌值。
在一个实施例中,所述区块链系统包括的创世区块的序号为0,且所述区块链系统中的任一节点存储有所述创世区块。
在一个实施例中,令牌种子的取值满足2n,其中,n为正整数,所述令牌种子包括所述第一令牌种子和所述第二令牌种子。
第二方面,本发明实施例提供了一种数据存储装置,应用于区块链系统,所述区块链系统包括多个节点,其中,该装置包括:
获取单元,用于获取所述区块链系统中广播的新生成的第一区块的序号,其中,所述目标节点为所述多个节点中的任一个,所述第一区块包括区块数据和区块头,所述区块头包括所述第一区块的序号;
所述获取单元,还用于获取第一令牌种子,其中,所述第一令牌种子是根据所述区块链系统的节点数量生成的;
确定单元,用于基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头。
在一个实施例中,所述确定单元具体用于:
根据所述第一区块的序号和所述第一令牌种子,确定需存储所述第一区块对应节点的目标令牌值;
在确定所述目标节点的第一令牌值和所述目标令牌值相同的情况下,确定存储所述第一区块;或者,
在确定所述目标节点的第一令牌值和所述目标令牌值不同的情况下,确定存储所述第一区块的区块头。
在一个实施例中,所述确定单元具体用于:
对所述第一令牌种子与所述第一区块的序号进行取模,得到取模结果;
将所述取模结果确定为需存储所述第一区块对应节点的目标令牌值。
在一个实施例中,所述装置还包括:更新单元。
所述获取单元,还用于在令牌种子更新时间到达时,获取第二令牌种子,所述第二令牌种子是在所述令牌种子更新时间到达时,基于所述区块链系统当前的节点数量生成的;
更新单元,用于基于所述第二令牌种子,对所述第一令牌值进行更新得到所述目标节点的第二令牌值;
所述更新单元,还用于基于所述目标节点的第二令牌值和所述第二令牌种子,更新所述目标节点存储的区块。
在一个实施例中,所述更新单元具体用于:
所述目标节点根据所述第二令牌值和所述区块链系统中的各区块的序号,确定需要存储的区块和需要删除的区块;
所述目标节点对所述需要存储的区块进行存储,并对所述需要删除的区块进行记录。
在一个实施例中,所述更新单元具体用于:
所述目标节点向第一节点发送区块获取请求,所述区块获取请求包括所述目标节点需要存储但未存储区块的序号,所述第一节点为所述区块链系统中令牌值与所述第二令牌值不同的节点集合中的任一个;
所述目标节点接收所述第一节点基于所述区块获取请求发送的所述目标节点需要存储但未存储区块;
所述目标节点存储所述需要存储但未存储区块。
在一个实施例中,所述装置还包括:删除单元。
删除单元,用于将在上一个令牌周期内记录的需要删除的区块的区块数据进行删除,所述令牌周期为相邻两次生成令牌种子之间的时间段。
在一个实施例中,所述更新单元具体用于:
在所述第一令牌种子大于所述第二令牌种子时,对所述第一令牌值与所述第二令牌种子进行取模,将得到的取模结果确定为所述目标节点的第二令牌值;
在所述第一令牌种子小于所述第二令牌种子时,对所述第一令牌种子,所述第二令牌种子和所述第一令牌值进行计算,将得到的计算结果确定为所述目标节点的第二令牌值。
第三方面,本发明实施例提供了一种服务器,该服务器包括:存储器、处理器以及网络接口,所述存储器中存储有计算机程序,所述网络接口用于受所述处理器的控制收发消息,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储包括计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。
在本发明实施例中,目标节点可获取区块链系统中广播的新生成的第一区块的序号,并可获取基于该区块系统包括的节点的数量生成的第一令牌种子,从而可基于该目标节点的第一令牌值,该第一区块的序号以及该第一令牌种子,确定该目标节点存储该第一区块或者该第一区块的区块头,可有效缓解目标节点的数据存储压力,从而可降低区块链系统中网络流量过大的问题,还可同时防止区块链系统中的数据被恶意篡改。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据存储方法的示意流程图;
图2是本发明另一实施例提供的一种数据存储方法的示意流程图;
图3是本发明实施例提供的一种数据存储装置的示意性框图;
图4是本发明实施例提供的一种服务器的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前基于区块链的数据存储方法,还可在公链的基础上部署一套另外的存储系统,从而可通过存储区块的摘要数据,如存储区块的区块头数据,来缓解各节点的数据存储压力。但由于这种方法需要部署新的存储系统进行数据存储,会加大成本投入,而且这种存储方法也不使用于公链存储,因此并不能适用于所有的区块链存储系统,基于此,本申请提出了一种新型的区块链数据的存储方法,该方法使得区块链系统中的每一个节点只存储部分区块数据,而不用存储该区块链系统中的所有区块数据,从而可有效减轻各节点的数据存储压力,其次,为了防止区块数据被恶意篡改,各节点还可存储其未存储的区块数据的区块头。
采用上述的基于区块链的数据存储方法,即保持了公链上存储的简单部署方案,也保持了区块链的防篡改可追溯性,还可解决区块链节点的存储瓶颈,以及可降低节点间的网络流量。
请参见图1,是本发明实施例提出的一种数据存储方法的示意流程图,该方法应用于区块链系统,该区块链系统包括多个节点,如图1所示,该方法可包括:
S101,目标节点获取该区块链系统中广播的新生成的第一区块的序号。
在一个实施例中,该目标节点为该区块链系统中多个节点中的任一个,该第一区块包括区块数据和区块头,该区块头包括该第一区块的序号。在具体实现中,区块链在生成每一个区块时都会产生一个和该区块对应的序号,并将产生的序号对应存储在该区块的区块头中,区块链中的区块序号以创世区块开始递增,其中,该创世区块的序号为0,且区块链中的各区块序号均不相同,因此,任一节点在存储某一区块的序号后,可基于该区块序号确定出和该区块序号对应的区块头,从而可根据该区块头确定出对应的区块,并可通过比较区块头来确定区块的区块数据是否发生变化。其中,区块头中还包括区块(如该第一区块)的摘要数据,使得节点(如上述目标节点)即使只存储区块的区块头,也可防止该序号对应的区块数据被篡改。
当区块链系统中的任一节点新生成第一区块时,生成该第一区块的节点可向该区块链系统进行广播,以告知该区块链系统中的其他节点,该区块链系统新生成了第一区块,目标节点接收到广播后,获取到该区块链系统中广播的新生成的第一区块的序号时,从而可基于该目标节点获取到的第一区块的序号,在步骤S102中确定的第一令牌种子,以及该目标节点的第一令牌值,确定是否在该目标节点中存储该第一区块。
S102,该目标节点获取第一令牌种子。
在一个实施例中,第一令牌种子(即第一token种子)是根据该区块链系统中包括的节点数量生成的,该第一令牌种子也即是该区块链系统中各节点的令牌值的最大值,在区块链根据其包括的节点的总数生成第一令牌种子之后,各节点可基于该第一令牌种子可生成该节点对应的令牌值,如该区块链系统中的目标节点可根据该第一令牌种子可生成该目标节点的第一令牌值,即该目标节点的第一token值。
需要说明的是,令牌种子由区块链系统生成,具体由区块链系统中的某一节点生成,例如可以是生成新区块(如上述新生成的第一区块)的节点生成的。在令牌种子更新时间到达时,生成新区块的节点在生成新区块后生成新的令牌种子,并将新区块和新的令牌种子在区块链系统中广播。
其中,该区块链系统中的每一个节点可根据该第一令牌种子生成对应的token值,该token值为用于对区块链中的节点进行标记的值,如用该第一令牌值对该目标节点进行标记,在该区块链系统中的每一个节点根据该第一令牌种子生成对应的token值时,该每一个节点生成的token值都小于等于该第一令牌种子。
具体地,该区块链系统中令牌种子的取值满足2n,其中,n为正整数。一般情况下,n的取值为大于等于2的整数,令牌种子的取值远远小于该区块链系统包括的节点数,所以在区块链系统中存在多个节点对应相同的令牌种子的情况。
其中,步骤S102的和步骤S101在具体实施中,没有必要的先后执行顺序,可先执行步骤S101,再执行步骤S102,也可先执行步骤S102,再执行步骤S101,也可同时执行步骤S101和步骤S102,本发明实施例不做限定。
S103,该目标节点基于目标节点的第一令牌值、该第一区块的序号和该第一令牌种子,确定存储该第一区块或者存储该第一区块的区块头。
在目标节点确定新生成的第一区块的序号,该区块链系统对应的第一令牌种子以及目标节点的第一令牌值后,可基于该新生成第一区块的序号,该区块链系统对应的第一令牌种子以及目标节点的第一令牌值进行取模运算,该目标节点则可根据该取模结果,确定存储该第一区块,或者该存储该第一区块的区块头。
具体地,可先将该第一区块的序号和该第一令牌种子进行取模运算得到取模结果,从而可将该目标节点的第一令牌值和该取模结果进行匹配,如果该目标节点的第一令牌值和该取模结果相同,则该目标节点确定存储该第一区块;如果该目标节点的第一令牌值和该取模结果不同,则该目标节点确定存储该第一区块的区块头。举例来说,如果该目标节点的第一令牌值为2,该第一区块的序号为8,第一令牌种子为5,则该目标节点先计算该第一区块序号8和该第一令牌种子5之间的取模结果,该取模结果为3,由于该目标节点的第一令牌值2和该取模结果3不相等,则该目标节点确定存储该第一区块的区块头。
需要说明的是,创世区块将存储在该区块链系统的所有节点中,也就是说,即使将目标节点的第一令牌值和该第一区块的序号以及该第一令牌种子的取模运算结果进行匹配,确定该目标节点的第一令牌值和该第一区块的序号以及该第一令牌种子的取模运算结果不同,该目标节点也将存储该创世区块。
在本发明实施例中,目标节点可获取区块链系统中广播的新生成的第一区块的序号,并可获取基于该区块系统包括的节点的数量生成的第一令牌种子,从而可基于该目标节点的第一令牌值,该第一区块的序号以及该第一令牌种子,确定该目标节点存储该第一区块或者该第一区块的区块头,可有效缓解目标节点的数据存储压力,从而可降低区块链系统中网络流量过大的问题,还可同时防止区块链系统中的数据被恶意篡改。
请参见图2,是本发明另一实施例提出的一种数据存储方法的示意流程图,该方法应用于上述的区块链系统,该区块链系统包括多个节点,如图2所示,该方法可包括:
S201,目标节点获取该区块链系统中广播的新生成的第一区块的序号。
S202,该目标节点获取第一令牌种子。
在一个实施例中,步骤S201和步骤S202的具体实施方式可参见上述实施例中步骤S101和步骤S102的实施方式,在此不再赘述。
S203,该目标节点基于该目标节点的第一令牌值、该第一区块的序号和该第一令牌种子,确定存储该第一区块或者存储该第一区块的区块头。
在一个实施例中,目标节点在根据该目标节点的第一令牌值、该第一区块的序号和该第一令牌种子,确定该目标节点存储该第一区块或者该第一区块的区块头时,可先根据该第一区块的序号和该第一令牌种子确定需要存储该第一区块对应节点的目标令牌值,具体地,在根据该第一区块的序号和该第一令牌种子确定需存储该第一区块对应节点的目标令牌值时,可先对该第一区块的序号和该第一令牌种子进行取模,得到取模运结果,从而可将该取模结果作为目标节点需要存储该第一区块的节点的目标令牌值。
在目标节点根据该第一区块的序号和该第一令牌种子确定需存储该第一区块的节点的目标令牌值之后,可根据需要存储该第一区块的节点的目标令牌值和该目标节点的第一令牌值确定在该目标节点中存储该第一区块或者该第一区块的区块头,其中,在确定该目标节点的第一令牌值和该目标令牌值相同的情况下,说明需要存储该第一节点的目标令牌值就是该目标节点的第一令牌值,则该目标节点确定存储该第一区块,或者,在确定该目标节点的第一令牌值和该目标令牌值不同的情况下,说明当前区块需要存储该第一节点的目标令牌值不是该目标节点的第一令牌值,则该目标节点确定存储该第一区块的区块头。
S204,在令牌种子更新时间到达时,该目标节点获取第二令牌种子。
在一个实施例中,该第二令牌种子是在更新时间到达时,基于该区块链系统的当前的节点数量生成的,该令牌种子更新时间可以是预先设置的时间间隔,假设该预先设置的时间间隔为2周,则每隔两周目标节点获取一次第二令牌种子。或者,该令牌种子更新时间是基于更新周期设置的,该更新周期为相邻两次生成令牌种子之间的时间段,在根据该更新周期设置令牌种子更新时间时,可基于上一令牌周期,设置该令牌种子更新时间,设置的该令牌种子更新时间可能等于该上一令牌周期,也可不等于该上一令牌周期。
随着区块链系统运行时间的增长,该区块链系统的节点数量会发生变化,当该区块链系统加入新节点时,该区块链系统的节点数量增多,当该区块链系统有节点退出时,该区块链系统的节点数量减少,在该区块链系统的节点数量发生变化时,发生变化的节点将在区块链系统中进行广播,以使得该区块链系统中的其他节点确定该区块链系统中节点数量发生的变化。因此,在令牌种子更新时间到达时,该目标节点获取的第二令牌种子和该第一令牌种子可能相同,也可能不相同。
在一个实施例中,如果在令牌种子更新时间到达时,该区块链系统中包括的节点数量发生变化,可由该区块链系统基于变化后的节点数量生成该第二令牌种子,并将该第二令牌种子进行广播,以便于该目标节点从该区块链系统中获取到该第二令牌种子。具体地,该第二令牌种子也可以是由该区块链系统中的某一个节点生成的,例如生成该第一区块的节点。
在一个实施例中,在确定该第二令牌种子时,可基于该区块链系统中发生变化后的节点数量随机生成第二令牌种子,也可按照预设的生成规则,并结合该第一令牌种子和该区块链系统的节点数量变化前的节点数,生成该第二令牌种子,一般来说,在区块链系统中的节点数量增多时,确定的第二令牌种子大于该第一令牌种子,在该区块链系统中的节点数量减少时,确定的第二令牌种子小于该第一令牌种子。
在该目标节点获取到第二令牌种子后,可执行步骤S205,以实现对该目标节点存储的区块的更新。
S205,该目标节点基于该第二令牌种子,对该目标节点的第一令牌值进行更新,得到该目标节点的第二令牌值。
在目标节点获取到第二令牌种子后,该区块链系统中的各节点将根据该第二令牌种子对该各节点对应的令牌值进行更新,具体地,该目标节点可以及该第二令牌种子,对该目标节点的第一令牌值进行更新,得到该目标节点的第二令牌值。
在目标节点基于该第二令牌种子,对该目标节点的第一令牌值进行更新时,可基于该更新得到的第二令牌种子对该目标节点的第一令牌值进行随机取值,以实现对该目标节点的第一令牌值的更新,并将该随机取值结果作为该目标节点的第二令牌值。
在一个实施例中,在对节点的令牌值进行更新时,为了减少该区块链系统中各节点在对令牌值进行更新后对节点中存储的数据的修改,即减少各节点在对令牌值进行更新后的在对应节点中存储增加的区块的操作和减少在对应节点中删除区块数据的操作,可按照预设的令牌值更新规则,对各节点的令牌值进行更新,从而得到各节点更新后的令牌值。
以目标节点为例,在对该目标节点的第一令牌值按照预设的令牌值更新规则进行更新时,可先将该第一令牌种子和该第二令牌种子进行对比,当该第一令牌种子大于该第二令牌种子时,对该目标节点的第一令牌值和该第二令牌种子进行取模,并得到取模结果,从而可将该取模结果确定为该目标节点的第二令牌值。
具体的,假设对该区块链系统的节点的数量进行更新前的第一令牌种子为t1,更新后的第二令牌种子为t2,该区块链系统中目标节点的第一令牌值在更新前为t,如果t1>t2,则可基于更新后的第二令牌种子t2和该目标节点更新前的令牌值t进行取模运算,即t%t2,其中,%表示取模运算,从而可基于该取模运算结果,确定对该目标节点进行更新后的第二令牌值k,即该目标节点的第二令牌值k=t%t2。
在一个实施例中,如果将该第一令牌种子和该第二令牌种子进行对比,确定该第一令牌种子小于或等于第二令牌种子,则根据该第一令牌种子、第二令牌种子,以及该目标节点更新前的令牌值进行随机取值运算,从而可基于该随机取值运算结果确定对该目标节点进行更新后的第二令牌值。
具体的,假设对该区块链系统的节点的数量进行更新前的第一令牌种子为t1,更新后的第二令牌种子为t2,该目标节点的第一令牌值在更新前为t,如果t1≤t2,则可基于更新前的第一令牌种子为t1,更新后的第二令牌种子为t2,以及该目标节点在更新前的令牌值t进行随机取值运算,即t+RND[0,t2/t1)*t1,其中,RND表示在该范围内进行随机取值运算,从而可基于该随机取值运算结果,确定该目标节点进行更新后的第二令牌值k,即k=t+RND[0,t2/t1)*t1。
S206,该目标节点基于该目标节点的第二令牌值和该第二令牌种子,更新该目标节点存储的区块。
在目标节点基于该目标节点的第二令牌值和该目标令牌值,更新该目标节点存储的区块时,可先根据该目标节点的第二令牌值和该区块链系统包括的各区块的序号,确定该目标节点需要存储和需要删除的区块,从而可将该需要存储的区块进行存储,并将该需要删除的区块进行记录。
在一个实施例中,目标节点在将该需要存储的区块进行存储时,该目标节点可向该区块链系统包括的第一节点发送区块获取请求,其中,该数据获取请求包括该目标节点需要存储但未存储区块的序号,该第一节点为和该目标节点的第二令牌值不同的节点,在该第一节点接收到该目标节点发送的区块获取请求后,可根据该区块获取请求包括的该目标节点需要存储但未存储区块的序号,确定该目标节点需要存储的区块,从而将该目标节点需要存储但未存储的区块发送给目标节点,在该目标节点接收到该需要存储但未存储的区块后,将该需要存储但未存储的区块进行存储。
在具体实现中,区块链系统中的各节点会预先建立通信连接,并在建立通信连接时,将交换建立有通信连接的节点之间令牌值,因此,在目标节点需要存储该目标节点需要存储但未存储的区块时,可向和该目标节点的第一令牌值不同的第一节点发送数据获取请求,从而获取到该需要存储但未存储的区块,或者,当该目标节点需要对区块链系统的数据实现遍历时,可通过查询和该令牌值不同的节点中存储的区块,实现对整个区块链数据的遍历。
在一个实施例中,由于目标节点是基于该目标节点的第一令牌值、该第一区块序号以及该第一令牌种子,确定的存储该第一区块或者该第一区块的区块头的,因此,该区块链系统中的任意两个对应有相同令牌值的节点所存储的区块是相同的,因此,在目标节点确定需要存储但未存储的区块时,需向和该目标节点对应有不同令牌值的节点发送数据获取请求,以得到该目标节点需要存储但未存储的区块。
在一个实施例中,如果检测到该区块链系统有节点退出,在该节点退出该区块链系统后,可对该区块链系统的节点的数量进行更新,并基于该区块链系统中更新后的节点的数量,对该第一令牌值进行更新得到第二令牌值,并基于该第二令牌值对该目标节点的第一令牌值进行更新,以得到该目标节点的第二令牌值,从而可根据该目标节点的第二令牌值,确定该目标节点需要删除的区块,并从该目标节点中将该需要删除的区块进行删除。其中,在目标节点对该需要删除的区块进行删除时,该目标节点可只删除该需要删除区块的区块数据,而依旧保留存储有该需要删除区块的区块头。
在目标节点将该需要删除的区块进行删除时,先根据该第一令牌种子和该第二令牌种子,确定该区块链系统对应的令牌周期(即token周期),并基于该令牌周期对该需要删除的区块进行删除,具体地,目标节点在确定需要删除的区块后,可先对该需要删除的区块进行记录,并在下一个令牌周期到来时,将该需要删除的区块的区块数据删除,并保留该需要删除的区块的区块头。
在本发明实施例中,目标节点可获取该区块链系统中广播的新生成的第一区块的序号,并可获取第一令牌种子,以使得该目标节点基于该目标节点的第一令牌值,该第一区块的序号以及该第一令牌种子,确定存储该第一区块或者该第一区块的区块头,在令牌种子更新时间到达时,可先获取基于变化后的区块链系统包括的节点的数量确定的第二令牌种子,进一步地,可基于该第二令牌种子对该目标节点的第一令牌值进行更新,得到该目标节点的第二令牌值,并基于该第二令牌值和该第二令牌种子,更新该目标节点存储的区块,实现了对区块链系统中的节点存储的数据的及时更新,对于数据量较大的节点而言,可有效降低网络流量,缓解数据存储和数据更新的压力。
本发明实施例还提供一种数据存储装置,该数据存储装置用于执行前述任一项所述的方法的单元。具体地,参见图3,是本发明实施例提供的一种数据存储装置的示意框图。本实施例的贷款审核装置包括获取单元301和确定单元302。
获取单元301,用于获取所述区块链系统中广播的新生成的第一区块的序号,其中,所述目标节点为所述多个节点中的任一个,所述第一区块包括区块数据和区块头,所述区块头包括所述第一区块的序号;
所述获取单元301,还用于获取第一令牌种子,其中,所述第一令牌种子是根据所述区块链系统的节点数量生成的;
确定单元302,用于基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头。
在一个实施例中,所述确定单元302具体用于:
根据所述第一区块的序号和所述第一令牌种子,确定需存储所述第一区块对应节点的目标令牌值;
在确定所述目标节点的第一令牌值和所述目标令牌值相同的情况下,确定存储所述第一区块;或者,
在确定所述目标节点的第一令牌值和所述目标令牌值不同的情况下,确定存储所述第一区块的区块头。
在一个实施例中,所述确定单元302具体用于:
对所述第一令牌种子与所述第一区块的序号进行取模,得到取模结果;
将所述取模结果确定为需存储所述第一区块对应节点的目标令牌值。
在一个实施例中,所述装置还包括:更新单元303。
所述获取单元301,还用于在令牌种子更新时间到达时,获取第二令牌种子,所述第二令牌种子是在所述令牌种子更新时间到达时,基于所述区块链系统当前的节点数量生成的;
更新单元303,用于基于所述第二令牌种子,对所述第一令牌值进行更新得到所述目标节点的第二令牌值;
所述更新单元303,还用于基于所述目标节点的第二令牌值和所述第二令牌种子,更新所述目标节点存储的区块。
在一个实施例中,所述更新单元303具体用于:
所述目标节点根据所述第二令牌值和所述区块链系统中的各区块的序号,确定需要存储的区块和需要删除的区块;
所述目标节点对所述需要存储的区块进行存储,并对所述需要删除的区块进行记录。
在一个实施例中,所述更新单元303具体用于:
所述目标节点向第一节点发送区块获取请求,所述区块获取请求包括所述目标节点需要存储但未存储区块的序号,所述第一节点为所述区块链系统中令牌值与所述第二令牌值不同的节点集合中的任一个;
所述目标节点接收所述第一节点基于所述区块获取请求发送的所述目标节点需要存储但未存储区块;
所述目标节点存储所述需要存储但未存储区块。
在一个实施例中,所述装置还包括:删除单元304。
删除单元304,用于将在上一个令牌周期内记录的需要删除的区块的区块数据进行删除,所述令牌周期为相邻两次生成令牌种子之间的时间段。
在一个实施例中,所述更新单元303具体用于:
在所述第一令牌种子大于所述第二令牌种子时,对所述第一令牌值与所述第二令牌种子进行取模,将得到的取模结果确定为所述目标节点的第二令牌值;
在所述第一令牌种子小于所述第二令牌种子时,对所述第一令牌种子,所述第二令牌种子和所述第一令牌值进行计算,将得到的计算结果确定为所述目标节点的第二令牌值。
在本发明实施例中,获取单元301可获取区块链系统中广播的新生成的第一区块的序号,并可获取基于该区块系统包括的节点的数量生成的第一令牌种子,从而确定单元302可基于该目标节点的第一令牌值,该第一区块的序号以及该第一令牌种子,确定该目标节点存储该第一区块或者该第一区块的区块头,可有效缓解目标节点的数据存储压力,从而可降低区块链系统中网络流量过大的问题,还可同时防止区块链系统中的数据被恶意篡改。
参见图4,是本发明实施例提供的一种服务器的示意框图,该服务器用于实现上述方法实施例中提及的贷款平台。如图所示的本实施例中的服务器可以包括:一个或多个处理器401;一个或多个网络接口402,和存储器403。上述处理器401、网络接口402和存储器403通过总线404连接。存储器403用于存储计算机程序,所述计算机程序包括程序指令,处理器401用于执行存储器403存储的程序指令。其中,处理器401被配置用于调用所述程序指令执行:
获取所述区块链系统中广播的新生成的第一区块的序号,其中,所述目标节点为所述多个节点中的任一个,所述第一区块包括区块数据和区块头,所述区块头包括所述第一区块的序号;
获取第一令牌种子,其中,所述第一令牌种子是根据所述区块链系统的节点数量生成的;
基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头。
在一个实施例中,所述处理器401还被配置用于调用所述程序指令执行:
根据所述第一区块的序号和所述第一令牌种子,确定需存储所述第一区块对应节点的目标令牌值;
在确定所述目标节点的第一令牌值和所述目标令牌值相同的情况下,确定存储所述第一区块;或者,
在确定所述目标节点的第一令牌值和所述目标令牌值不同的情况下,确定存储所述第一区块的区块头。
在一个实施例中,所述处理器401还被配置用于调用所述程序指令执行:
对所述第一令牌种子与所述第一区块的序号进行取模,得到取模结果;
将所述取模结果确定为需存储所述第一区块对应节点的目标令牌值。
在一个实施例中,所述处理器401还被配置用于调用所述程序指令执行:
在令牌种子更新时间到达时,所述目标节点获取第二令牌种子,所述第二令牌种子是在所述令牌种子更新时间到达时,基于所述区块链系统当前的节点数量生成的;
基于所述第二令牌种子,对所述第一令牌值进行更新得到所述目标节点的第二令牌值;
基于所述目标节点的第二令牌值和所述第二令牌种子,更新所述目标节点存储的区块。
在一个实施例中,所述处理器401还被配置用于调用所述程序指令执行:
根据所述第二令牌值和所述区块链系统中的各区块的序号,确定需要存储的区块和需要删除的区块;
对所述需要存储的区块进行存储,并对所述需要删除的区块进行记录。
在一个实施例中,所述处理器401还被配置用于调用所述程序指令执行:
向第一节点发送区块获取请求,所述区块获取请求包括所述目标节点需要存储但未存储区块的序号,所述第一节点为所述区块链系统中令牌值与所述第二令牌值不同的节点集合中的任一个;
接收所述第一节点基于所述区块获取请求发送的所述目标节点需要存储但未存储区块;
存储所述需要存储但未存储区块。
在一个实施例中,所述处理器401还被配置用于调用所述程序指令执行:
将在上一个令牌周期内记录的需要删除的区块的区块数据进行删除,所述令牌周期为相邻两次生成令牌种子之间的时间段。
在一个实施例中,所述处理器401还被配置用于调用所述程序指令执行:
在所述第一令牌种子大于所述第二令牌种子时,对所述第一令牌值与所述第二令牌种子进行取模,将得到的取模结果确定为所述目标节点的第二令牌值;
在所述第一令牌种子小于所述第二令牌种子时,对所述第一令牌种子,所述第二令牌种子和所述第一令牌值进行计算,将得到的计算结果确定为所述目标节点的第二令牌值。
在本发明的另一实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现上述图1和图2所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种数据存储方法,应用于区块链系统,所述区块链系统包括多个节点,其特征在于,所述方法包括:
目标节点获取所述区块链系统中广播的新生成的第一区块的序号,其中,所述目标节点为所述多个节点中的任一个,所述第一区块包括区块数据和区块头,所述区块头包括所述第一区块的序号;
所述目标节点获取第一令牌种子,其中,所述第一令牌种子是根据所述区块链系统的节点数量生成的;
所述目标节点根据所述第一令牌种子生成所述目标节点的第一令牌值,并基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头。
2.根据权利要求1所述的方法,其特征在于,所述目标节点基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头,包括:
所述目标节点根据所述第一区块的序号和所述第一令牌种子,确定需存储所述第一区块对应节点的目标令牌值;
在确定所述目标节点的第一令牌值和所述目标令牌值相同的情况下,所述目标节点确定存储所述第一区块;或者,
在确定所述目标节点的第一令牌值和所述目标令牌值不同的情况下,所述目标节点确定存储所述第一区块的区块头。
3.根据权利要求2所述的方法,其特征在于,所述目标节点根据所述第一区块的序号和所述第一令牌种子,确定需存储所述第一区块对应节点的目标令牌值,包括:
所述目标节点对所述第一令牌种子与所述第一区块的序号进行取模,得到取模结果;
所述目标节点将所述取模结果确定为需存储所述第一区块对应节点的目标令牌值。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在令牌种子更新时间到达时,所述目标节点获取第二令牌种子,所述第二令牌种子是在所述令牌种子更新时间到达时,基于所述区块链系统当前的节点数量生成的;
所述目标节点基于所述第二令牌种子,对所述第一令牌值进行更新得到所述目标节点的第二令牌值;
所述目标节点基于所述目标节点的第二令牌值和所述第二令牌种子,更新所述目标节点存储的区块。
5.根据权利要求4所述的方法,其特征在于,所述目标节点基于所述目标节点的第二令牌值和所述第二令牌种子,更新所述目标节点存储的区块,包括:
所述目标节点根据所述第二令牌值和所述区块链系统中的各区块的序号,确定需要存储的区块和需要删除的区块;
所述目标节点对所述需要存储的区块进行存储,并对所述需要删除的区块进行记录。
6.根据权利要求5所述的方法,其特征在于,所述目标节点对所述需要存储的区块进行存储,包括:
所述目标节点向第一节点发送区块获取请求,所述区块获取请求包括所述目标节点需要存储但未存储区块的序号,所述第一节点为所述区块链系统中令牌值与所述第二令牌值不同的节点集合中的任一个;
所述目标节点接收所述第一节点基于所述区块获取请求发送的所述目标节点需要存储但未存储区块;
所述目标节点存储所述需要存储但未存储区块。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述目标节点将在上一个令牌周期内记录的需要删除的区块的区块数据进行删除,所述令牌周期为相邻两次生成令牌种子之间的时间段。
8.根据权利要求4所述的方法,其特征在于,所述目标节点基于所述第二令牌种子,对所述第一令牌值进行更新得到所述目标节点的第二令牌值,包括:
在所述第一令牌种子大于所述第二令牌种子时,所述目标节点对所述第一令牌值与所述第二令牌种子进行取模,将得到的取模结果确定为所述目标节点的第二令牌值;
在所述第一令牌种子小于所述第二令牌种子时,所述目标节点对所述第一令牌种子,所述第二令牌种子和所述第一令牌值进行计算,将得到的计算结果确定为所述目标节点的第二令牌值。
9.一种数据存储装置,应用于区块链系统,所述区块链系统包括的多个节点中的目标节点,其特征在于,所述装置包括:
获取单元,用于获取所述区块链系统中广播的新生成的第一区块的序号,其中,所述目标节点为所述多个节点中的任一个,所述第一区块包括区块数据和区块头,所述区块头包括所述第一区块的序号;
所述获取单元,还用于获取第一令牌种子,其中,所述第一令牌种子是根据所述区块链系统的节点数量生成的;
确定单元,用于根据所述第一令牌种子生成所述目标节点的第一令牌值,并基于所述目标节点的第一令牌值、所述第一区块的序号和所述第一令牌种子,确定存储所述第一区块或者存储所述第一区块的区块头。
10.一种节点服务器,其特征在于,包括存储器、网络接口以及处理器,所述存储器中存储有计算机程序,所述网络接口用于受所述处理器的控制收发消息,所述处理器执行所述计算机程序时实现如权利要求1-8任一项所述的方法。
11.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811616617.0A CN109756566B (zh) | 2018-12-27 | 2018-12-27 | 基于区块链的数据存储方法、相关设备及存储介质 |
PCT/CN2019/092088 WO2020133963A1 (zh) | 2018-12-27 | 2019-06-20 | 基于区块链的数据存储方法、相关设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811616617.0A CN109756566B (zh) | 2018-12-27 | 2018-12-27 | 基于区块链的数据存储方法、相关设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109756566A CN109756566A (zh) | 2019-05-14 |
CN109756566B true CN109756566B (zh) | 2020-01-03 |
Family
ID=66403314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811616617.0A Active CN109756566B (zh) | 2018-12-27 | 2018-12-27 | 基于区块链的数据存储方法、相关设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109756566B (zh) |
WO (1) | WO2020133963A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857805B (zh) | 2018-12-27 | 2020-10-02 | 重庆小雨点小额贷款有限公司 | 基于区块链的数据存储方法、相关设备及存储介质 |
CN109756566B (zh) * | 2018-12-27 | 2020-01-03 | 重庆小雨点小额贷款有限公司 | 基于区块链的数据存储方法、相关设备及存储介质 |
CN112465554A (zh) * | 2020-12-03 | 2021-03-09 | 广东工业大学 | 一种基于区块链的计算资源定价方法 |
CN113315826B (zh) * | 2021-05-24 | 2023-03-24 | 网易(杭州)网络有限公司 | 区块链的管理方法、装置、管理服务节点及存储介质 |
CN113541969A (zh) * | 2021-09-16 | 2021-10-22 | 中关村科学城城市大脑股份有限公司 | 数据获取方法、系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107079059A (zh) * | 2016-12-21 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 区块链存储方法、装置及节点设备 |
WO2017145005A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Blockchain implemented counting system and method for use in secure voting and distribution |
CN108462885A (zh) * | 2018-05-09 | 2018-08-28 | 广东工业大学 | 一种基于区块链的视频存储方法、装置及介质 |
CN108984791A (zh) * | 2018-08-02 | 2018-12-11 | 苏州市千尺浪信息科技服务有限公司 | 一种基于区块链大数据的存储系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160098730A1 (en) * | 2014-10-01 | 2016-04-07 | The Filing Cabinet, LLC | System and Method for Block-Chain Verification of Goods |
CN105975868A (zh) * | 2016-04-29 | 2016-09-28 | 杭州云象网络技术有限公司 | 一种基于区块链的证据保全方法及装置 |
CN106506638B (zh) * | 2016-11-04 | 2020-01-07 | 江苏通付盾科技有限公司 | 区块链中的区块存储方法及装置 |
US20180315072A1 (en) * | 2017-05-01 | 2018-11-01 | Greg Rubin | Method and system of facilitating management of cryptocurrency based loyalty points associated with one or more of a product and a service |
CN107317672A (zh) * | 2017-05-10 | 2017-11-03 | 广东网金控股股份有限公司 | 一种轻量终端机区块链系统 |
CN107332658A (zh) * | 2017-08-11 | 2017-11-07 | 浙江赛佳控股有限公司 | 基于链式区块链技术的接口实现方法及装置 |
CN108810119A (zh) * | 2018-05-31 | 2018-11-13 | 中国联合网络通信集团有限公司 | 区块链处理方法、装置及区块链节点 |
CN109756566B (zh) * | 2018-12-27 | 2020-01-03 | 重庆小雨点小额贷款有限公司 | 基于区块链的数据存储方法、相关设备及存储介质 |
-
2018
- 2018-12-27 CN CN201811616617.0A patent/CN109756566B/zh active Active
-
2019
- 2019-06-20 WO PCT/CN2019/092088 patent/WO2020133963A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017145005A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Blockchain implemented counting system and method for use in secure voting and distribution |
CN107079059A (zh) * | 2016-12-21 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 区块链存储方法、装置及节点设备 |
CN108462885A (zh) * | 2018-05-09 | 2018-08-28 | 广东工业大学 | 一种基于区块链的视频存储方法、装置及介质 |
CN108984791A (zh) * | 2018-08-02 | 2018-12-11 | 苏州市千尺浪信息科技服务有限公司 | 一种基于区块链大数据的存储系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2020133963A1 (zh) | 2020-07-02 |
CN109756566A (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109756566B (zh) | 基于区块链的数据存储方法、相关设备及存储介质 | |
CN110929880A (zh) | 一种联邦学习方法、装置及计算机可读存储介质 | |
CN110865842B (zh) | 一种ota升级方法和设备 | |
CN108600163B (zh) | 一种云环境分布式哈希链架构及云数据完整性验证方法 | |
CN110597824A (zh) | 一种基于区块链网络的数据存储方法以及装置 | |
CN110012076B (zh) | 一种连接建立方法及装置 | |
CN107040576A (zh) | 信息推送方法及装置、通讯系统 | |
CN109857805B (zh) | 基于区块链的数据存储方法、相关设备及存储介质 | |
CN104866339A (zh) | Fota数据的分布式持久化管理方法、系统和装置 | |
CN107018194A (zh) | 一种策略及时正确下载的实现方法 | |
CN103259869B (zh) | 一种基于分布式数据存储的集中信息管理方法 | |
CN111161072A (zh) | 基于区块链的随机数生成方法、设备及存储介质 | |
CN111275495A (zh) | 基于区块链的广告投放监测方法、装置及系统 | |
CN114969803B (zh) | 一种数据存储方法、装置及存储介质 | |
CN114676205A (zh) | 事件信息的处理方法及装置 | |
CN110855424A (zh) | 一种DPI领域非对称流量xDR合成的方法和装置 | |
CN104038420A (zh) | 一种路由计算方法和设备 | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
CN105763608A (zh) | 一种用于云存储系统的消息处理方法和装置 | |
CN112822113B (zh) | 路由地址的获取方法及装置、电子设备和可读存储介质 | |
CN115378959A (zh) | 数据发送方法、装置、电子设备和存储介质 | |
US20170090820A1 (en) | Method and device for operating a many-core system | |
CN110471922B (zh) | 记账节点的内容扩展方法、设备及计算机可读存储介质 | |
CN107454018B (zh) | 报文缓存管理器异常的处理方法及装置 | |
CN104951557B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40007682 Country of ref document: HK |