区块链中的区块存储方法及装置与流程

文档序号:12132634阅读:290来源:国知局
区块链中的区块存储方法及装置与流程

本发明涉及互联网技术领域,具体涉及一种区块链中的区块存储方法及装置。



背景技术:

在现有的区块链网络中主要有两类节点需要保存完整的区块链信息,这两类节点分别是完整节点和矿工节点。这两类节点的每个节点都需要维护一个区块链的本地副本,其中包含了自2009年比特币系统以来的全部区块。随着比特币交易数量的不断增多,区块链越来越长,区块链要求的存储空间也随之逐渐增加,由此可知,完整节点和矿工节点的存储要求也在逐渐增加。具体地,完整节点和矿工节点需要和区块链网络中的区块链进行同步,下载区块链中的完整区块,从而使完整节点和矿工节点能够维护一个区块链的本地副本。

同时,随着比特币交易数量的不断增多,单位时间需要处理的交易的数量增多,单个区块所包含的交易数量也需要增加,导致单个区块大小增加,从而增加了网络传输的压力。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的区块链中的区块存储方法及装置。

根据本发明的一个方面,提供了一种区块链中的区块存储方法,该方法由矿工节点执行,该方法包括:

将内存池中的交易信息打包成区块;

将区块中的第一区块头信息广播至区块链网络;其中,第一区块头信息包括:区块交易编号哈希值;

根据区块中的第一区块头信息和交易编号信息,生成与第一区块头信息对应的第一哈希表;

根据区块中的交易编号信息和交易内容信息,生成与第一区块头信息对应的第二哈希表;

将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。

根据本发明的另一方面,提供了一种区块链中的区块存储装置,该装置设置于矿工节点中,该装置包括:

打包模块,用于将内存池中的交易信息打包成区块;

广播模块,用于将区块中的第一区块头信息广播至区块链网络;其中,第一区块头信息包括:区块交易编号哈希值;

第一生成模块,用于根据区块中的第一区块头信息和交易编号信息,生成与第一区块头信息对应的第一哈希表;

第二生成模块,用于根据区块中的交易编号信息和交易内容信息,生成与第一区块头信息对应的第二哈希表;

上传模块,用于将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。

根据本发明提供的技术方案,将内存池中的交易信息打包成区块,接着将区块中的第一区块头信息广播至区块链网络,该第一区块头信息包括:区块交易编号哈希值,然后根据区块中的第一区块头信息和交易编号信息,生成与第一区块头信息对应的第一哈希表,根据区块中的交易编号信息和交易内容信息,生成与第一区块头信息对应的第二哈希表,最后将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。根据本发明提供的技术方案,在区块完成打包后,仅将区块的区块头信息广播至了区块链网络,并没有将整个区块的内容进行广播,从而减少了广播的内容,有效地减轻了网络传输的压力;并且利用分布式存储网络保存区块信息,有效地减轻了单个节点的存储压力。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明提供的区块链中的区块存储方法实施例一的流程示意图;

图2示出了本发明提供的区块链中的区块存储方法实施例二的信令流程图;

图3示出了本发明提供的区块链中的区块存储装置实施例一的功能结构示意图;

图4示出了本发明提供的区块链中的区块存储装置实施例二的功能结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了本发明提供的区块链中的区块存储方法实施例一的流程示意图,该方法由矿工节点执行,如图1所示,该方法包括如下步骤:

步骤S100,将内存池中的交易信息打包成区块。

具体地,矿工节点在接收到新的交易信息之后,会对该交易信息进行验证,验证该交易信息的合法性,验证通过则将其放到内存池当中。当收集到一定数量的交易信息后,矿工节点将内存池中的交易信息打包成区块,打包完成的区块包括第一区块头信息、交易编号信息(TXID)和交易内容信息。

步骤S101,将区块中的第一区块头信息广播至区块链网络。

在将内存池中的交易信息打包成区块之后,将该区块中的第一区块头信息广播至区块链网络,以便区块链网络中的其他矿工节点或完整节点获知第一区块头信息。

其中,第一区块头信息包括:版本信息、父区块哈希值、根节点值、时间戳信息、难度目标信息、区块交易编号哈希值和交易计数器等信息。具体地,版本信息为版本号,用于表示软件或协议的更新情况;父区块哈希值为引用区块链中父区块的哈希值;根节点值为该区块中交易信息对应的梅克尔树结构的根节点的哈希值;时间戳信息记载了该区块产生的时间;难度目标信息记载了该区块工作量证明算法的难度目标;区块交易编号哈希值是对该区块中的所有的交易编号信息按预设顺序排列的排列结果进行哈希计算得到的,具体地,本领域技术人员可根据实际需要设置预设顺序,此处不做限定,例如,预设顺序可为交易产生的时间先后顺序;交易计数器用于计算该区块中所包含的交易的数量。

步骤S102,根据区块中的第一区块头信息和交易编号信息,生成与第一区块头信息对应的第一哈希表。

具体地,可根据区块中的第一区块头信息中的区块交易编号哈希值和该区块中的所有的交易编号信息按预设顺序排列的排列结果,生成与第一区块头信息对应的第一哈希表。

步骤S103,根据区块中的交易编号信息和交易内容信息,生成与第一区块头信息对应的第二哈希表。

具体地,在步骤S103中,可根据区块中的交易编号信息和与交易编号信息对应的交易内容信息,生成与第一区块头信息对应的第二哈希表。

步骤S104,将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。

在生成了与第一区块头信息对应的第一哈希表和第二哈希表之后,在步骤S104中,将这两个哈希表上传至分布式存储网络,从而将区块信息上传至了分布式存储网络。具体地,分布式存储网络可以为DHT(分布式哈希表,Distributed Hash Table)网络。

可选地,在生成了与第一区块头信息对应的第一哈希表之后,就可将该第一哈希表上传至分布式存储网络;在生成了与第一区块头信息对应的第二哈希表之后,就可将该第二哈希表上传至分布式存储网络。

本发明并不对步骤S101的具体执行顺序进行限定,例如,步骤S101可以与步骤S102同时执行,也可以先执行步骤S102,再执行步骤S101。

根据本发明实施例提供的区块链中的区块存储方法,将内存池中的交易信息打包成区块,接着将区块中的第一区块头信息广播至区块链网络,其中,该第一区块头信息包括:区块交易编号哈希值,然后根据区块中的第一区块头信息和交易编号信息,生成与第一区块头信息对应的第一哈希表,根据区块中的交易编号信息和交易内容信息,生成与第一区块头信息对应的第二哈希表,最后将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。根据本发明提供的技术方案,在区块完成打包后,仅将区块的区块头信息广播至了区块链网络,并没有将整个区块的内容进行广播,从而减少了广播的内容,有效地减轻了网络传输的压力;并且利用分布式存储网络保存区块信息,有效地减轻了单个节点的存储压力。

图2示出了本发明提供的区块链中的区块存储方法实施例二的信令流程图,该方法由矿工节点执行,如图2所示,该方法包括如下步骤:

步骤S200,将内存池中的交易信息打包成区块。

其中,矿工节点在接收到新的交易信息之后,验证该交易信息的合法性,验证通过则将其放到内存池当中。当收集到一定数量的交易信息后,矿工节点将内存池中的交易信息打包成区块,其中,打包完成的区块包括第一区块头信息、交易编号信息和交易内容信息。

步骤S201,将区块中的第一区块头信息广播至区块链网络。

在将内存池中的交易信息打包成区块之后,将该区块中的第一区块头信息广播至区块链网络,以便区块链网络中的其他矿工节点或完整节点获知第一区块头信息。其中,第一区块头信息包括:区块交易编号哈希值等信息。区块交易编号哈希值是对该区块中的所有的交易编号信息按预设顺序排列的排列结果进行哈希计算得到的。具体地,预设顺序可为交易产生的时间先后顺序。

可选地,本发明并不对步骤S201的具体执行顺序进行限定,例如,步骤S201可以与步骤S202同时执行,也可以先执行步骤S202,再执行步骤S201。

步骤S202,将第一区块头信息中的区块交易编号哈希值作为数据键,将区块中的所有的交易编号信息按预设顺序排列的排列结果作为数据键对应的数据值,生成与第一区块头信息对应的第一哈希表。

具体地,将第一区块头信息中的区块交易编号哈希值作为key,区块中的所有的交易编号信息按预设顺序排列的排列结果作为value,然后将区块交易编号哈希值与排列结果组合为key-value形式,生成与第一区块头信息对应的第一哈希表。

步骤S203,将区块中的交易编号信息作为数据键,将与交易编号信息对应的交易内容信息作为数据键对应的数据值,生成与第一区块头信息对应的第二哈希表。

具体地,将区块中的交易编号信息作为key,与该交易编号信息对应的交易内容信息作为value,然后将交易编号信息与交易内容信息组合为key-value形式,生成与第一区块头信息对应的第二哈希表。

步骤S204,将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。

在生成了与第一区块头信息对应的第一哈希表和第二哈希表之后,在步骤S204中,将这两个哈希表上传至分布式存储网络。

可选地,在生成了与第一区块头信息对应的第一哈希表之后,就可将该第一哈希表上传至分布式存储网络;在生成了与第一区块头信息对应的第二哈希表之后,就可将该第二哈希表上传至分布式存储网络。

步骤S205,从区块链网络获取第二区块头信息。

当矿工节点需要同步完整的区块链到本地时,从区块链网络获取第二区块头信息。其中,第二区块头信息为区块链网络中所包括的区块头信息。

步骤S206,根据所获取的第二区块头信息中的区块交易编号哈希值,从分布式存储网络下载与第二区块头信息对应的第一哈希表。

步骤S207,根据与第二区块头信息对应的第一哈希表,从分布式存储网络下载与第二区块头信息对应的第二哈希表。

具体地,由于与第二区块头信息对应的第一哈希表是由第二区块头信息中的区块交易编号哈希值作为数据键,由第二区块头信息对应的区块中的所有的交易编号信息按预设顺序排列的排列结果作为数据键对应的数据值而生成的,而与第二区块头信息对应的第二哈希表是由与第二区块头信息对应的区块中的交易编号信息作为数据键,与交易编号信息对应的交易内容信息作为数据键对应的数据值而生成的,则在获取了第二区块头信息之后,在步骤S206中,根据第二区块头信息中的区块交易编号哈希值,从分布式存储网络下载与第二区块头信息对应的第一哈希表,那么在步骤S207中,根据该第一哈希表就可获得与第二区块头信息对应的区块中的所有的交易编号信息按预设顺序排列的排列结果,从而得到了该区块中的所有的交易编号信息,那么可根据交易编号信息从分布式存储网络下载与第二区块头信息对应的第二哈希表,从而根据该第二哈希表就可获得该区块中的交易内容信息。

步骤S208,利用第二区块头信息和与第二区块头信息对应的第一哈希表和第二哈希表,组合得到与第二区块头信息对应的区块。

具体地,通过与第二区块头信息对应的第一哈希表和第二哈希表可获得与第二区块头信息对应的区块中的所有的交易编号信息和交易内容信息,那么将第二区块头信息、交易编号信息和交易内容信息进行组合,得到与第二区块头信息对应的区块,所得到的区块即为完整的区块,从而将完整的区块链同步到了本地。

可选地,在本实施例的一个可能的实现方式中,矿工节点在接收到新的交易信息之后,验证该交易信息的合法性,验证通过则直接将该交易信息对应的交易编号信息作为数据键,将该交易信息对应的交易内容信息作为数据键对应的数据值,生成第三哈希表,然后将第三哈希表上传至分布式存储网络。

可选地,矿工节点在接收到新的交易信息之后,验证该交易信息的合法性,验证通过还可将该交易信息对应的交易编号信息保存至内存池中或者广播至区块链网络。

另外,根据本发明提供的技术方案,当完整节点需要同步完整的区块链到本地时,完整节点可从区块链网络获取区块头信息,接着根据所获取的区块头信息中的区块交易编号哈希值,从分布式存储网络下载与区块头信息对应的第一哈希表,根据该第一哈希表,从分布式存储网络下载与该区块头信息对应的第二哈希表,然后利用区块头信息和与区块头信息对应的第一哈希表和第二哈希表,组合得到与区块头信息对应的区块,从而将完整的区块链同步到了本地,那么当完整节点需要验证交易信息时,就可根据完整的区块链中的区块信息进行验证。

可选地,完整节点可从区块链网络获取区块头信息,接着根据所获取的区块头信息中的区块交易编号哈希值,从分布式存储网络下载与区块头信息对应的第一哈希表,从而得到了该区块中的所有的交易编号信息,当完整节点需要验证交易信息时,再根据交易编号信息从分布式存储网络下载与之对应的第二哈希表,从而得到了交易内容信息,然后就可进行验证。

可选地,当完整节点与完整的区块链不同步时,只需同步区块链网络中的区块头信息,那么当完整节点需要验证交易信息时,可以通过向矿工节点或区块链网络中其他包含完整的区块链的节点查询并下载相关的哈希表,从而得到相关的区块信息。完整节点只需使用已有区块头信息对下载的相关的区块信息进行验证即可。

根据本发明提供的区块链中的区块存储方法,在区块完成打包后,仅将区块的区块头信息广播至了区块链网络,并没有将整个区块的内容进行广播,从而减少了广播的内容,有效地减轻了网络传输的压力;并且利用分布式存储网络保存区块信息,有效地减轻了单个节点的存储压力;另外,当需要同步完整的区块链到本地时,只需从区块链网络获取区块头信息,然后利用区块头信息从分布式存储网络下载区块信息,进而方便地得到了完整的区块。

图3示出了本发明提供的区块链中的区块存储装置实施例一的功能结构示意图,该区块链中的区块存储装置可设置于矿工节点中,如图3所示,该区块链中的区块存储装置300包括:打包模块310、广播模块320、第一生成模块330、第二生成模块340和上传模块350。

打包模块310用于:将内存池中的交易信息打包成区块。

具体地,矿工节点在接收到新的交易信息之后,会对该交易信息进行验证,验证该交易信息的合法性,验证通过则将其放到内存池当中。当收集到一定数量的交易信息后,打包模块310将内存池中的交易信息打包成区块,打包完成的区块包括第一区块头信息、交易编号信息和交易内容信息。

广播模块320用于:将区块中的第一区块头信息广播至区块链网络。

其中,第一区块头信息包括:版本信息、父区块哈希值、根节点值、时间戳信息、难度目标信息、区块交易编号哈希值和交易计数器等信息。

第一生成模块330用于:根据区块中的第一区块头信息和交易编号信息,生成与第一区块头信息对应的第一哈希表。

第二生成模块340用于:根据区块中的交易编号信息和交易内容信息,生成与第一区块头信息对应的第二哈希表。

上传模块350用于:将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。

在生成了与第一区块头信息对应的第一哈希表和第二哈希表之后,上传模块350将这两个哈希表上传至分布式存储网络,从而将区块信息上传至了分布式存储网络。具体地,分布式存储网络可以为DHT网络。

根据本发明实施例提供的区块链中的区块存储装置,该装置可设置于矿工节点中,打包模块将内存池中的交易信息打包成区块,广播模块将区块中的第一区块头信息广播至区块链网络,第一生成模块根据区块中的第一区块头信息和交易编号信息,生成与第一区块头信息对应的第一哈希表,第二生成模块根据区块中的交易编号信息和交易内容信息,生成与第一区块头信息对应的第二哈希表,上传模块将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。根据本发明提供的技术方案,在区块完成打包后,仅将区块的区块头信息广播至了区块链网络,并没有将整个区块的内容进行广播,从而减少了广播的内容,有效地减轻了网络传输的压力;并且利用分布式存储网络保存区块信息,有效地减轻了单个节点的存储压力。

图4示出了本发明提供的区块链中的区块存储装置实施例二的功能结构示意图,该区块链中的区块存储装置可设置于矿工节点中,如图4所示,该区块链中的区块存储装置400包括:打包模块410、广播模块420、第一生成模块430、第二生成模块440、上传模块450、获取模块460、下载模块470和组合模块480。

打包模块410用于:将内存池中的交易信息打包成区块。

其中,矿工节点在接收到新的交易信息之后,验证该交易信息的合法性,验证通过则将其放到内存池当中。当收集到一定数量的交易信息后,打包模块410将内存池中的交易信息打包成区块,其中,打包完成的区块包括第一区块头信息、交易编号信息和交易内容信息。

广播模块420用于:将区块中的第一区块头信息广播至区块链网络。

其中,第一区块头信息包括:区块交易编号哈希值等信息。区块交易编号哈希值是对该区块中的所有的交易编号信息按预设顺序排列的排列结果进行哈希计算得到的。具体地,预设顺序可为交易产生的时间先后顺序。

第一生成模块430用于:将第一区块头信息中的区块交易编号哈希值作为数据键,将区块中的所有的交易编号信息按预设顺序排列的排列结果作为数据键对应的数据值,生成与第一区块头信息对应的第一哈希表。

第二生成模块440用于:将区块中的交易编号信息作为数据键,将与交易编号信息对应的交易内容信息作为数据键对应的数据值,生成与第一区块头信息对应的第二哈希表。

上传模块450用于:将与第一区块头信息对应的第一哈希表和第二哈希表上传至分布式存储网络。

获取模块460用于:从区块链网络获取第二区块头信息。

当矿工节点需要同步完整的区块链到本地时,获取模块460从区块链网络获取第二区块头信息。

下载模块470用于:根据所获取的第二区块头信息中的区块交易编号哈希值,从分布式存储网络下载与第二区块头信息对应的第一哈希表;根据与第二区块头信息对应的第一哈希表,从分布式存储网络下载与第二区块头信息对应的第二哈希表。

组合模块480用于:利用第二区块头信息和与第二区块头信息对应的第一哈希表和第二哈希表,组合得到与第二区块头信息对应的区块。

根据本发明提供的区块链中的区块存储装置,在区块完成打包后,仅将区块的区块头信息广播至了区块链网络,并没有将整个区块的内容进行广播,从而减少了广播的内容,有效地减轻了网络传输的压力;并且利用分布式存储网络保存区块信息,有效地减轻了单个节点的存储压力;另外,当需要同步完整的区块链到本地时,只需从区块链网络获取区块头信息,然后利用区块头信息从分布式存储网络下载区块信息,进而方便地得到了完整的区块。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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