首页> 中国专利> 区块链中区块的出块方法、装置及电子设备

区块链中区块的出块方法、装置及电子设备

摘要

本发明公开了一种区块链中区块的出块方法、装置及电子设备。涉及区块链领域,该方法包括:获取待记录的交易信息所对应的交易起始时间;确定当前时间与交易起始时间之间的时间间隔;在时间间隔大于或等于预设时长时,确定区块链中当前节点的节点类型,其中,预设时长大于验证时长,验证时长为当前节点完成对待记录的交易信息的验证操作的时长,节点类型表征当前节点是否能够生成目标区块;基于节点类型确定待记录的交易信息对应的目标区块的出块时间。本发明解决了现有技术中区块链节点容易放弃验证待生成区块中的交易信息造成的区块链网络无法正常运行的技术问题。

著录项

  • 公开/公告号CN114826586A

    专利类型发明专利

  • 公开/公告日2022-07-29

    原文格式PDF

  • 申请/专利权人 中国工商银行股份有限公司;

    申请/专利号CN202210505439.4

  • 发明设计人 杨浩圆;金纯亮;彭顺求;王志远;

    申请日2022-05-10

  • 分类号H04L9/08;H04L9/32;H04L67/12;

  • 代理机构北京康信知识产权代理有限责任公司;

  • 代理人周春枚

  • 地址 100140 北京市西城区复兴门内大街55号

  • 入库时间 2023-06-19 16:09:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-29

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及区块链领域,具体而言,涉及一种区块链中区块的出块方法、装置及电子设备。

背景技术

随着科技的不断发展,区块链技术凭借其数据的不可篡改性以及去中心化的特点,广泛应用于各行各业当中。具体地,区块链技术利用块链式数据结构验证与存储数据,利用分布式节点共识算法生成和更新数据,利用密码学的方式保证数据传输和访问的安全,从而使得其所记录的信息相较于传统网络更加真实可靠。

在区块链网络的出块过程中,网络中相关节点会消耗较大的节点资源对交易进行验证,为了弥补消耗的计算资源,区块链网络将分配报酬给参与出块过程的节点。在此环境下,相关节点具有不验证交易的动机,即通过直接给出交易通过的签名促成出块,来节省计算资源并骗取收益,从而造成区块链网络无法正常运行。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种区块链中区块的出块方法、装置及电子设备,以至少解决现有技术中区块链节点容易放弃验证待生成区块中的交易信息造成的区块链网络无法正常运行的技术问题。

根据本发明实施例的一个方面,提供了一种区块链中区块的出块方法,包括:获取待记录的交易信息所对应的交易起始时间;确定当前时间与交易起始时间之间的时间间隔;在时间间隔大于或等于预设时长时,确定区块链中当前节点的节点类型,其中,预设时长大于验证时长,验证时长为当前节点完成对待记录的交易信息的验证操作的时长,节点类型表征当前节点是否能够生成目标区块;基于节点类型确定待记录的交易信息对应的目标区块的出块时间。

进一步地,区块链中区块的出块方法还包括:在确定当前时间与交易起始时间之间的时间间隔之后,获取待记录的交易信息所对应的目标交易时长;计算目标交易时长与预设阈值的乘积,得到预设时长,其中,预设阈值为大于1的数值。

进一步地,区块链中区块的出块方法还包括:获取随机数值以及当前节点对应的公钥和私钥;基于随机数值、公钥以及私钥验证当前节点的身份;基于当前节点的身份确定当前节点的节点类型。

进一步地,区块链中区块的出块方法还包括:对私钥和随机数值进行哈希计算,得到第一结果;对私钥和随机数值进行签名处理,得到第二结果;基于公钥、随机数值、第一结果以及第二结果验证当前节点的身份。

进一步地,区块链中区块的出块方法还包括:在基于节点类型确定待记录的交易信息对应的目标区块的出块时间之后,在确定当前节点能够生成目标区块的情况下,对目标区块进行共识处理,得到共识结果;在共识结果表征共识成功的情况下,对目标区块进行上链处理。

进一步地,区块链中区块的出块方法还包括:检测生成目标区块的节点的身份,得到第一检测结果;检测目标区块对应的交易信息是否正确,得到第二检测结果;检测待记录的交易信息对应的交易时间范围是否为目标时间范围,得到第三检测结果;基于第一检测结果、第二检测结果、第三检测结果确定共识结果。

根据本发明实施例的另一方面,还提供了一种区块链中区块的出块装置,包括:获取模块,用于获取待记录的交易信息所对应的交易起始时间;第一确定模块,用于确定当前时间与交易起始时间之间的时间间隔;第二确定模块,用于在时间间隔大于或等于预设时长时,确定区块链中当前节点的节点类型,其中,预设时长大于验证时长,验证时长为当前节点完成对待记录的交易信息的验证操作的时长,节点类型表征当前节点是否能够生成目标区块;处理模块,用于基于节点类型确定待记录的交易信息对应的目标区块的出块时间。

根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的区块链中区块的出块方法。

根据本发明实施例的另一方面,还提供了一种电子设备,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的区块链中区块的出块方法。

根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述的区块链中区块的出块方法。

在本发明实施例中,采用在当前时间与交易起始时间的时间间隔大于验证交易信息所需的时长时,再确定区块链中当前节点的节点类型以及出块时间的方式,通过获取待记录的交易信息所对应的交易起始时间,然后确定当前时间与交易起始时间之间的时间间隔,并在时间间隔大于或等于预设时长时,确定区块链中当前节点的节点类型,从而基于节点类型确定待记录的交易信息对应的目标区块的出块时间。其中,预设时长大于验证时长,验证时长为当前节点完成对待记录的交易信息的验证操作的时长,节点类型表征当前节点是否能够生成目标区块。

在上述过程中,通过在当前时间与待记录的交易信息的交易起始时间的时间间隔大于验证待记录的交易信息所需的时长时,再确定区块链中当前节点的节点类型,使得当出块节点确定自身的的节点类型时,所需要记录在链上的交易已经通过了验证并且保存在了本地,从而避免了现有技术中节点在知晓自身的节点类型前缺乏验证时间,并在知晓自身的节点类型仅用于验证区块后,对区块中的交易信息放弃验证的问题,保证了出块节点对待记录的交易信息的有效验证。进一步地,在确定了节点类型后对用于记录待记录的交易信息的目标区块进行出块,保证了目标区块中的交易信息为通过有效验证的交易信息,进而保证了区块链网络的正常运行。

由此可见,本申请所提供的方案达到了在当前时间与交易起始时间的时间间隔大于验证交易信息所需的时长时,再确定区块链中当前节点的节点类型以及出块时间的目的,从而实现了保证区块链网络正常运行的技术效果,进而解决了现有技术中区块链节点容易放弃验证待生成区块中的交易信息造成的区块链网络无法正常运行的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种可选的当前节点的示意图;

图2是根据本发明实施例的一种可选的区块链中区块的出块方法的示意图;

图3是根据本发明实施例的一种可选的区块链网络的示意图;

图4是根据本发明实施例的一种可选的目标区块与时间关系的示意图;

图5是根据本发明实施例的一种可选的区块链中区块的出块方法的流程图;

图6是根据本发明实施例的一种可选的区块链中区块的出块装置的示意图;

图7是根据本发明实施例的一种可选的电子设备的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:

出块过程:所谓出块过程,指在区块链网络中的共识过程,节点通过共识将交易记录在链上的过程,由出块节点形成区块,广播给网络中其他的节点,当网络中大部分节点都记录下了区块,则认为网络形成了共识,区块被记录在了链上。

消极验证:由于参与出块过程的节点都可以被分配报酬,即使该节点只是验证了交易信息,且对于交易信息的验证需要消耗运算资源,因此,在这个环境下,节点就有不验证交易信息的动机,即通过直接给出交易通过的签名促成出块,来节省计算资源并骗取收益。这种行为被定义为消极验证。

需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

实施例1

根据本发明实施例,提供了一种日志文件生成方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

在本实施例中,如图1所示,以区块链网络中的当前节点为执行主体,当前节点至少包括共识节点选择模块、交易验证模块、共识模块以及链交互模块。其中,共识节点选择模块可以基于相关算法以及链上的信息进行计算,以判断节点是否满足条件可以参与本轮出块过程;交易验证模块可以使用预设的验证方案,对网络中的交易以及即将共识的区块进行验证;共识模块可以使用预设的共识算法,在网络中对区块进行共识,将区块上链;链交互模块用于节点与链进行信息交互,包括链上信息查询、在链上添加新的区块。

图2是根据本发明实施例的一种可选的区块链中区块的出块方法的示意图,如图2所示,该方法包括如下步骤:

步骤S101,获取待记录的交易信息所对应的交易起始时间。

在步骤S101中,待记录的交易信息表征用于记录在即将出块的区块中的信息。可选的,当前节点可以通过链交互模块获取链上最新区块,即获取即将出块的区块所对应的上一个区块,然后基于链上最新区块中的信息确定待记录的交易信息所对应的交易起始时间。其中,链上最新区块中至少保存有与最新区块中记录的交易信息所对应的交易信息摘要info,该交易信息摘要info至少包含最新区块的出块时间Tstart。在本实施例所描述的出块过程中,每一个区块中所记录的交易信息的交易起始时间与上一个区块的出块时间相同,因此,前述的待记录的交易信息所对应的交易起始时间与前述最新区块的出块时间相同,由此,可以实现对前述的交易起始时间的获取。

步骤S102,确定当前时间与交易起始时间之间的时间间隔。

在步骤S102中,可以通过共识节点选择模块确定当前时间t与交易起始时间之间的时间间隔,以便于后续确定是否对当前节点的节点类型进行判断。

步骤S103,在时间间隔大于或等于预设时长时,确定区块链中当前节点的节点类型,其中,预设时长大于验证时长,验证时长为当前节点完成对待记录的交易信息的验证操作的时长,节点类型表征当前节点是否能够生成目标区块。

可选的,在本实施例中,当当前节点获取到待记录的交易信息后,当前节点会对待记录的交易信息进行验证,并将该待记录的交易信息保存在本地,以供后续出块。共识节点选择模块可以基于时间间隔是否大于或等于预设时长来确定当前节点是否完成验证过程,并在时间间隔是否大于或等于预设时长时再确定区块链中当前节点的节点类型,以保证在确定节点类型之前,所需要记录在链上的交易信息,即前述的待记录的交易信息已经通过了验证并保存在了当前节点本地。其中,预设时长至少大于验证待记录的交易信息所需的时长。

进一步地,当共识节点选择模块确定时间间隔大于或等于预设时长时,共识节点选择模块可以基于交易信息摘要info中所记录的信息确定当前节点的节点类型。反之,若共识节点选择模块确定时间间隔小于预设时长时,说明此时当前节点尚未完成对待记录的交易信息的验证,则共识节点选择模块可以依据预设的频率对前述的时间间隔进行连续判断,直至时间间隔大于或等于预设时长,以进入节点类型判断阶段。

可选的,如图3所示,节点类型包括第一节点类型与第二节点类型,其中,第一节点类型表征当前节点能够生成目标区块,区块链中所有节点类型为第一节点类型的节点可以组成共识组,共识组用于在当前轮次通过某一节点生成目标区块并由共识组中的其它节点对目标区块进行共识。第二节点类型表征当前节点无法生成目标区块,也无法参与共识。

需要说明的是,通过在时间间隔大于验证待记录的交易信息所需的时长时,再确定区块链中当前节点的节点类型,使得当出块节点确定自身的节点类型时,所需要记录在链上的交易已经通过了验证并且保存在了本地,避免了现有技术中节点在知晓自身的节点类型前缺乏验证时间,并在知晓自身的节点类型仅用于验证区块后,对区块中的交易信息放弃验证的问题。例如,在基于POW、POS等共识方案实现的出块过程中,节点将网络中产生的交易验证并保存下来,通过计算得出一个满足出块条件的哈希值形成区块,广播给网络中其他接单进行验证。节点将通过验证的区块记录在自己的区块链账本上,当网络中大多数节点都将一个区块记录在自己的账本上时,则认为网络中形成共识,区块被记录在链上。在基于paxos、raft、pbft等共识方案实现的出块过程中,主节点进行交易信息的收集、其他节点进行交易验证返回给主节点验证信息,主节点判断共识形成,向全网络广播共识信息。对于前述的两种出块过程,其均出块速度为主要优化方向,对于交易上链的时效性要求较高,从而使得节点在知晓自身的节点类型前缺乏验证时间,同时,在前述的第一种方案中,全网节点都要进行算力的比拼,而最终区块的形成,只是一个节点的计算结果,也就是说,除了生成目标区块的节点之外,其他所有节点的算力都被浪费了,从而使得区块链中的节点在知晓自身的节点类型仅用于验证区块后,容易对区块中的交易信息放弃验证。由此,本申请保证了出块节点对交易信息的有效验证。

步骤S104,基于节点类型确定待记录的交易信息对应的目标区块的出块时间。

在步骤S104中,当当前节点确定了节点类型后,也即区块链网络中所有的节点确定了节点类型后,节点类型为表征该节点能够生成目标区块的节点可以开始执行出块过程,也即区块链网络中各节点可以实现对目标区块的出块时间的确定,其中,目标区块即为前述的即将出块的区块,由此实现对目标区块的延迟出块。

需要说明的是,由于可以确定节点类型的时间与交易起始时间具有一定的时间间隔,因此,在确定了节点类型后对目标区块进行出块,实现了对目标区块的延迟出块。从而保证目标区块中的交易信息为通过有效验证的交易信息,进而保证了区块链网络的正常运行。

基于上述步骤S101至步骤S104所限定的方案,可以获知,在本发明实施例中,采用在当前时间与交易起始时间的时间间隔大于验证交易信息所需的时长时,再确定区块链中当前节点的节点类型以及出块时间的方式,通过获取待记录的交易信息所对应的交易起始时间,然后确定当前时间与交易起始时间之间的时间间隔,并在时间间隔大于或等于预设时长时,确定区块链中当前节点的节点类型,从而基于节点类型确定待记录的交易信息对应的目标区块的出块时间。其中,预设时长大于验证时长,验证时长为当前节点完成对待记录的交易信息的验证操作的时长,节点类型表征当前节点是否能够生成目标区块。

容易注意到的是,在上述过程中,通过在当前时间与待记录的交易信息的交易起始时间的时间间隔大于验证待记录的交易信息所需的时长时,再确定区块链中当前节点的节点类型,使得当出块节点确定自身的的节点类型时,所需要记录在链上的交易已经通过了验证并且保存在了本地,从而避免了现有技术中节点在知晓自身的节点类型前缺乏验证时间,并在知晓自身的节点类型仅用于验证区块后,对区块中的交易信息放弃验证的问题,保证了出块节点对待记录的交易信息的有效验证。进一步地,在确定了节点类型后对用于记录待记录的交易信息的目标区块进行出块,保证了目标区块中的交易信息为通过有效验证的交易信息,进而保证了区块链网络的正常运行。

由此可见,本申请所提供的方案达到了在当前时间与交易起始时间的时间间隔大于验证交易信息所需的时长时,再确定区块链中当前节点的节点类型以及出块时间的目的,从而实现了保证区块链网络正常运行的技术效果,进而解决了现有技术中区块链节点容易放弃验证待生成区块中的交易信息造成的区块链网络无法正常运行的技术问题。

在一种可选的实施例中,在确定当前时间与交易起始时间之间的时间间隔之后,共识节点选择模块可以获取待记录的交易信息所对应的目标交易时长,并计算目标交易时长与预设阈值的乘积,得到预设时长,其中,预设阈值为大于1的数值。

可选的,在本实施例中,如图4所示,每一个区块记录的交易时间的区间长度为T,即前述的待记录的交易信息的交易时间所对应的目标交易时长为T。因此,待记录的交易信息的交易时间在区间[Tstart,Tstart+T)内,其中,Tstart为前述的交易起始时间。

具体地,在当前区块获取交易时间在区间[Tstart,Tstart+T)内的待记录的交易信息时,当前区块可以在获取完成后再对待记录的交易信息进行验证,也可以在获取过程中便对待记录的交易信息开始验证,而在前述的任一种验证方式中,可以获知,验证结束时间总会晚于当前区块对待记录的交易信息的获取完成时间。因此,预设时长可以基于目标交易时长确定预设时长。

进一步地,共识节点选择模块基于目标交易时长与预设阈值的乘积确定预设时长,其中,预设阈值为大于1的数值,优选的,预设阈值为2。如图2所示,即当当前时间t与交易起始时间Tstart之间的时间间隔大于或等于2倍的目标交易时长为T时,确定该时间间隔大于或等于预设时长,并进行后续计算,以此实现延长出块。

需要说明的是,通过基于目标交易时长确定预设时长,确保了当前节点能够在预设时长内完成对待记录的交易信息的验证以及保存过程,从而保证区块链网络的正常运行。

在一种可选的实施例中,在确定区块链中当前节点的节点类型的过程中,共识节点选择模块可以获取随机数值以及当前节点对应的公钥和私钥,然后基于随机数值、公钥以及私钥验证当前节点的身份,从而基于当前节点的身份确定当前节点的节点类型。

可选的,在本实施例中,共识节点选择模块可以基于前述的交易信息摘要info获取随机数值,也可以基于其它信息获取随机数值,其中,随机数值表征为可验证随机函数VRF中的随机种子seed,即共识节点选择模块可以利用验证随机函数VRF,基于随机数值、公钥、私钥以及预设的准入条件对当前节点的身份进行验证。可选的,当验证成功时,表征该当前节点的身份为身份真实且满足准入条件的节点,当验证失败时,表征该当前节点的身份为身份不真实或不满足准入条件的节点,从而可以将满足身份真实且准入条件的节点的节点类型确定为能够生成目标区块的节点类型,即前述的第一节点类型,将身份不真实或不满足准入条件的节点的节点类型确定为无法生成目标区块的节点类型,即前述的第二节点类型。其中,身份真实的节点表征该节点为当前区块链中的节点,身份不真实的节点表征该节点不为当前区块链中的节点。

需要说明的是,通过基于随机数值、公钥以及私钥确定当前节点的节点类型,实现了对区块链网络中能够生成目标区块的节点的有效筛选,从而缩小了参与出块过程的节点数量,降低了网络中算力的损失。

在一种可选的实施例中,在基于随机数值、公钥以及私钥验证当前节点的身份的过程中,共识节点选择模块可以对私钥和随机数值进行哈希计算,得到第一结果,然后对私钥和随机数值进行签名处理,得到第二结果,从而基于公钥、随机数值、第一结果以及第二结果验证当前节点的身份。

可选的,可验证随机函数是哈希函数与密码学签名算法的结合,用于生成随机数,并且被其他节点验证。

共识节点选择模块可以基于可验证随机函数VRF进行如下公式的计算:

result=VRF_HASH(SK,seed)

其中,result表示第一结果,VRF_HASH()表示哈希计算,SK表示当前节点对应的私钥,seed表示随机数值。

进一步地,共识节点选择模块还可以基于可验证随机函数VRF进行如下公式的计算:

proof=VRF_PROOF(SK,seed)

其中,proof表示第二结果,VRF_PROOF()表示签名处理,SK表示当前节点对应的私钥,seed表示随机数值。

更进一步地,共识节点选择模块可以利用验证随机函数VRF对当前节点的身份进行初步验证,公式如下:

result==VRF_VERIFY(PK,seed,proof)

其中,result表示第一结果,VRF_VERIFY()表示验证函数,PK表示当前节点对应的公钥,seed表示随机数值,proof表示第二结果。且需要说明的是,第一结果result使用当前节点的私钥计算而来,不可被其他节点复现,且根据哈希函数的不可预测性,在随机数值seed明确之前,无法预测第一结果result的值。

可选的,在基于验证随机函数VRF对当前节点的身份进行初步验证并确定前述等式成立,即确定当前节点身份真实后,共识节点选择模块可以根据设置好的准入规则判断生成的第一结果result是否满足准入条件,以此确定当前节点的身份。并在当前节点满足准入条件时,将当前节点与其他满足条件的节点确定为第一节点类型,以形成共识组,参与本轮出块过程,反之,若不满足条件,则当前节点不参与本轮出块过程,并继续比对时间间隔与预设条件,以确定是否可以参与下一轮出块过程。其中,区块链网络可以根据需求调整第一结果result满足的准入条件难度,以控制参与出块过程的节点数量占区块链网络中总节点数量的比例。

需要说明的是,通过采用可验证随机函数确定当前节点的身份,以确定当前节点是否能够生成目标区块,保证了参与出块过程节点的随机性,防止了节点共谋情况的产生。

在一种可选的实施例中,在基于节点类型确定待记录的交易信息对应的目标区块的出块时间之后,共识模块可以在确定当前节点能够生成目标区块的情况下,对目标区块进行共识处理,得到共识结果,并在共识结果表征共识成功的情况下,对目标区块进行上链处理。

可选的,在确定当前节点能够生成目标区块的情况下,当前节点与其他为第一节点类型的节点形成共识组,并由共识组中的节点整理需要打包在目标区块中的待记录的交易信息,然后依据预设的共识机制生成目标区块,接着,由当前节点以及共识组中的其它节点,也即共识组中的所有节点,基于共识模块对该目标区块进行共识。当所有节点对该目标区块共识完成后,会产生共识结果,基于共识结果,可以确定是否对目标区块进行上链处理。其中,共识模块可以根据场景不同使用不同的共识算法。

进一步地,当共识结果表征共识成功时,当前节点可以使用链交互模块,将通过共识的目标区块保存在链上,目标区块中至少包括与待记录的交易信息对应的交易信息摘要info,且与待记录的交易信息对应的交易信息摘要info中,至少包含该目标区块的出块时间,区块链网络内的其他节点同样可以通过链交互模块获取目标区块信息,从而完成本轮出块。

需要说明的是,通过对目标区块进行共识,并在共识成功的情况下,对目标区块进行上链处理,以保证区块链内信息的真实性和有效性,从而提高区块链的安全性。

在一种可选的实施例中,在对目标区块进行共识处理,得到共识结果的过程中,交易验证模块可以检测生成目标区块的节点的身份,得到第一检测结果,并检测目标区块对应的交易信息是否正确,得到第二检测结果,并检测待记录的交易信息对应的交易时间范围是否为目标时间范围,得到第三检测结果,从而基于第一检测结果、第二检测结果、第三检测结果确定共识结果。

可选的,交易验证模块可以利用可验证随机函数,基于前述的对当前节点的身份的验证方法,对生成目标区块的节点的身份进行验证,得到第一检测结果,故此处不再赘述。

进一步地,交易验证模块可以对目标区块对应的交易信息进行验证,检验目标区块中交易信息的正确性,得到第二检测结果。

更进一步地,交易验证模块可以基于目标时间范围对交易时间范围进行验证,其中,目标时间范围为[t-2T,t-T),其中,t表示当前时间,T表示目标交易时长,从而得到第三检测结果。

之后,基于第一检测结果、第二检测结果、第三检测结果确定共识结果,其中,在第一检测结果表征生成目标区块的节点为身份真实且满足准入条件的节点,且,第二检测结果表征目标区块中交易信息的正确,且第三检测结果表征交易时间范围为目标时间范围的情况下,确定共识结果表征共识成功,反之,确定共识结果表征共识失败。

需要说明的是,通过检测生成目标区块的节点的身份、目标区块对应的交易信息以及交易信息对应的交易时间,来确定共识结果,实现了对目标区块内容的有效共识。

如图5所示,对本申请一种可选的工作过程进行说明。首先,出块节点可以通过链交互模块获取链上最新区块中保存的交易信息摘要info,以确定交易起始时间,并判断当前时间t是否满足t-Tstart>=2T,其中,Tstart表示交易起始时间,T表示目标交易时长。若不满足前述条件,则当前节点依据预设频率重新执行前述判断过程,若满足,则将交易信息摘要info、当前节点的私钥、公钥传入共识节点选择模块进行计算获得第一结果与第二结果。之后,基于第一结果与第二结果确定当前节点的身份以及其是否满足准入条件,若满足,则基于当前节点以及其他满足准入条件的节点构建共识组,并生成目标区块进行共识处理,然后在共识成功时,进行出块,将目标区块上链,完成此轮工作。反之,若第一结果与第二结果不满足准入条件,则当前节点依据预设频率重新执行前述对当前时间t的判断过程。由此实现一轮循环,从而确保会区块链的正常运行。

需要说明的是,在本申请所提供的方法中,通过可验证随机函数随机选择共识节点组,缩小了参与共识的节点范围,降低了算力的浪费,通过延迟出块的机制,使得当当前节点判断本节点的节点类型时,需要记录在链上的交易信息已经通过了验证并且保存在了当前节点本地,从而杜绝了节点消极验证的情况出现,进而保证了在区块链网络中,节点没有作恶动机,在遵守网络运作规则的基础上,能够正常进行交易的验证、出块行为,解决了现有技术中区块链网络无法正常运行的问题。

由此可见,本申请所提供的方案达到了在当前时间与交易起始时间的时间间隔大于验证交易信息所需的时长时,再确定区块链中当前节点的节点类型以及出块时间的目的,从而实现了保证区块链网络正常运行的技术效果,进而解决了现有技术中区块链节点容易放弃验证待生成区块中的交易信息造成的区块链网络无法正常运行的技术问题。

实施例2

根据本发明实施例,提供了一种区块链中区块的出块装置的实施例,其中,图6是根据本发明实施例的一种可选的区块链中区块的出块装置的示意图,如图6所示,该装置包括:

获取模块601,用于获取待记录的交易信息所对应的交易起始时间;

第一确定模块602,用于确定当前时间与交易起始时间之间的时间间隔;

第二确定模块603,用于在时间间隔大于或等于预设时长时,确定区块链中当前节点的节点类型,其中,预设时长大于验证时长,验证时长为当前节点完成对待记录的交易信息的验证操作的时长,节点类型表征当前节点是否能够生成目标区块;

处理模块604,用于基于节点类型确定待记录的交易信息对应的目标区块的出块时间。

需要说明的是,上述获取模块601、第一确定模块602、第二确定模块603以及处理模块604对应于上述实施例中的步骤S101至步骤S104,三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。

可选的,区块链中区块的出块装置还包括:第一子获取模块,用于获取待记录的交易信息所对应的目标交易时长;第一计算模块,用于计算目标交易时长与预设阈值的乘积,得到预设时长,其中,预设阈值为大于1的数值。

可选的,第二确定模块还包括:第二子获取模块,用于获取随机数值以及当前节点对应的公钥和私钥;第一验证模块,用于基于随机数值、公钥以及私钥验证当前节点的身份;第一子确定模块,用于基于当前节点的身份确定当前节点的节点类型。

可选的,验证模块还包括:第二计算模块,用于对私钥和随机数值进行哈希计算,得到第一结果;签名模块,用于对私钥和随机数值进行签名处理,得到第二结果;第二验证模块,用于基于公钥、随机数值、第一结果以及第二结果验证当前节点的身份。

可选的,区块链中区块的出块装置还包括:共识模块,用于在确定当前节点能够生成目标区块的情况下,对目标区块进行共识处理,得到共识结果;子处理模块,用于在共识结果表征共识成功的情况下,对目标区块进行上链处理。

可选的,共识模块还包括:第一检测模块,用于检测生成目标区块的节点的身份,得到第一检测结果;第二检测模块,用于检测目标区块对应的交易信息是否正确,得到第二检测结果;第三检测模块,用于检测待记录的交易信息对应的交易时间范围是否为目标时间范围,得到第三检测结果;第二子确定模块,用于基于第一检测结果、第二检测结果、第三检测结果确定共识结果。

实施例3

根据本发明实施例的另一方面,还提供了计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的区块链中区块的出块方法。

实施例4

根据本发明实施例的另一方面,还提供了一种电子设备,其中,图7是根据本发明实施例的一种可选的电子设备的示意图,如图7所示,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的区块链中区块的出块方法。

实施例5

根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述的区块链中区块的出块方法。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号