首页 / 专利库 / 银行与财务事项 / 分布式账本技术 / 区块链 / 区块头 / 区块生成方法、设备和存储介质

生成方法、设备和存储介质

阅读:886发布:2020-05-08

专利汇可以提供生成方法、设备和存储介质专利检索,专利查询,专利分析的服务。并且本 发明 提供一种区 块 生成方法、设备和存储介质,该方法包括:循环执行步骤A:A、读取内存池中未处理的各交易中创建时间最早的若干笔第一交易,验证第一交易并存入预处理交易队列,将内存池中的第一交易标记为预处理;响应于预处理交易队列中的交易数量累积到第一数量,打包第一虚拟区块并存入虚拟区块队列;响应于当前 节点 获得第一区块的打包权限,判断虚拟区块队列中是否存有虚拟区块:是,则将虚拟区块队列中最早打包的第二虚拟区块确定为第一区块并存储及广播,删除虚拟区块队列中的第二虚拟区块;否,则根据预处理交易队列生成第一区块并存储及广播。本发明通过减少生成区块所耗费的时间降低了区块生成的时间间隔。,下面是生成方法、设备和存储介质专利的具体信息内容。

1.一种区生成方法,其特征在于,区块链中的每个区块最多包括第一数量笔交易,所述方法包括:
循环执行步骤A:
A、读取内存池中未处理的各交易中交易创建时间最早的若干笔第一交易,验证所述第一交易并存入预处理交易队列,将所述内存池中的所述第一交易标记为预处理;
B、响应于所述预处理交易队列中的交易数量累积到所述第一数量,将所述预处理交易队列中的第一数量笔交易打包为第一虚拟区块,将所述第一虚拟区块存入虚拟区块队列;
响应于当前节点获得第一区块的打包权限,判断所述虚拟区块队列中是否存有虚拟区块:
是,则将所述虚拟区块队列中最早打包的第二虚拟区块确定为所述第一区块并存储及广播,删除所述虚拟区块队列中的所述第二虚拟区块;
否,则根据所述预处理交易队列生成所述第一区块并存储及广播。
2.根据权利要求1所述的方法,其特征在于,步骤A还包括预执行存入所述预处理交易队列的所述第一交易;
所述方法还包括:
响应于其它节点获得所述第一区块的打包权限,接收获得第二区块的打包权限的第二节点广播的第二区块;
判断所述虚拟区块队列中是否存有最早打包的、区块内容与所述第二区块相同的第三虚拟区块:
是,则存储所述第二区块,以及,所述第三虚拟区块中各交易的预执行结果;
否,则暂停执行步骤A和步骤B的交易预处理引擎,验证并执行所述第二区块,根据所述第二区块更新所述虚拟区块队列、所述预处理交易队列和所述内存池,重启所述交易预处理引擎。
3.根据权利要求2所述的方法,其特征在于,所述区块内容的比对方式配置为:
判断所述第二区块和所述第三虚拟区块的区块签名是否相同;
其中,所述区块签名为区块头中除时间戳外的其它信息的哈希值。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述预处理交易队列生成所述第一区块并存储及广播包括:
暂停所述交易预处理引擎;
判断所述预处理交易队列中是否存有交易:
是,则根据所述预处理交易队列中的各交易打包生成所述第一区块并存储及广播;
否,则生成空区块并存储及广播;
重启所述交易预处理引擎。
5.根据权利要求2或3所述的方法,其特征在于,所述根据所述第二区块更新所述虚拟区块队列、所述预处理交易队列和所述内存池包括:
清空所述虚拟区块队列,在所述预处理交易队列和所述内存池中删除已被所述第二区块打包的交易。
6.根据权利要求2或3所述的方法,其特征在于,所述根据所述第二区块更新所述虚拟区块队列、所述预处理交易队列和所述内存池包括:
清空所述虚拟区块队列和所述预处理交易队列,在所述内存池中删除已被所述第二区块打包的交易,将所述内存池中的所有交易标记为未处理。
7.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-6中任一项所述的方法。
8.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的方法。

说明书全文

生成方法、设备和存储介质

技术领域

[0001] 本申请涉及区块链技术领域,具体涉及一种区块生成方法、设备和存储介质。

背景技术

[0002] 在区块链系统中,每两个相邻区块的生成存在一个时间间隔,例如当前最著名的两个区块链网络中,区块生成的时间间隔分别为约10分钟、约15秒。
[0003] 影响区块生成的时间间隔的因素主要有两个:生成区块所耗费的时间,以及,传播区块所耗费的时间。对于大多数区块链网络而言,具有打包下一个待生成区块的资格的节点是不确定的,所以该节点的位置也是不确定的。因此,很难配置通用的方法来减少传播区块所耗费的时间。发明内容
[0004] 鉴于现有技术中的上述缺陷或不足,期望提供一种通过减少生成区块所耗费的时间降低区块生成的时间间隔的区块生成方法、设备和存储介质。
[0005] 第一方面,本发明提供一种区块生成方法,区块链中的每个区块最多包括第一数量笔交易,该方法包括:
[0006] 循环执行步骤A:
[0007] A、读取内存池中未处理的各交易中交易创建时间最早的若干笔第一交易,验证第一交易并存入预处理交易队列,将内存池中的第一交易标记为预处理;
[0008] 响应于预处理交易队列中的交易数量累积到第一数量,将预处理交易队列中的第一数量笔交易打包为第一虚拟区块,将第一虚拟区块存入虚拟区块队列;
[0009] 响应于当前节点获得第一区块的打包权限,判断虚拟区块队列中是否存有虚拟区块:
[0010] 是,则将虚拟区块队列中最早打包的第二虚拟区块确定为第一区块并存储及广播,删除虚拟区块队列中的第二虚拟区块;
[0011] 否,则根据预处理交易队列生成第一区块并存储及广播。
[0012] 第二方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的区块生成方法。
[0013] 第三方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的区块生成方法。
[0014] 本发明诸多实施例提供的区块生成方法、设备和存储介质通过在各节点中分别按交易创建时序预处理交易,并在满足预配置条件时生成虚拟区块,使得节点可以在获得区块打包权限时根据虚拟区块或若干预处理交易直接生成区块,大幅减少了生成区块所耗费的时间,从而实现了降低区块生成的时间间隔;
[0015] 本发明一些实施例提供的区块生成方法、设备和存储介质进一步通过预执行预处理交易队列中的各交易,在收到与本地虚拟区块的区块内容一样的区块后直接存储区块和本地虚拟区块的预执行结果,进一步减少了执行区块所耗费的时间;
[0016] 本发明一些实施例提供的区块生成方法、设备和存储介质进一步通过比对区块头中除时间戳外的其它信息的哈希值,实现了对所接收区块和本地打包的虚拟区块之间的快速验证。附图说明
[0017] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0018] 图1为本发明一实施例提供的一种区块生成方法的流程图
[0019] 图2为图1所示方法的一种优选实施方式的流程图。
[0020] 图3为本发明一实施例提供的一种设备的结构示意图。

具体实施方式

[0021] 下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
[0022] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0023] 图1为本发明一实施例提供的一种区块生成方法的流程图。
[0024] 如图1所示,在本实施例中,本发明提供一种区块生成方法,包括:
[0025] 循环执行步骤S11:
[0026] S11:读取内存池中未处理的各交易中交易创建时间最早的若干笔第一交易,验证第一交易并存入预处理交易队列,将内存池中的第一交易标记为预处理;
[0027] S12:响应于预处理交易队列中的交易数量累积到第一数量,将预处理交易队列中的第一数量笔交易打包为第一虚拟区块,将第一虚拟区块存入虚拟区块队列;
[0028] S13:响应于当前节点获得第一区块的打包权限,判断虚拟区块队列中是否存有虚拟区块:
[0029] 是,则执行步骤S14:将虚拟区块队列中最早打包的第二虚拟区块确定为第一区块并存储及广播,删除虚拟区块队列中的第二虚拟区块;
[0030] 否,则执行步骤S15:根据预处理交易队列生成第一区块并存储及广播。
[0031] 具体地,图1所示的方法适用于区块链网络中的挖矿节点,各挖矿节点中配置有执行上述步骤S11-S12的交易预处理引擎。
[0032] 以下以第一数量配置为1500为例,对上述方法进行示例性阐述。
[0033] 以若干挖矿节点中的一个挖矿节点M为例:
[0034] 在步骤S11中,节点M的交易预处理引擎从内存池读取标记为未处理、交易创建时间最早的一笔第一交易tx1,对tx1进行合法性验证并存入预处理交易队列,同时将内存池内的tx1标记为预处理。在另一实施例中,交易预处理引擎也可以一次读取多笔第一交易并同时处理,但在将多笔第一交易存入预处理交易队列时同样需要以交易创建时间为序。
[0035] 在步骤S12中,当预处理交易队列中的交易数量累积到1500之后,交易预处理引擎将该1500笔交易打包为第一虚拟区块Blockv1,将Blockv1存入虚拟区块队列。其中,步骤S12可以如图1所示般配置为每次执行步骤S11后执行,也可以配置为独立于步骤S11、根据预配置的规则监测预处理交易队列中的交易数量是否累积到1500。
[0036] 当节点M挖矿成功,获得第一区块Block1的打包权限时,执行步骤S13,判断节点M本地的虚拟区块队列中是否存有虚拟区块:
[0037] 是,则执行步骤S14,从虚拟区块队列中拉取出最早打包的第二虚拟区块Blockv2,将Blockv2确定为Block1,在本地存储Block1并向区块链网络广播Block1;
[0038] 否,则执行步骤S15,根据预处理交易队列中的各交易生成Block1,在本地存储Block1并向区块链网络广播Block1。具体地,当预处理交易队列中没有交易时,生成空区块Block1。
[0039] 上述实施例通过在各节点中分别按交易创建时序预处理交易,并在满足预配置条件时生成虚拟区块,使得节点可以在获得区块打包权限时根据虚拟区块或若干预处理交易直接生成区块,大幅减少了生成区块所耗费的时间,从而实现了降低区块生成的时间间隔。
[0040] 优选地,步骤S15包括:
[0041] 暂停交易预处理引擎;
[0042] 判断预处理交易队列中是否存有交易:
[0043] 是,则根据预处理交易队列中的各交易打包生成第一区块并存储及广播;
[0044] 否,则生成空区块并存储及广播;
[0045] 重启交易预处理引擎。
[0046] 具体地,极端情况下,不暂停交易预处理引擎可能导致出错。例如,执行步骤S13时,虚拟区块队列中没有虚拟区块,预处理交易队列中存有1499笔交易,判断结果为执行步骤S15,而与此同时,交易预处理引擎通过执行步骤S11和S12,打包了一个虚拟区块存入虚拟区块队列,会导致步骤S15出错。通过在判断出虚拟区块队列中未存有虚拟区块时暂停交易预处理引擎,并在生成第一区块后重启交易预处理引擎可以解决上述问题。
[0047] 图2为图1所示方法的一种优选实施方式的流程图。
[0048] 如图2所示,在一优选实施例中,步骤S11还包括:预执行存入预处理交易队列中的第一交易。
[0049] 上述方法还包括:
[0050] S16:响应于其它节点获得第一区块的打包权限,接收获得第二区块的打包权限的第二节点广播的第二区块;
[0051] S17:判断虚拟区块队列中是否存有最早打包的、区块内容与第二区块相同的第三虚拟区块:
[0052] 是,则执行步骤S18:存储第二区块,以及,第三虚拟区块中各交易的预执行结果;
[0053] 否,则执行步骤S19:暂停执行步骤S11和步骤S12的交易预处理引擎,验证并执行第二区块,根据第二区块更新虚拟区块队列、预处理交易队列和内存池,重启交易预处理引擎。
[0054] 具体地,在步骤S11中,预执行第一交易指执行第一交易,但仅将第一交易的执行结果暂存在缓存中,而未存入本地。
[0055] 以挖矿节点N挖矿成功,获得第二区块Block2的打包权限,根据上述S13-S15的方法生成Block2并广播为例:
[0056] 在步骤S16中,节点M接收节点N广播的Block2;
[0057] 在步骤S17中,节点M判断本地的虚拟区块队列中是否存有虚拟区块:
[0058] 是,则读取最早打包的第三虚拟区块Blockv3,比对Blockv3和Block2的区块内容是否相同:
[0059] 是,则执行步骤S18,将Block2存入本地,将Blockv3中各交易的预执行结果作为Block2的执行结果存入本地(无需再执行Block2);
[0060] 否,则执行步骤S19,暂停交易预处理引擎,验证并执行Block2,根据Block2更新虚拟区块队列、预处理交易队列和内存池,最后重启交易预处理引擎;
[0061] 否,则同样执行步骤S19,不再赘述。
[0062] 在本实施例中,区块内容的比对方式具体配置为:判断第二区块和第三虚拟区块的区块签名是否相同。其中,区块签名为区块头中除时间戳外的其它信息的哈希值。
[0063] 具体地,本领域常用的区块验证或区块比对方式为,比对区块头哈希(区块头信息的哈希)是否相同,然而在步骤S17的比对当中,由于Blockv3和Block2是由节点M和节点N分别打包的,而区块头信息通常都包括打包区块的时间戳,导致即便在Blockv3和Block2的区块内容完全相同时,由于打包区块的时间戳不同,Blockv3和Block2的区块头哈希也并不相同,因此无法通过比对区块头哈希是否相同来比对Blockv3和Block2的区块内容是否相同。
[0064] 上述实施例进一步通过比对区块头中除时间戳外的其它信息的哈希值,实现了对所接收区块和本地打包的虚拟区块之间的快速验证。
[0065] 在另一实施例中,还可以根据实际需求将区块内容的比对方式配置为其它方式,例如,分别比对第二区块和第三虚拟区块的区块头信息中的版本信息、父区块哈希、默克尔根等信息是否相同,等等。
[0066] 在本实施例中,步骤S19中虚拟区块队列、预处理交易队列和内存池的更新方式具体配置为:清空虚拟区块队列,在预处理交易队列和内存池中删除已被第二区块打包的交易;在另一实施例中,还可以配置为:清空虚拟区块队列和预处理交易队列,在内存池中删除已被第二区块打包的交易,将内存池中的所有交易标记为未处理。
[0067] 上述实施例进一步通过预执行预处理交易队列中的各交易,在收到与本地虚拟区块的区块内容一样的区块后直接存储区块和本地虚拟区块的预执行结果,进一步减少了执行区块所耗费的时间。
[0068] 图3为本发明一实施例提供的一种设备的结构示意图。
[0069] 如图3所示,作为另一方面,本申请还提供了一种设备300,包括一个或多个中央处理单元(CPU)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储部分308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM303中,还存储有设备300操作所需的各种程序和数据。CPU301、ROM302以及RAM303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
[0070] 以下部件连接至I/O接口305:包括键盘鼠标等的输入部分306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分307;包括硬盘等的存储部分308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分309。通信部分309经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至I/O接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储部分308。
[0071] 特别地,根据本公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分309从网络上被下载和安装,和/或从可拆卸介质311被安装。
[0072] 作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请提供的方法。
[0073] 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
[0074] 描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
[0075] 以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈