会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 区块链账本 / 区块链账本的存储方法及装置

区块链账本的存储方法及装置

申请号 CN201910045742.9 申请日 2019-01-17 公开(公告)号 CN111447055A 公开(公告)日 2020-07-24
申请人 华为技术有限公司; 发明人 钱良芳;
摘要 本申请提供一种区块链账本的存储方法及装置。该方法应用于第一簇头节点,第一簇头节点属于第一节点簇,第一节点簇用于存储区块链账本的第一副本。区块链账本包括一个头区块和至少一个数据区块。第一节点簇还包括至少一个普通节点。该方法包括:接收第一副本和至少一个普通节点上报的可用存储空间大小。然后,根据至少一个普通节点上报的可用存储空间大小和第一副本的数据量,确定至少一个普通节点中每个普通节点需要存储的数据区块。之后,存储头区块,以及至少一个数据区块的存储信息。其中,存储信息用于指示每个数据区块与其所在的普通节点的对应关系。可以适用于利用多个分布式节点共同存储区块链账本的一个副本。
权利要求

1.一种区块链账本的存储方法,其特征在于,应用于第一簇头节点,所述第一簇头节点属于第一节点簇,所述第一节点簇用于存储区块链账本的第一副本,所述区块链账本包括一个头区块和至少一个数据区块;所述第一节点簇还包括至少一个普通节点;

所述区块链账本的存储方法,包括:

接收所述第一副本和所述至少一个普通节点上报的可用存储空间大小;

根据所述至少一个普通节点上报的可用存储空间大小和所述第一副本的数据量,确定所述至少一个普通节点中每个普通节点需要存储的数据区块;

存储所述头区块,以及所述至少一个数据区块的存储信息;其中,所述存储信息用于指示每个数据区块与其所在的普通节点的对应关系。

2.根据权利要求1所述的区块链账本的存储方法,其特征在于,所述至少一个普通节点包括第一普通节点和第二普通节点;

所述区块链账本的存储方法,还包括:

将第一数据区块集合中的部分或全部数据区块转存至所述第二普通节点。

3.根据权利要求1或2所述的区块链账本的存储方法,其特征在于,所述第一节点簇与第二节点簇存在通信连接;所述第二节点簇用于存储区块链账本的第二副本,所述第二节点簇包括第二簇头节点;

所述区块链账本的存储方法,还包括:

向所述第二簇头节点发送所述第一副本中的部分数据区块,以便所述第二节点簇代为存储所述部分数据区块。

4.根据权利要求3所述的区块链账本的存储方法,其特征在于,所述区块链账本的存储方法,还包括:接收所述第二簇头节点发送的可用共享存储信息;其中,所述可用共享存储信息用于指示所述第二节点簇内的可用共享存储空间总量;

向所述第二簇头节点发送共享存储请求;其中,所述共享存储请求用于请求所述第二节点簇代为暂存所述第一副本中的部分数据区块;

接收所述第二簇头节点发送的共享存储响应;其中,所述共享存储响应用于指示所述第二簇头节点是否接受所述共享存储请求;

若所述第二簇头节点接受所述共享存储请求,则向所述第二簇头节点发送所述部分数据区块,并修改所述存储信息。

5.根据权利要求3或4所述的区块链账本的存储方法,其特征在于,所述区块链账本的存储方法,还包括:获取并存储所述第二节点簇代为暂存的所述部分数据区块;

修改所述存储信息,并向所述第二节点簇发送共享存储释放消息;其中,所述共享存储释放消息用于通知所述第二簇头节点释放所述第二节点簇内用于暂存所述部分数据区块的共享存储空间。

6.根据权利要求4或5所述的区块链账本的存储方法,其特征在于,所述共享存储响应还包括共享到期时间;

所述区块链账本的存储方法,还包括:

当达到所述共享到期时间时,向所述第二簇头节点发送共享存储续约请求;其中,所述共享存储续约请求用于请求所述第二节点簇继续代为暂存所述部分数据区块。

7.根据权利要求4或5所述的区块链账本的存储方法,其特征在于,所述共享存储响应还包括共享到期时间;

所述区块链账本的存储方法,还包括:

接收所述第二簇头节点发送的共享存储续约通知;其中,所述共享存储续约通知用于当达到所述共享到期时间时,所述第二簇头节点询问所述第一簇头节点是否需要所述第二节点簇继续代为暂存所述部分数据区块。

8.根据权利要求4或5所述的区块链账本的存储方法,其特征在于,所述区块链账本的存储方法,还包括:接收所述第二节点簇发送的共享存储解约通知;其中,所述共享存储解约通知用于通知所述第一簇头节点所述第二节点簇不再代为暂存所述部分数据区块。

9.一种簇头节点,其特征在于,属于第一节点簇;所述第一节点簇用于存储区块链账本的第一副本,所述区块链账本包括一个头区块和至少一个数据区块;所述第一节点簇还包括至少一个普通节点;所述簇头节点包括通信模块、处理模块和存储模块:其中,所述通信模块,用于接收所述第一副本和所述至少一个普通节点上报的可用存储空间大小;

所述处理模块,用于根据所述至少一个普通节点上报的可用存储空间大小和所述第一副本的数据量,确定所述至少一个普通节点中每个普通节点需要存储的数据区块;

所述存储模块,用于存储所述头区块,以及所述至少一个数据区块的存储信息;其中,所述存储信息用于指示每个数据区块与其所在的普通节点的对应关系。

10.根据权利要求9所述的簇头节点,其特征在于,所述至少一个普通节点包括第一普通节点和第二普通节点;

所述处理模块,还用于将第一数据区块集合中的部分或全部数据区块转存至所述第二普通节点。

11.根据权利要求9或10所述的簇头节点,其特征在于,与第二节点簇存在通信连接;所述第二节点簇用于存储区块链账本的第二副本,所述第二节点簇包括第二簇头节点;

所述通信模块,还用于向所述第二簇头节点发送所述第一副本中的部分数据区块,以便所述第二节点簇代为存储所述部分数据区块。

12.根据权利要求11所述的簇头节点,其特征在于,

所述通信模块,还用于接收所述第二簇头节点发送的可用共享存储信息;其中,所述可用共享存储信息用于指示所述第二节点簇内的可用共享存储空间总量;

所述通信模块,还用于向所述第二簇头节点发送共享存储请求;其中,所述共享存储请求用于请求所述第二节点簇代为暂存所述第一副本中的部分数据区块;

所述通信模块,还用于接收所述第二簇头节点发送的共享存储响应;其中,所述共享存储响应用于指示所述第二簇头节点是否接受所述共享存储请求;

所述通信模块,还用于若所述第二簇头节点接受所述共享存储请求,则向所述第二簇头节点发送所述部分数据区块;

所述处理模块,还用于修改所述存储信息。

13.根据权利要求11或12所述的簇头节点,其特征在于,

所述处理模块,还用于获取并存储所述第二节点簇代为暂存的所述部分数据区块;

所述处理模块,还用于修改所述存储信息;

所述通信模块,还用于向所述第二节点簇发送共享存储释放消息;其中,所述共享存储释放消息用于通知所述第二簇头节点释放所述第二节点簇内用于暂存所述部分数据区块的共享存储空间。

14.根据权利要求12或13所述的簇头节点,其特征在于,所述共享存储响应还包括共享到期时间;

所述通信模块,还用于当达到所述共享到期时间时,向所述第二簇头节点发送共享存储续约请求;其中,所述共享存储续约请求用于请求所述第二节点簇继续代为暂存所述部分数据区块。

15.根据权利要求12或13所述的簇头节点,其特征在于,所述共享存储响应还包括共享到期时间;

所述通信模块,还用于接收所述第二簇头节点发送的共享存储续约通知;其中,所述共享存储续约通知用于当达到所述共享到期时间时,所述第二簇头节点询问所述簇头节点是否需要所述第二节点簇继续代为暂存所述部分数据区块。

16.根据权利要求12或13所述的簇头节点,其特征在于,

所述通信模块,还用于接收所述第二节点簇发送的共享存储解约通知;其中,所述共享存储解约通知用于通知所述第一簇头节点所述第二节点簇不再代为暂存所述部分数据区块。

17.一种簇头节点,其特征在于,属于第一节点簇;所述第一节点簇用于存储区块链账本的第一副本,所述区块链账本包括一个头区块和至少一个数据区块;所述第一节点簇还包括至少一个普通节点;其中,所述簇头节点包括处理器和收发器,所述处理器与所述收发器和存储器耦合;

所述存储器,用于存储计算机程序;

所述处理器,用于执行所述存储器中存储的计算机程序,使得所述簇头节点执行如权利要求1-8中任一项所述的区块链账本的存储方法。

18.一种可读存储介质,其特征在于,存储有程序或指令,当所述程序或指令在计算机上运行时,使得所述计算机执行如权利要求1-8中任一项所述的区块链账本的存储方法。

19.一种计算机程序产品,其特征在于,包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得所述计算机执行如权利要求1-8中任一项所述的区块链账本的存储方法。

说明书全文

区块链账本的存储方法及装置

技术领域

[0001] 本申请涉及物联网领域,尤其涉及一种区块链账本的存储方法及装置。

背景技术

[0002] 区块链(blockchain)是一种将各自包含有若干条交易记录的多个数据区块按照时间顺序组合而成的分布式账本。其中,后一个数据区块均包含前一个数据区块的验证信息,如哈希(hash)值,从而将多个数据区块组成一个难以被篡改的链式数据结构,且多个分布式节点上均保存有相同的区块链副本以便相互验证,可以在交易双方直接交易,也就是没有第三方信任机构参与的情况下,确保交易的安全性。
[0003] 目前,每个分布式节点均需要保存完整的区块链副本。因此,当区块链的数据量较大时,占用的存储空间也较大,成本较高。并且,不同分布式节点的存储能力可能存在差异,一旦某些分布式节点存储空间不足,则无法保存完整的区块链副本,从而降低区块链的安全性。

发明内容

[0004] 本申请提供一种区块链账本的存储方法及装置,能够解决单个节点无法存储区块链账本副本的问题,能够提高区块链技术的安全性和可靠性。
[0005] 第一方面,提供一种区块链账本的存储方法。该方法应用于第一簇头节点,第一簇头节点属于第一节点簇,第一节点簇用于存储区块链账本的第一副本。区块链账本包括一个头区块和至少一个数据区块。第一节点簇还包括至少一个普通节点。该区块链账本的存储方法,包括:接收第一副本和至少一个普通节点上报的可用存储空间大小。然后,根据至少一个普通节点上报的可用存储空间大小和第一副本的数据量,确定至少一个普通节点中每个普通节点需要存储的数据区块。之后,存储头区块,以及至少一个数据区块的存储信息。其中,存储信息用于指示每个数据区块与其所在的普通节点的对应关系。
[0006] 本申请提供的区块链账本的存储方法,第一簇头节点能够根据第一节点簇内至少一个普通节点上报的可用存储空间总量,以及需要存储的区块链账本副本的数据量,动态地确定每个普通节点需要存储的数据区块,并在第一簇头节点存储区块链账本的头区块和每个数据区块的存储信息,从而达到利用第一节点簇内的多个节点的存储能力共同完成一个区块链账本副本的存储工作,解决了由于单个节点的存储空间不足以存储一个区块链账本副本,从而导致无法存储区块链账本副本的问题,能够提高区块链技术的安全性和可靠性。
[0007] 在一种可能的设计方法中,上述至少一个普通节点包括第一普通节点和第二普通节点。上述区块链账本的存储方法,还可以包括:将第一数据区块集合中的部分或全部数据区块转存至第二普通节点。
[0008] 在一种可能的设计方法中,上述第一节点簇与第二节点簇存在通信连接。第二节点簇用于存储区块链账本的第二副本,第二节点簇包括第二簇头节点。上述区块链账本的存储方法,还可以包括:向第二簇头节点发送第一副本中的部分数据区块,以便第二节点簇代为存储部分数据区块。
[0009] 在另一种可能的设计方法中,上述区块链账本的存储方法,还可以包括:接收第二簇头节点发送的可用共享存储信息。其中,可用共享存储信息用于指示第二节点簇内的可用共享存储空间总量。然后,向第二簇头节点发送共享存储请求。其中,共享存储请求用于请求第二节点簇代为暂存第一副本中的部分数据区块。之后,接收第二簇头节点发送的共享存储响应。其中,共享存储响应用于指示第二簇头节点是否接受共享存储请求。最后,若第二簇头节点接受共享存储请求,则向第二簇头节点发送部分数据区块,并修改存储信息。
[0010] 可选地,上述区块链账本的存储方法,还可以包括:获取并存储第二节点簇代为暂存的部分数据区块,以及修改存储信息,并向第二节点簇发送共享存储释放消息。其中,共享存储释放消息用于通知第二簇头节点释放第二节点簇内用于暂存部分数据区块的共享存储空间。
[0011] 可选地,上述共享存储响应还包括共享到期时间。相应地,上述区块链账本的存储方法,还可以包括:当达到共享到期时间时,向第二簇头节点发送共享存储续约请求。其中,共享存储续约请求用于请求第二节点簇继续代为暂存部分数据区块。
[0012] 可选地,上述共享存储响应还包括共享到期时间。相应地,上述区块链账本的存储方法,还可以包括:接收第二簇头节点发送的共享存储续约通知。其中,共享存储续约通知用于当达到共享到期时间时,第二簇头节点询问第一簇头节点是否需要第二节点簇继续代为暂存部分数据区块。
[0013] 可选地,上述区块链账本的存储方法,还可以包括:接收第二节点簇发送的共享存储解约通知。其中,共享存储解约通知用于通知第一簇头节点第二节点簇不再代为暂存部分数据区块。
[0014] 第二方面,提供一种簇头节点。该簇头节点属于第一节点簇;第一节点簇用于存储区块链账本的第一副本,区块链账本包括一个头区块和至少一个数据区块。上述第一节点簇还包括至少一个普通节点。上述簇头节点包括:通信模块、处理模块和存储模块。其中,通信模块,用于接收第一副本和至少一个普通节点上报的可用存储空间大小。处理模块,用于根据至少一个普通节点上报的可用存储空间大小和第一副本的数据量,确定至少一个普通节点中每个普通节点需要存储的数据区块。存储模块,用于存储头区块,以及至少一个数据区块的存储信息;其中,存储信息用于指示每个数据区块与其所在的普通节点的对应关系。
[0015] 在一种可能的设计中,上述至少一个普通节点包括第一普通节点和第二普通节点。相应地,上述处理模块,还用于将第一数据区块集合中的部分或全部数据区块转存至第二普通节点。
[0016] 在另一种可能的设计中,上述区块链账本的存储装置,与第二节点簇存在通信连接,第二节点簇用于存储区块链账本的第二副本,第二节点簇包括第二簇头节点。相应地,上述通信模块,还用于向第二簇头节点发送第一副本中的部分数据区块,以便第二节点簇代为存储部分数据区块。
[0017] 在一种可能的设计中,上述通信模块,还用于接收第二簇头节点发送的可用共享存储信息;其中,可用共享存储信息用于指示第二节点簇内的可用共享存储空间总量。上述通信模块,还用于向第二簇头节点发送共享存储请求。其中,共享存储请求用于请求第二节点簇代为暂存第一副本中的部分数据区块。上述通信模块,还用于接收第二簇头节点发送的共享存储响应;其中,共享存储响应用于指示第二簇头节点是否接受共享存储请求。上述通信模块,还用于若第二簇头节点接受共享存储请求,则向第二簇头节点发送部分数据区块。上述处理模块,还用于修改存储信息。
[0018] 可选地,上述处理模块,还用于获取并存储第二节点簇代为暂存的部分数据区块。处理模块,还用于修改存储信息。通信模块,还用于向第二节点簇发送共享存储释放消息。
其中,共享存储释放消息用于通知第二簇头节点释放第二节点簇内用于暂存部分数据区块的共享存储空间。
[0019] 可选地,上述共享存储响应还包括共享到期时间。相应地,上述通信模块,还用于当达到共享到期时间时,向第二簇头节点发送共享存储续约请求。其中,共享存储续约请求用于请求第二节点簇继续代为暂存部分数据区块。
[0020] 可选地,上述共享存储响应还包括共享到期时间。相应地,上述通信模块,还用于接收第二簇头节点发送的共享存储续约通知;其中,共享存储续约通知用于当达到共享到期时间时,第二簇头节点询问簇头节点是否需要第二节点簇继续代为暂存部分数据区块。
[0021] 可选地,上述通信模块,还用于接收第二节点簇发送的共享存储解约通知。其中,共享存储解约通知用于通知第一簇头节点第二节点簇不再代为暂存部分数据区块。
[0022] 第三方面,提供一种簇头节点。该簇头节点属于第一节点簇;第一节点簇用于存储区块链账本的第一副本。该区块链账本包括一个头区块和至少一个数据区块。第一节点簇还包括至少一个普通节点。其中,簇头节点包括处理器和收发器,该处理器与收发器和存储器耦合。存储器,用于存储计算机程序。处理器,用于执行存储器中存储的计算机程序,使得簇头节点执行如第一方面或第一方面的任一种可能的实现方式所述的区块链账本的存储方法。
[0023] 第三方面所述的簇头节点可以是网络设备,也可以是网络设备内的芯片。所述处理器与收发器和存储器耦合,是指处理器与收发器和存储器之间存在信号连接,如可以通过总线连接。其中,存储器可以是簇头节点内部的存储器,也可以是位于簇头节点外部且与簇头节点存在信号连接的外部存储器。
[0024] 第四方面,提供一种区块链账本的存储系统,包括:多个包含由一个如第二方面或第三方面所述的簇头节点的节点簇。
[0025] 第五方面,提供一种可读存储介质,存储有程序或指令,当程序或指令在计算机上运行时,使得计算机执行如第一方面或第一方面中任一种可能的实现方式所述的区块链账本的存储方法。
[0026] 第六方面,提供一种计算机程序产品,包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如第一方面或第一方面中任一种可能的实现方式所述的区块链账本的存储方法。

附图说明

[0027] 图1为一种用于存储区块链账本的分布式系统的结构示意图;
[0028] 图2为一种区块链账本的存储方法的流程示意图;
[0029] 图3为本申请提供的区块链账本的存储方法所适用的分布式系统的结构示意图;
[0030] 图4为本申请提供的区块链账本的存储方法的流程示意图一;
[0031] 图5A为本申请实施例提供的区块链账本的存储方法的应用场景示意图一;
[0032] 图5B为本申请实施例提供的区块链账本的存储方法的应用场景示意图二;
[0033] 图5C为本申请实施例提供的区块链账本的存储方法的应用场景示意图三;
[0034] 图6为本申请提供的区块链账本的存储方法的流程示意图二;
[0035] 图7为本申请实施例提供的簇头节点的结构示意图一;
[0036] 图8为本申请实施例提供的簇头节点的结构示意图二。

具体实施方式

[0037] 区块链是一个分布式的账本,多个独立的分布式节点保存相同的记录,是一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。每当有新数据,如交易记录需要写入区块链时,会将新数据汇总到一个区块中,添加在区块链已有区块的末端,并通过共识算法保证每个节点新添加的区块是完全相同的。其中,每个区块(block)内均会记录一条或多条交易记录,并在该区块头部记录前一区块的验证信息,如哈希值。通过上述链式结构,将所有区块按照交易记录的先后顺序首尾相连,从而形成一个完整的区块链账本。由于区块链中的每个区块均记录有前一区块的验证信息,若想修改某一个区块,则需要修改该区块以及该区块之前的所有区块,并且需要修改一半以上的分布式节点上存储的同一个区块链账本,技术难度较大,因此区块链具有难以被篡改的特性。基于上述原因,区块链技术可以解决基于可信赖的第三方中心化验证机构来处理交易记录的通信系统中,所有节点的交易记录均需要少数第三方中心化验证机构完成身份验证,容易被恶意篡改,且当节点数量较多和/或交易记录的数据量较大时,容易造成第三方中心化验证机构的拥塞而导致效率低下的问题。也就是说,基于区块链技术,可以在交易双方之间直接达成一致性交易,不需要上述第三方中心化中介机构的参与,从而提高交易的可靠性和效率。
[0038] 鉴于区块链技术的独特优势,也被引入物联网领域。图1为一种用于存储区块链账本的分布式系统的结构示意图。
[0039] 如图1所示,该分布式系统共计包括6个节点:节点1-节点6。上述节点可以为物联网通信系统中的一台设备,如传感器、监控设备、转发设备等,此处不做限定。
[0040] 在如图1所示的分布式系统中,有的节点之间存在直接的通信连接,如节点1与节点2、节点3与节点6。当然,也有的节点之间不存在直接的通信连接,如节点4与节点6、节点2与节点5。其中,上述通信连接可以是有线的,也可以是无线的,此处不做限定。
[0041] 下面以图1所示的分布式系统中的节点3为例,详细介绍现有的区块链账本的存储方法。
[0042] 图2为一种现有的区块链账本的存储方法的流程示意图。
[0043] 如图2所示,该方法可以包括S201-S203:
[0044] S201,节点3接收并存储区块链账本副本。
[0045] 其中,区块链账本副本包含头区块和至少一个数据区块,头区块包含区块链的验证信息,数据区块存储有一条或多条交易记录。
[0046] 上述节点3接收的区块链账本副本,可以是相邻节点,如节点2、节点4、节点6中的一个,发送的,也可以物联网的主控设备下发的,此处不再限定。
[0047] S202,节点3根据新数据更新其存储的区块链账本副本。
[0048] 其中,新数据包括新增交易记录。该新增交易记录可以是节点3在完成新交易的过程中产生的,也可以是从上游相邻节点接收的新增交易记录。
[0049] S203,节点3向其下游相邻节点转发上述新数据,以便其下游相邻节点更新区块链账本副本。
[0050] 需要说明的是,上述上游相邻节点和下游相邻节点是以某一个新数据的传输方向为参考的。例如,如图1所示,假定新数据A是由节点2(源节点)生成的,节点2需要将新数据A发送给节点1、节点3和节点6,则节点2为节点1、节点3和节点6的上游相邻节点,相应地,节点1、节点3和节点6为节点2的下游相邻节点。同理,节点3还需要将其接收到的新数据A向节点4转发,则节点4为节点3的下游相邻节点。
[0051] 容易理解,假定新数据B是由节点4(源节点)生成的,节点4需要向节点3和节点5发送新数据B,则节点3和节点5为节点4的下游相邻节点,而节点4为节点3和节点5的上游相邻节点。
[0052] 然而,上述节点1-节点6中的每个节点,均需要存储一个完整的区块链账本副本,方能确保基于区块链的交易的可靠性和去中心化。鉴于物联网中部分节点的存储能力有限,随着区块链账本的数据量较大时,部分节点可能没有足够存储空间存储一个完整的区块链账本副本。除存储区块账本副本之外,上述节点还需要处理交易之外的其他业务,也有可能导致部分节点没有足够存储空间存储一个完整的区块链账本副本。此外,还可能存在部分节点可用存储空间不足,同时另一部分节点存在大量存储空间闲置的情况,即不同节点之间的存储空间无法平衡利用的问题。上述原因均会导致物联网中实际存储的区块链账本副本的数量下降,从而导致现有物联网中基于区块链的交易的安全性和可靠性下降。
[0053] 为了解决上述问题,本申请实施例提供一种新的物联网架构,并基于该物联网架构,提供一种区块链账本的存储方法。
[0054] 下面将结合附图,对本申请中的技术方案进行描述。
[0055] 本申请实施例的技术方案可以应用于各种分布式通信系统,如以有线或无线方式连接的物联网(internet of things,IoT)系统,机器通信(machine type communication,MTC)系统等。
[0056] 本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
[0057] 另外,在本申请实施例中,“示例”、“例如”用于表示作例子、例证或说明。本申请中被描述为“示例”、“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
[0058] 本申请实施例中,“的(of)”,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
[0059] 本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
[0060] 本申请实施例以物联网系统为例进行说明。应当指出的是,本申请实施例提供的技术方案还可以应用于其他分布式通信系统,如长期演进(long term evolution,LTE)系统、第四代移动通信技术(4G)、或第五代移动通信技术(5G)等,相应的名称也可以用其他分布式通信系统中的对应功能的名称进行替代。
[0061] 为便于理解本申请实施例,首先以图3中示出的通信系统为例详细说明适用于本申请实施例的分布式通信系统。如图3所示,该分布式通信系统包括多个节点簇。其中,每个节点簇包括一个簇头节点,以及一个或多个普通节点。簇头节点用于与分布式通信系统中的其他节点簇通信,如接收一个区块链账本,以及存储区块链账本中的头区块,普通节点用于存储区块链账本中的数据区块。头区块用于存储区块链账本的验证消息,以及每个数据区块的存储信息。数据区块用于前一个数据区块的验证消息,以及一条或多条交易记录。
[0062] 需要说明的是,图3中的任意两个普通节点之间可以直接通信,如普通节点2和普通节点3,也可以不能直接通信,而是通过簇头节点间接通信,如普通节点1与普通节点4,本申请实施例对此不做限定。
[0063] 其中,上述簇头节点和普通节点可以为上述分布式通信系统中的网络设备,如物联网中的传感器、监控设备、转发设备等。
[0064] 应理解,图3仅为便于理解而示例的简化示意图,该通信系统中还可以包括其他网络设备,图3中未予以画出。
[0065] 图4为本申请实施例提供的区块链账本的存储方法的流程示意图。该方法应用于第一簇头节点,第一簇头节点属于第一节点簇,第一节点簇用于存储区块链账本的第一副本。其中,区块链账本包括一个头区块和至少一个数据区块。第一节点簇还包括至少一个普通节点。如图3所示,第一节点簇可以为图3中的任意一个节点簇,第一簇头节点可以为上述任意一个节点簇中的簇头节点。下面以节点簇1中的簇头节点为例,详细说明本申请提供的区块链账本的存储方法。
[0066] 如图4所示,该方法可以包括S401-S403:
[0067] S401,接收第一副本和至少一个普通节点上报的可用存储空间大小。
[0068] 其中,第一副本可以是主控设备(图3中未画出)下发的区块链账本副本,也可以是与第一节点簇相邻的其他节点簇,如图3中的节点簇2或节点簇4中的簇头节点转发的区块链账本副本,此处不做限定。
[0069] 可用存储空间大小可以由至少一个普通节点周期性上报给簇头节点,也可以是簇头节点通过查询的方式从上述至少一个普通节点获取的,此处不再限定。
[0070] S402,根据至少一个普通节点上报的可用存储空间大小和第一副本的数据量,确定至少一个普通节点中每个普通节点需要存储的数据区块。
[0071] 在一种可能的设计方法中,可以根据不同普通节点的可用存储空间大小,为不同的普通节点分配不同数量的数据区块。例如,可以按照至少一个普通节点上报的可用存储空间大小,按比例分配每个普通节点需要存储数据区块。
[0072] 示例性地,假定第一副本共计包括4个数据区块:数据区块1-数据区块4,普通节点1和普通节点3分别可以存储1个数据区块,普通节点4可以存储2个数据区块,而普通节点2可用存储空间不足,不能存储数据区块,则如图5A所示,可以按照采用如下方式为每个普通节点分配需要存储的数据区块:普通节点1存储数据区块1,普通节点2不存储数据区块,普通节点3存储数据区块2,普通节点4存储数据区块3和数据区块4。容易理解,也可以采用其他的数据区块分配方式,如普通节点4存储数据区块1和数据区块2,而数据区块3和数据区块4分别由普通节点1和普通节点3存储,此处不做限定。
[0073] 需要说明的是,为了不影响除存储第一副本之外的其他业务,如存储其他区块链账本的副本、传输其他业务数据等,在为每个普通节点分配需要存储的数据区块的过程中,还需要预留预设比例或预设数量的存储空间。
[0074] S403,存储头区块,以及至少一个数据区块的存储信息。
[0075] 其中,存储信息用于指示每个数据区块与其所在的普通节点的对应关系。
[0076] 示例性地,如图5A所示,簇头节点用于存储头区块,如区块0。其中,头区块包括第一副本的账本验证信息,如区块链账本的主哈希值。
[0077] 此外,如图5A所示,簇头节点还用于存储第一副本的所有数据区块的存储信息。其中,一个数据区块的存储信息可以包括如下内容:存储该数据区块的普通节点的节点标识和存储路径。容易理解,节点标识可以为节点名称、互联网(internet protocol,IP)地址、媒体接入控制(media access control,MAC)地址等,也可以为上述多种节点标识的组合,用于区分不同的普通节点。存储路径可以为存储数据区块的盘符、文件夹名称等组成的详细路径,用于区分同一普通节点内不同数据区块占用的存储空间。
[0078] 当然,当有新数据区块需要存储,如第一簇头节点接收到其他簇头节点发送的数据区块时,第一簇头节点还需要指示第一节点簇内的某个普通节点存储该新数据区块,并在第一簇头节点本地存储的数据区块的存储信息的尾部增加该新数据区块的存储信息。
[0079] 需要说明的是,除存储头区块和所有数据区块的存储信息之外,若第一簇头节点的可用存储空间较大,则第一簇头节点还可以存储数据区块,本申请对此不做限定。
[0080] 本申请提供的区块链账本的存储方法,第一簇头节点能够根据第一节点簇内至少一个普通节点上报的可用存储空间总量,以及需要存储的区块链账本副本的数据量,动态地确定每个普通节点需要存储的数据区块,并在第一簇头节点存储区块链账本的头区块和每个数据区块的存储信息,从而达到利用第一节点簇内的多个节点的存储能力共同完成一个区块链账本副本的存储工作,解决了由于单个节点的存储空间不足以存储一个区块链账本副本,从而导致无法存储区块链账本副本的问题,能够提高区块链技术的安全性和可靠性。
[0081] 实际应用中,第一簇头节点还可以根据同一节点簇内所有普通节点上报的可用存储空间的变化情况,动态调整不同普通节点上存储的数据区块的数量,以便进一步提高存储区块链账本的可靠性。因此,在一种可能的设计方法中,上述至少一个普通节点包括第一普通节点和第二普通节点。上述区块链账本的存储方法,还可以包括如下步骤:
[0082] 将第一数据区块集合中的部分或全部数据区块转存至第二普通节点。
[0083] 例如,如图5B所示,假定普通节点1的可用存储空间不足以存储数据区块1,而普通节点3的可用存储空间还可以存储更多的数据区块,则可以将原本存储于普通节点1中的数据区块1转存至普通节点3。具体地,簇头节点可以指示普通节点3直接从普通节点1获取数据区块1,也可以由簇头节点从普通节点1获取到数据区块1后转发给普通节点3,此处不作限定。
[0084] 又例如,如图5C所示,假定普通节点2的可用存储空间也足以存储至少一个数据区块了,则簇头节点可以指示将原本存储在普通节点4中的数据区块2转存至普通节点2,以便平衡节点簇内所有普通节点存储的数据区块的数量。
[0085] 需要说明的是,当一个普通节点上存储有多个数据区块时,占用的存储空间靠前的数据区块包含的交易记录,可以在占用的存储空间靠后的数据区块包含的交易记录之前,也可以在占用的存储空间靠后的数据区块包含的交易记录之后。本申请对此不做限定,只要簇头节点中存储的数据区块的存储信息的顺序,与不同数据区块中包含的交易记录的顺序一致就可以了。
[0086] 例如,如图5A和图5B所示,对于普通节点4,数据区块3存储在数据区块4之前,且数据区块3包含的交易记录也在数据区块4包含的交易记录之前。又例如,如图5B所示,对于普通节点3,数据区块1存储在数据区块2之后,但数据区块1包含的交易记录也在数据区块2包含的交易记录之前。
[0087] 容易理解,无论出于何种考量转存数据区块,均需要簇头节点修改转存的数据区块的存储信息。
[0088] 进一步地,上述动态调整同一节点簇内不同普通节点之间存储的数据区块数量的方法也可以推广至不同的节点簇之间,以便进一步提高区块链账本的可靠性。因此,在另一种可能的设计方法中,假定上述第一节点簇与第二节点簇存在通信连接,第二节点簇用于存储区块链账本的第二副本,第二节点簇包括第二簇头节点,则上述区块链账本的存储方法,还可以包括如下步骤:
[0089] 向第二簇头节点发送第一副本中的部分数据区块,以便第二节点簇代为存储部分数据区块。
[0090] 示例性地,当第一节点簇的可用存储空间总量不足以存储第一副本的所有数据区块时,第一簇头节点可以将第一副本的部分数据区块,交由第二节点簇代为暂存。
[0091] 具体地,如图6所示,上述向第二簇头节点发送第一副本中的部分数据区块,以便第二节点簇代为存储部分数据区块,可以具体实现为S601-S606:
[0092] S601,第一簇头节点接收第二簇头节点发送的可用共享存储信息。
[0093] 其中,可用共享存储信息用于指示第二节点簇内的可用共享存储空间总量。示例性地,第二簇头节点可以采用广播、组播等方式向与第二节点簇相邻的其他节点簇的簇头节点发送可用共享存储信息。
[0094] S602,第一簇头节点向第二簇头节点发送共享存储请求。
[0095] 其中,共享存储请求用于请求第二节点簇代为暂存第一副本中的部分数据区块。
[0096] 示例性地,第一簇头节点可以采用广播、组播等方式向与第一节点簇相邻、且能够为其提供部分数据区块暂存服务的其他节点簇的簇头节点发送共享存储请求。
[0097] 具体地,第一簇头节点可以根据其需要其他节点簇代为暂存的部分数据区块的数据量,以及其他节点簇提供的可用关系存储空间总量,确定可以为其提供部分数据区块暂存服务的节点簇,并向上述暂存服务提供方发生共享存储请求。
[0098] S603,第一簇头节点接收第二簇头节点发送的共享存储响应。
[0099] 其中,共享存储响应用于指示第二簇头节点是否接受共享存储请求。
[0100] 容易理解,共享存储请求也可以携带第一簇头节点期望其他节点簇可代为暂存的部分数据区块的数量,或数据量,以方便提供方决策是否需要接受共享存储请求。
[0101] S604,若第二簇头节点接受共享存储请求,则第一簇头节点向第二簇头节点发送需要代为暂存的部分数据区块。
[0102] 具体地,第一簇头节点可以在所有接受共享存储请求的其他节点簇中选择一个,作为代为暂存部分数据区块服务的提供方,如第二节点簇,并向该提供方的簇头节点,如第二簇头节点发送需要代为暂存的部分数据区块。
[0103] S605,第一簇头节点接收第二簇头节点发送的需要代为暂存的部分数据区块的存储信息。
[0104] S606,第一簇头节点修改其本地存储的需要代为暂存的部分数据区块的存储信息。
[0105] 第二簇头节点在指示第二节点簇内的普通节点代为存储上述部分数据区块后,会向第一簇头节点发送上述部分数据区块的存储信息。
[0106] 需要说明的是,与上述部分数据区块在第一节点簇内存储时的存储信息不同,上述部分数据区块在第二节点簇内存储时的存储信息可以只包括第二簇头节点的节点标识,如第二簇头节点的名称、IP地址、MAC地址等,也可以包括第二簇头节点的节点标识,第二节点簇内代为存储上述部分数据区块的普通节点的节点标识。
[0107] 容易理解,当第一节点簇内的可用存储空间足以存储上述第二节点簇代为暂存的部分数据区块的时,第一簇头节点需要将上述部分数据区块取回,以便重新在第一节点簇内存储。因此,如图6所示,在一种可能的设计方法中,第一簇头节点还需要执行S607-S609:
[0108] S607,第一簇头节点获取并存储第二节点簇代为暂存的部分数据区块。
[0109] S608,第一簇头节点再次修改本地存储的上述需要代为暂存的部分数据区块的存储信息。
[0110] S609,第一簇头节点向第二节点簇发送共享存储释放消息,以便第二节点簇释放上述部分数据区块临时占用的共享存储空间。
[0111] 其中,共享存储释放消息用于通知第二簇头节点释放第二节点簇内用于暂存部分数据区块的共享存储空间。
[0112] 可选地,上述共享存储响应还包括共享到期时间。相应地,上述区块链账本的存储方法,还可以包括如下步骤:
[0113] 当达到共享到期时间时,若第一节点簇仍然没有足够的存储空间用于存储上述第二节点簇代为存储的部分数据区块,则第一簇头节点还需要向第二簇头节点发送共享存储续约请求。
[0114] 其中,共享存储续约请求用于请求第二节点簇继续代为暂存部分数据区块。
[0115] 可选地,上述共享存储响应还包括共享到期时间。相应地,当达到共享到期时间时,若第二节点簇仍然有足够的共享存储空间,则第二簇头节点也可以主动询问第一簇头节点是否还需要代为存储上述部分数据区块。因此,上述区块链账本的存储方法,还可以包括如下步骤:
[0116] 第一簇头节点接收第二簇头节点发送的共享存储续约通知。
[0117] 其中,共享存储续约通知用于当达到共享到期时间时,第二簇头节点询问第一簇头节点是否需要第二节点簇继续代为暂存部分数据区块。
[0118] 容易理解,倘若第二节点簇的存储空间不足以同时存储其本身需要存储的区块链账本的第二副本和上述代为暂存的部分数据区块,则第二簇头节点需要通知第一簇头节点另寻可提供代为暂存服务的其他节点簇。也就是说,对于每一个节点簇,其本身需要存储的区块链账本副本的存储优先级要高于其代为暂存的部分数据区块的存储优先级。因此,上述区块链账本的存储方法,还可以包括如下步骤:
[0119] 第一簇头节点接收第二节点簇发送的共享存储解约通知。
[0120] 其中,共享存储解约通知用于通知第一簇头节点第二节点簇不再代为暂存部分数据区块。
[0121] 以上结合图4-图6详细说明了本申请实施例的区块链账本的存储方法。以下结合图7-图8详细说明本申请实施例提供的簇头节点和节点簇。
[0122] 图7为本申请实施例提供的一种簇头节点。该簇头节点属于第一节点簇。第一节点簇用于存储区块链账本的第一副本。区块链账本包括一个头区块和至少一个数据区块。上述第一节点簇还包括至少一个普通节点。
[0123] 如图7所示,上述簇头节点700包括:通信模块701、处理模块702和存储模块703。
[0124] 其中,通信模块701,用于接收第一副本和至少一个普通节点上报的可用存储空间大小。
[0125] 处理模块702,用于根据至少一个普通节点上报的可用存储空间大小和第一副本的数据量,确定至少一个普通节点中每个普通节点需要存储的数据区块。
[0126] 处理模块702,用于存储头区块,以及至少一个数据区块的存储信息;其中,存储信息用于指示每个数据区块与其所在的普通节点的对应关系。
[0127] 在一种可能的设计中,上述至少一个普通节点包括第一普通节点和第二普通节点。相应地,上述处理模块702,还用于将第一数据区块集合中的部分或全部数据区块转存至第二普通节点。
[0128] 在另一种可能的设计中,上述区块链账本的存储装置,与第二节点簇存在通信连接,第二节点簇用于存储区块链账本的第二副本,第二节点簇包括第二簇头节点。相应地,上述通信模块701,还用于向第二簇头节点发送第一副本中的部分数据区块,以便第二节点簇代为存储部分数据区块。
[0129] 在一种可能的设计中,上述通信模块701,还用于接收第二簇头节点发送的可用共享存储信息;其中,可用共享存储信息用于指示第二节点簇内的可用共享存储空间总量。上述通信模块701,还用于向第二簇头节点发送共享存储请求。其中,共享存储请求用于请求第二节点簇代为暂存第一副本中的部分数据区块。上述通信模块701,还用于接收第二簇头节点发送的共享存储响应;其中,共享存储响应用于指示第二簇头节点是否接受共享存储请求。上述通信模块701,还用于若第二簇头节点接受共享存储请求,则向第二簇头节点发送部分数据区块。上述处理模块702,还用于修改存储信息。
[0130] 可选地,上述处理模块702,还用于获取并存储第二节点簇代为暂存的部分数据区块。处理模块702,还用于修改存储信息。通信模块701,还用于向第二节点簇发送共享存储释放消息。其中,共享存储释放消息用于通知第二簇头节点释放第二节点簇内用于暂存部分数据区块的共享存储空间。
[0131] 可选地,上述共享存储响应还包括共享到期时间。相应地,上述通信模块701,还用于当达到共享到期时间时,向第二簇头节点发送共享存储续约请求。其中,共享存储续约请求用于请求第二节点簇继续代为暂存部分数据区块。
[0132] 可选地,上述共享存储响应还包括共享到期时间。相应地,上述通信模块701,还用于接收第二簇头节点发送的共享存储续约通知;其中,共享存储续约通知用于当达到共享到期时间时,第二簇头节点询问簇头节点是否需要第二节点簇继续代为暂存部分数据区块。
[0133] 可选地,上述通信模块701,还用于接收第二节点簇发送的共享存储解约通知。其中,共享存储解约通知用于通知第一簇头节点第二节点簇不再代为暂存部分数据区块。
[0134] 需要说明的是,区块链账本的存储装置700中的第一簇头节点可以是网络设备,也可以是设置于该网络设备内部的芯片,本申请对此不做限定。
[0135] 图8为本申请实施例提供的另一种簇头节点800。该簇头节点800属于第一节点簇;第一节点簇用于存储区块链账本的第一副本。该区块链账本包括一个头区块和至少一个数据区块。第一节点簇还包括至少一个普通节点。
[0136] 如图8所示,簇头节点800包括处理器801和收发器802,处理器801与收发器802和存储器803耦合。
[0137] 存储器803,用于存储计算机程序。
[0138] 处理器801,用于执行存储器803中存储的计算机程序,使得簇头节点800执行上述方法实施例所述的区块链账本的存储方法。
[0139] 上述簇头节点800可以是网络设备,也可以是网络设备内的芯片。所述处理器801与收发器802和存储器803耦合,是指处理器801与收发器802和存储器803之间存在信号连接,如可以通过总线804连接。其中,存储器803可以是簇头节点800内部的存储器,也可以是位于簇头节点800外部且与簇头节点800存在信号连接的外部存储器,此处不做限定。
[0140] 需要说明的是,簇头节点800可以是网络设备,也可以是设置于该网络设备内部的芯片,本申请对此不做限定。
[0141] 本申请提供一种区块链账本的存储系统,其包括一个或多个节点簇,其中,所述节点簇包含有一个上述装置实施例所述的簇头节点。
[0142] 本申请提供一种可读存储介质,存储有程序或指令,当程序或指令在计算机上运行时,使得计算机执行上述方法实施例所述的区块链账本的存储方法。
[0143] 本申请提供一种计算机程序产品,包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如上述方法实施例所述的区块链账本的存储方法。
[0144] 应理解,在本申请实施例中的处理器可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0145] 还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。
[0146] 上述实施例,可以全部或部分地通过软件、硬件(如电路)、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
[0147] 应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A、B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
[0148] 本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b或c中的至少一项(个),可以表示下述项之一:a;b;c;a和b;a和c;b和c;a、b和c,其中a、b、c可以是单个,也可以是多个。
[0149] 应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0150] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0151] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0152] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0153] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0154] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0155] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0156] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。