区块生成方法、装置、计算机设备和存储介质转让专利

申请号 : CN201910153535.5

文献号 : CN109787867B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李升林姜海涛孙立林

申请人 : 矩阵元技术(深圳)有限公司

摘要 :

本申请提供了一种区块生成方法、装置、计算机设备和存储介质,其中,该方法包括:第一节点获取第一节点与第二节点之间的平均网络延迟和最大网络延迟;第一节点根据平均网络延迟确定第一节点和第二节点之间的平均系统时间差值;第一节点接收第二节点生成的区块,并确定接收到区块时的本地时间戳,其中,区块中携带有时间戳;第一节点根据平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块所携带的时间戳确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块。上述方案解决了现有技术中区块时间合理性判断准确率低的技术问题,达到了有效提升区块时间合理性判断的准确率以及提高区块生成效率的技术效果。

权利要求 :

1.一种区块生成方法,其特征在于,包括:

第一节点获取所述第一节点与第二节点之间的平均网络延迟和最大网络延迟;

所述第一节点根据所述平均网络延迟确定所述第一节点和所述第二节点之间的平均系统时间差值;

所述第一节点接收所述第二节点生成的区块,并确定接收到所述区块时的本地时间戳,其中,所述区块中携带有时间戳;

所述第一节点根据所述平均网络延迟、所述最大网络延迟、所述平均系统时间差值、所述本地时间戳和所述区块所携带的时间戳确定所述区块是否为所述第二节点在满足预设时间要求的出块时间生成的区块;

其中,所述第一节点根据所述平均网络延迟、所述最大网络延迟、所述平均系统时间差值、所述本地时间戳和所述区块所携带的时间戳确定所述区块是否为所述第二节点在满足预设时间要求的出块时间生成的区块,包括:验证以下不等式是否成立以确定所述区块是否为所述第二节点在满足预设时间要求的出块时间生成的区块:Localtime+TimeDiff+NetDelaymax≥timestamp+NetDelay≥Localtime+TimeDiff,其中,Localtime为所述本地时间戳,TimeDiff为所述平均系统时间差值,NetDelaymax为所述最大网络延迟,timestamp为所述区块中携带的时间戳,NetDelay为所述平均网络延迟。

2.根据权利要求1所述的方法,其特征在于,第一节点获取所述第一节点与第二节点之间的平均网络延迟和最大网络延迟,包括:所述第一节点重复执行N次如下信息交互操作,以得到N个网络延迟数据:所述第一节点发送ping报文给所述第二节点,其中,所述ping报文中携带有ping报文离开所述第一节点的第一时间戳;所述第一节点接收所述第二节点响应于所述ping报文返回的pong报文;

所述第一节点计算所述第一节点接收到所述pong报文的第二时间戳;所述第一节点根据所述第一时间戳和所述第二时间戳计算所述第一节点和所述第二节点之间的网络延迟数据,其中,N为正整数;

所述第一节点根据所述N个网络延迟数据确定所述第一节点和所述第二节点之间的平均网络延迟和最大网络延迟。

3.根据权利要求2所述的方法,其特征在于,所述第一节点根据所述N个网络延迟数据确定所述第一节点和所述第二节点之间的平均网络延迟和最大网络延迟,包括:按照以下公式计算网络延迟均值:

按照以下公式计算所述最大网络延迟:

NetDelaymax=Max(Delay0:DelayN-1);

根据计算得到的所述网络延迟均值和预设的系统允许最大网络延迟,确定所述平均网络延迟,其中,NetDelayaver为所述网络延迟均值,NetDelaymax为所述最大网络延迟,i=0,...,N-1,Delayi是所述第一节点在第i次执行所述信息交互操作中计算得到的所述第一节点和所述第二节点之间的网络延迟数据,Delayi=(T2i-T1i)/2,其中,T2i是第i次信息交互操作中的所述第二时间戳,T1i是第i次信息交互操作中的所述第一时间戳。

4.根据权利要求3所述的方法,其特征在于,根据计算得到的所述网络延迟均值和预设的系统允许最大网络延迟,计算所述平均网络延迟,包括:确定所述网络延迟均值是否大于所述预设的系统允许最大网络延迟;

在确定所述网络延迟均值大于所述预设的系统允许最大网络延迟的情况下,将所述预设的系统允许最大网络延迟确定为所述平均网络延迟;

在确定所述网络延迟均值不大于所述预设的系统允许最大网络延迟的情况下,将所述网络延迟均值确定为所述平均网络延迟。

5.根据权利要求4所述的方法,其特征在于,所述第一节点根据所述平均网络延迟确定所述第一节点和所述第二节点之间的平均系统时间差值,包括:按照以下公式计算所述系统时间差值均值:

其中,TimeDiffaver为所述系统时间差值均值,NetDelay为所述平均网络延迟,T2i是第i次信息交互操作中的所述第二时间戳,T1i是第i次信息交互操作中的所述第一时间戳;

根据所述系统时间差值均值和所述预设的系统允许最大系统时间差值,确定所述平均系统时间差值。

6.根据权利要求5所述的方法,其特征在于,根据所述系统时间差值均值和所述系统允许的最大系统时间差值阈值,确定所述平均系统时间差,包括:确定所述系统时间差值均值是否大于所述预设的系统允许最大系统时间差值;

在确定所述系统时间差值均值大于所述预设的系统允许最大系统时间差值的情况下,将所述预设的系统允许最大系统时间差值确定为所述平均系统时间差值;

在确定所述系统时间差值均值不大于所述预设的系统允许最大系统时间差值的情况下,将所述系统时间差值均值确定为所述平均系统时间差值。

7.一种区块生成装置,其特征在于,位于第一节点中,包括:

获取模块,用于获取所述第一节点与第二节点之间的平均网络延迟和最大网络延迟;

第一确定模块,用于根据所述平均网络延迟确定所述第一节点和所述第二节点之间的平均系统时间差值;

接收模块,用于接收所述第二节点生成的区块,并确定接收到所述区块时的本地时间戳,其中,所述区块中携带有时间戳;

第二确定模块,用于根据所述平均网络延迟、所述最大网络延迟、所述平均系统时间差值、所述本地时间戳和所述区块所携带的时间戳确定所述区块是否为所述第二节点在满足预设时间要求的出块时间生成的区块;

其中,所述第二确定模块具体用于验证以下不等式是否成立以确定所述区块是否为所述第二节点在满足预设时间要求的出块时间生成的区块:Localtime+TimeDiff+NetDelaymax≥timestamp+NetDelay≥Localtime+TimeDiff,其中,Localtime为所述本地时间戳,TimeDiff为所述平均系统时间差值,NetDelaymax为所述最大网络延迟,timestamp为所述区块中携带的时间戳,NetDelay为所述平均网络延迟。

8.一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至6中任一项所述方法的步骤。

9.一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现权利要求1至6中任一项所述方法的步骤。

说明书 :

区块生成方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及区块链技术领域,特别涉及一种区块生成方法、装置、计算机设备和存储介质。

背景技术

[0002] 随着互联网技术的不断发展,区块链技术的发展也越来越迅速。区块链技术是一种去中心化且公开透明的技术。区块链技术采用数据区块打破了目前互联网对中心服务器的依赖,网络中产生的所有数据都会被区块生成节点进行记录,并通过数据的广播和其他节点的验证,以形成新的区块并上链至区块链的尾部。待上链区块被确认后,该新的区块被永久记录于区块链中;而对于得不到确认的区块,将区块中的数据回滚。
[0003] 在所有实现BFT(Byzantine Fault Tolerance,拜占庭容错)机制的共识算法中,在该算法中,区块能否被通过其他区块的验证取决于该区块是否是合理的,而在并行确认的BFT机制中,判断区块是否合理的依据需要根据当前时间是否是当前区块的提议人的出块周期,在时间符合的情况下,才会进一步判断区块的合理性。
[0004] 然而,大多数区块链系统本身并没有做时钟同步,即便有个别区块链系统实现了部分时钟同步简单协议,但也只能保证本节点在没有恶意修改系统时间的前提下的节点时间的准确性,无法准确判断区块时间的合理性。
[0005] 针对上述问题,目前尚未提出有效的解决方案。

发明内容

[0006] 本申请实施例提供了一种区块生成方法、装置、计算机设备和存储介质,以解决现有技术中判断区块时间合理性的准确率低的问题。
[0007] 本申请实施例提供了一种区块生成方法,包括:第一节点获取第一节点与第二节点之间的平均网络延迟和最大网络延迟;第一节点根据平均网络延迟确定第一节点和第二节点之间的平均系统时间差值;第一节点接收第二节点生成的区块,并确定接收到区块时的本地时间戳,其中,区块中携带有时间戳;第一节点根据平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块所携带的时间戳确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块。
[0008] 在一个实施例中,第一节点获取第一节点与第二节点之间的平均网络延迟和最大网络延迟,包括:第一节点重复执行N次如下信息交互操作,以得到N个网络延迟数据:第一节点发送ping报文给第二节点,其中,ping报文中携带有ping报文离开第一节点的第一时间戳;第一节点接收第二节点响应于ping报文返回的pong报文;第一节点计算第一节点接收到pong报文的第二时间戳;第一节点根据第一时间戳和第二时间戳计算第一节点和第二节点之间的网络延迟数据,其中,N为正整数;第一节点根据N个网络延迟数据确定第一节点和第二节点之间的平均网络延迟和最大网络延迟。
[0009] 在一个实施例中,第一节点根据N个网络延迟数据确定第一节点和第二节点之间的平均网络延迟和最大网络延迟,包括:
[0010] 按照以下公式计算网络延迟均值:
[0011]
[0012] 按照以下公式计算最大网络延迟:
[0013] NetDelaymax=Max(Delay0:DelayN-1);
[0014] 根据计算得到的网络延迟均值和预设的系统允许最大网络延迟,确定平均网络延迟,
[0015] 其中,NetDelayaver为网络延迟均值,NetDelaymax为最大网络延迟,i=0,...,N-1,Delayi是第一节点在第i次执行信息交互操作中计算得到的第一节点和第二节点之间的网络延迟数据,Delayi=(T2i-T1i)/2,其中,T2i是第i次信息交互操作中的第二时间戳,T1i是第i次信息交互操作中的第一时间戳。
[0016] 在一个实施例中,根据计算得到的网络延迟均值和预设的系统允许最大网络延迟,计算平均网络延迟,包括:确定网络延迟均值是否大于预设的系统允许最大网络延迟;在确定网络延迟均值大于预设的系统允许最大网络延迟的情况下,将预设的系统允许最大网络延迟确定为平均网络延迟;在确定网络延迟均值不大于预设的系统允许最大网络延迟的情况下,将网络延迟均值确定为平均网络延迟。
[0017] 在一个实施例中,第一节点根据平均网络延迟确定第一节点和第二节点之间的平均系统时间差值,包括:
[0018] 按照以下公式计算系统时间差值均值:
[0019]
[0020] 其中,TimeDiffaver为系统时间差值均值,NetDelay为平均网络延迟,T2i是第i次信息交互操作中的第二时间戳,T1i是第i次信息交互操作中的第一时间戳;
[0021] 根据系统时间差值均值和预设的系统允许最大系统时间差值,确定平均系统时间差值。
[0022] 在一个实施例中,根据系统时间差值均值和系统允许的最大系统时间差值阈值,确定平均系统时间差,可以包括:确定系统时间差值均值是否大于预设的系统允许最大系统时间差值;在确定系统时间差值均值大于预设的系统允许最大系统时间差值的情况下,将预设的系统允许最大系统时间差值确定为平均系统时间差值;在确定系统时间差值均值不大于预设的系统允许最大系统时间差值的情况下,将系统时间差值均值确定为平均系统时间差值。
[0023] 在一个实施例中,第一节点根据平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块所携带的时间戳确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块,包括验证以下不等式是否成立以确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块:
[0024] Localtime+TimeDiff+NetDelaymax≥timestamp+NetDelay≥Localtime+TimeDiff,
[0025] 其中,Localtime为本地时间戳,TimeDiff为平均系统时间差值,NetDelaymax为最大网络延迟,timestamp为区块中携带的时间戳,NetDelay为平均网络延迟。
[0026] 本申请实施例还提供了一种区块生成装置,位于第一节点中,包括:获取模块,用于获取第一节点与第二节点之间的平均网络延迟和最大网络延迟;第一确定模块,用于根据平均网络延迟确定第一节点和第二节点之间的平均系统时间差值;接收模块,用于接收第二节点生成的区块,并确定接收到区块时的本地时间戳,其中,区块中携带有时间戳;第二确定模块,用于根据平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块所携带的时间戳确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块。
[0027] 本申请实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的区块生成方法的步骤。
[0028] 本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的区块生成方法的步骤。
[0029] 在本申请实施例中,提供了一种区块生成方法,第一节点首先获取第一节点和第二节点之间的平均网络延迟、最大网络延迟和平均系统时间差值,接收第二节点生成的区块并计算接收到该区块时的本地时间戳,再根据获得的平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块所携带的时间戳确定该区块是否为第二节点在满足预设时间要求的出块时间生成的区块。上述方案中的区块生成方法,通过结合本地时间戳、区块所携带的时间戳、平均网络延迟、最大网络延迟和平均系统时间差值来综合判断接收到的区块是否为第二节点在正常出块时间生成的区块,相比于现有技术中仅基于区块所携带的时间戳来进行判断,本方案的方法可以更准确地进行判断,可以降低区块时间合理性的误判率,从而避免或减少对时间不合理的区块做出进一步验证和确认而导致的恶意分叉和系统资源浪费,进而提高区块生成效率。通过上述方案解决了现有技术中区块时间合理性判断准确率低的技术问题,达到了有效提升区块时间合理性判断的准确率以及提高区块生成效率的技术效果。

附图说明

[0030] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:
[0031] 图1示出了本申请一实施例中的区块生成方法的流程图;
[0032] 图2示出了本申请一实施例中的区块生成装置的示意图;
[0033] 图3示出了本申请一实施例中的计算机设备的示意图。

具体实施方式

[0034] 下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0035] 本领域的技术人员知道,本申请的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本申请公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
[0036] 本申请实施例提供了一种区块生成方法,如图1所示,可以包括以下步骤:
[0037] 步骤S101,第一节点获取第一节点与第二节点之间的平均网络延迟和最大网络延迟。
[0038] 区块链可以是按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。分布式账本是指交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。提议人提议的区块能否被其他区块确认取决于该区块是否是合理的,在出块时间符合的情况下,才会继续判断区块的合理性。考虑到大多数区块链系统本身并没有做时钟同步,而且由于网络中可能存在恶意节点可能恶意调整自己节点的系统时间,并且网络中不可避免的存在网络延迟,因此,需要动态诊断节点彼此间的系统时间差值和网络延迟。其中,第二节点是生成区块的节点,第一节点是验证第二节点的区块合理性的节点。首先,第一节点获取第一节点与第二节点之间的平均网络延迟和最大网络延迟。
[0039] 步骤S102,第一节点根据平均网络延迟确定第一节点和第二节点之间的平均系统时间差值。
[0040] 具体地,第一节点和第二节点之间的平均系统时间差值可以通过第一节点和第二节点之间的平均网络延迟来确定。其中,系统时间差值是指第一节点的系统时间与第二节点的系统时间的差值。
[0041] 步骤S103,第一节点接收第二节点生成的区块,并确定接收到区块时的本地时间戳,其中,区块中携带有时间戳。
[0042] 具体地,第一节点可以接受第二节点生成的区块,并确定第一节点接收到该区块时的本地时间戳。其中,第二节点生成的区块中携带有时间戳,即第二节点生成该区块的时间戳。
[0043] 步骤S104,第一节点根据平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块所携带的时间戳确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块。
[0044] 第一节点在接收到区块后,根据获得的平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块中携带的时间戳来确定该区块是否为第二节点在满足预设时间要求的出块时间生成的区块。
[0045] 上述实施例中的区块生成方法,通过结合本地时间戳、区块所携带的时间戳、平均网络延迟、最大网络延迟和平均系统时间差值来综合判断接收到的区块是否为第二节点在正常出块时间生成的区块,相比于现有技术中仅基于区块所携带的时间戳来进行判断,本方案的方法可以更准确地进行判断,可以降低区块时间合理性的误判率,从而避免或减少对时间不合理的区块做出进一步验证和确认而导致的恶意分叉和系统资源浪费,进而提高区块生成效率。通过上述方案解决了现有技术中区块时间合理性判断准确率低的技术问题,达到了有效提升区块时间合理性判断的准确率以及提高区块生成效率的技术效果。
[0046] 为了获取第一节点和第二节点之间的平均网络延迟和最大网络延迟,可以让第一节点和第二节点进行多次信息交互操作,并记录相应的时间戳,从而获取第一节点和第二节点之间的多个网络延迟数据。因此,在本申请的一些实施例中,第一节点获取第一节点与第二节点之间的平均网络延迟和最大网络延迟,可以包括:第一节点重复执行N次如下信息交互操作,以得到N个网络延迟数据:第一节点发送ping报文给第二节点,其中,ping报文中携带有ping报文离开第一节点的第一时间戳;第一节点接收第二节点响应于ping报文返回的pong报文;第一节点计算第一节点接收到pong报文的第二时间戳;第一节点根据第一时间戳和第二时间戳计算第一节点和第二节点之间的网络延迟数据,其中,N为正整数;第一节点根据N个网络延迟数据确定第一节点和第二节点之间的平均网络延迟和最大网络延迟。
[0047] 具体地,第一节点和第二节点重复执行N次信息交互操作,其中,执行次数N可以根据实际情况预先设定。在每次信息交互操作中,第一节点发送ping报文给第二节点,其中,ping报文中携带有该ping报文离开第一节点的第一时间戳;第二节点接收到ping报文后向第一节点发送pong报文,其中,pong报文中可以携带有pong报文离开第二节点的时间戳;第一节点接收第二节点返回的pong报文并计算第一节点在接收到该pong报文时的第二时间戳;第一节点根据第一时间戳和第二时间戳计算本次信息交互操作中第一节点和第二节点之间的网络延迟数据。在进行N次信息交互操作之后,第一节点根据获得的N个网络延迟数据确定第一节点和第二节点之间的平均网络延迟和最大网络延迟。通过上述方式,可以方便准确地获取第一节点和第二节点之间的平均网络延迟和最大网络延迟。
[0048] 进一步地,在本申请的一些实施例中,第一节点根据N个网络延迟数据确定第一节点和第二节点之间的平均网络延迟和最大网络延迟,可以包括:
[0049] 按照以下公式计算网络延迟均值:
[0050]
[0051] 按照以下公式计算最大网络延迟:
[0052] NetDelaymax=Max(Delay0:DelayN-1);
[0053] 根据计算得到的网络延迟均值和预设的系统允许最大网络延迟,确定平均网络延迟。
[0054] 其中,NetDelayaver为网络延迟均值,NetDelaymax为最大网络延迟,N为执行信息交互操作的总次数,i=0,...,N-1,Delayi是第一节点在第i次执行信息交互操作中计算得到的第一节点和第二节点之间的网络延迟数据,Delayi=(T2i-T1i)/2,Max(Delay0:DelayN-1)用于确定Delay0,Delay1,……DelayN-1中最大的网络延迟数据,作为第一节点和第二节点之间的最大网络延迟;其中,T2i是第i次信息交互操作中的第一节点接收到第二节点返回的pong报文时的第二时间戳,T1i是第i次信息交互操作中的第一节点发送的ping报文中携带的离开第一节点的第一时间戳。通过上述方式,在确定网络延迟均值之后,可以根据网络延迟均值和预设的系统允许最大网络延迟来综合确定平均网络延迟,使得后续区块时间合理性的判断更为准确。
[0055] 进一步地,在本申请的一些实施例中,根据计算得到的网络延迟均值和预设的系统允许最大网络延迟,计算平均网络延迟,可以包括:确定网络延迟均值是否大于预设的系统允许最大网络延迟;在确定网络延迟均值大于预设的系统允许最大网络延迟的情况下,将预设的系统允许最大网络延迟确定为平均网络延迟;在确定网络延迟均值不大于预设的系统允许最大网络延迟的情况下,将网络延迟均值确定为平均网络延迟。其中,系统允许最大网络延迟可以根据系统参数以及实际需求来设定。通过上述方式,可以将用于判断区块时间合理性的平均网络延迟限制在比较合理的范围内,从而提高判断的准确性。
[0056] 进一步地,在本申请的一些实施例中,第一节点根据平均网络延迟确定第一节点和第二节点之间的平均系统时间差值,可以包括:
[0057] 按照以下公式计算系统时间差值均值:
[0058]
[0059] 根据系统时间差值均值和预设的系统允许最大系统时间差值,确定平均系统时间差值。
[0060] 其中,TimeDiffaver为系统时间差值均值,NetDelay为平均网络延迟,T2i是第i次信息交互操作中的第一节点接收到第二节点返回的pong报文时的第二时间戳,T1i是第i次信息交互操作中的第一节点发送的ping报文中携带的离开第一节点的第一时间戳。通过上述方式,在确定系统时间差值均值之后,可以根据系统时间差值均值和预设的系统允许最大系统时间差值来综合确定平均系统时间差值,使得后续区块时间合理性的判断更为准确。
[0061] 进一步地,在本申请的一些实施例中,根据系统时间差值均值和系统允许的最大系统时间差值阈值,确定平均系统时间差,可以包括:确定系统时间差值均值是否大于预设的系统允许最大系统时间差值;在确定系统时间差值均值大于预设的系统允许最大系统时间差值的情况下,将预设的系统允许最大系统时间差值确定为平均系统时间差值;在确定系统时间差值均值不大于预设的系统允许最大系统时间差值的情况下,将系统时间差值均值确定为平均系统时间差值。其中,系统允许最大系统时间差值可以根据系统参数以及实际需求来设定。通过上述方式,可以将用于判断区块时间合理性的平均系统时间差值限制在比较合理的范围内,从而提高判断的准确性。
[0062] 进一步地,在本申请的一些实施例中,第一节点根据平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块所携带的时间戳确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块,可以包括:验证以下不等式是否成立以确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块:
[0063] Localtime+TimeDiff+NetDelaymax≥timestamp+NetDelay≥Localtime+TimeDiff。
[0064] 其中,Localtime为本地时间戳,TimeDiff为平均系统时间差值,NetDelaymax为最大网络延迟,timestamp为区块中携带的时间戳,NetDelay为平均网络延迟。通过上述方式,在区块所携带的时间戳与平均网络延迟之和在本地时间戳与平均系统时间差值之和以及本地时间戳、平均系统时间差值和最大网络延迟之和之间的情况下,可以确定该区块为第二节点在满足预设时间要求的出块时间生成的区块。在不满足上述不等式的情况下,可以确认该区块不合理,无需进行下一步的验证。通过上述方式,可以简单而准确地判断区块时间合理性,有利于提高区块生成效率。
[0065] 下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
[0066] 在本实施例中,区块生成方法可以包括以下步骤:
[0067] 步骤1,第一节点与第二节点经过N次信息交互操作,每次信息交互操作包括以下子步骤:
[0068] 步骤1.1,第一节点发送ping报文给第二节点,该报文带有它离开第一节点时的时间戳T1i;
[0069] 步骤1.2,当报文到达第二节点时,第二节点计算自己的时间戳;
[0070] 步骤1.3,第二节点回复一个pong消息给第一节点,将自己的时间戳写入pong消息;
[0071] 步骤1.4,当第一节点接收到该pong报文时,计算第一节点接收到该pong报文时的本地时间戳T2i;
[0072] 步骤1.5,第一节点可以根据T1i和T2i计算第二节点和第一节点的网络延迟数据Delayi=(T2i-T1i)/2;其中,i=0,...,N-1。
[0073] 步骤2,第一节点根据N个网络延迟数据计算第一节点和第二节点之间的平均网络延迟和最大网络延迟,可以包括以下子步骤:
[0074] 步骤2.1,按照以下公式计算网络延迟均值:
[0075]
[0076] 步骤2.1,根据计算得到的网络延迟均值和预设的系统允许最大网络延迟,确定平均网络延迟,如果网络延迟均值大于系统允许的最大网络延迟,则平均网络延迟为系统允许的最大网络延迟,否则平均网络延迟为所述网络延迟均值;
[0077] 步骤2.3,按照以下公式计算最大网络延迟:
[0078] NetDelaymax=Max(Delay0:DelayN-1)。
[0079] 步骤3,第一节点根据平均网络延迟确定第一节点和第二节点之间的平均系统时间差值,可以包括以下子步骤:
[0080] 步骤3.1,按照以下公式计算系统时间差值均值:
[0081]
[0082] 其中,TimeDiffaver为系统时间差值均值,NetDelay为平均网络延迟,T2i是第i次信息交互操作中的第二时间戳,T1i是第i次信息交互操作中的第一时间戳;
[0083] 步骤3.2,根据系统时间差值均值和预设的系统允许最大系统时间差值,确定平均系统时间差值。在系统时间差值均值大于预设的系统允许最大系统时间差值的情况下,将预设的系统允许最大系统时间差值确定为平均系统时间差值,否则将系统时间差值均值确定为所述平均系统时间差值。
[0084] 步骤4,第一节点接收第二节点生成的区块,并确定第一节点接收到区块时的本地时间戳,其中,区块中携带有时间戳。
[0085] 步骤5,第一节点根据平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块中携带的时间戳确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块,可以包括以下步骤:
[0086] 验证以下不等式是否成立以确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块:
[0087] Localtime+TimeDiff+NetDelaymax≥timestamp+NetDelay≥Localtime+TimeDiff,
[0088] 其中,Localtime为本地时间戳,TimeDiff为平均系统时间差值,NetDelaymax为最大网络延迟,timestamp为区块中携带的时间戳,NetDelay为平均网络延迟。
[0089] 在具体实施过程中,上述方案可以根据不同区块链的应用需求,动态调整系统允许最大网络延迟、系统允许最大系统时间差值以及采样次数N等参数,从而可以适配不同的区块链并行确认区块的需求。上述方案中,通过第一节点和第二节点之间的多次信息交互操作,方便准确地获取平均网络延迟、最大网络延迟和系统时间差值,然后根据获得的这些参数以及第一节点接收到第二节点生成的区块的本地时间以及该区块携带的时间戳来综合判断该区块是否为第二节点在合理出块时间生成的区块,其中,通过这些参数生成的判断条件为简单的不等式,通过确定该不等式是否成立来判断该区块时间的合理性,操作过程简单快捷,而且判断的准确率得以有效提高,从而避免或减少对时间不合理的区块做出进一步验证和确认而导致的恶意分叉和系统资源浪费,进而提高区块生成效率。
[0090] 基于同一发明构思,本申请实施例中还提供了一种区块生成装置,如下面的实施例所述。由于区块生成装置解决问题的原理与区块生成方法相似,因此区块生成装置的实施可以参见区块生成方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图2是本申请实施例的区块生成装置的一种结构框图,如图2所示,包括:获取模块201、第一确定模块202、接收模块203和第二确定模块204,下面对该结构进行说明。
[0091] 获取模块201用于获取第一节点与第二节点之间的平均网络延迟和最大网络延迟。
[0092] 第一确定模块202用于根据平均网络延迟确定第一节点和第二节点之间的平均系统时间差值。
[0093] 接收模块203用于接收第二节点生成的区块,并确定接收到区块时的本地时间戳,其中,区块中携带有时间戳。
[0094] 第二确定模块204用于根据平均网络延迟、最大网络延迟、平均系统时间差值、本地时间戳和区块所携带的时间戳确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块。
[0095] 在本申请的一些实施例中,获取模块具体可以用于:第一节点重复执行N次如下信息交互操作,以得到N个网络延迟数据:第一节点发送ping报文给第二节点,其中,ping报文中携带有ping报文离开第一节点的第一时间戳;第一节点接收第二节点响应于ping报文返回的pong报文;第一节点计算第一节点接收到pong报文的第二时间戳;第一节点根据第一时间戳和第二时间戳计算第一节点和第二节点之间的网络延迟数据,其中,N为正整数;第一节点根据N个网络延迟数据确定第一节点和第二节点之间的平均网络延迟和最大网络延迟。
[0096] 在本申请的一些实施例中,第一节点根据N个网络延迟数据确定第一节点和第二节点之间的平均网络延迟和最大网络延迟,可以包括:
[0097] 按照以下公式计算网络延迟均值:
[0098]
[0099] 按照以下公式计算最大网络延迟:
[0100] NetDelaymax=Max(Delay0:DelayN-1);
[0101] 根据计算得到的网络延迟均值和预设的系统允许最大网络延迟,确定平均网络延迟,
[0102] 其中,NetDelayaver为网络延迟均值,NetDelaymax为最大网络延迟,i=0,...,N-1,Delayi是第一节点在第i次执行信息交互操作中计算得到的第一节点和第二节点之间的网络延迟数据,Delayi=(T2i-T1i)/2,其中,T2i是第i次信息交互操作中的第二时间戳,T1i是第i次信息交互操作中的第一时间戳。
[0103] 在本申请的一些实施例中,根据计算得到的网络延迟均值和预设的系统允许最大网络延迟,计算平均网络延迟,可以包括:确定网络延迟均值是否大于预设的系统允许最大网络延迟;在确定网络延迟均值大于预设的系统允许最大网络延迟的情况下,将预设的系统允许最大网络延迟确定为平均网络延迟;在确定网络延迟均值不大于预设的系统允许最大网络延迟的情况下,将网络延迟均值确定为平均网络延迟。
[0104] 在本申请的一些实施例中,第一确定模块具体可以用于:
[0105] 按照以下公式计算系统时间差值均值:
[0106]
[0107] 其中,TimeDiffaver为系统时间差值均值,NetDelay为平均网络延迟,T2i是第i次信息交互操作中的第二时间戳,T1i是第i次信息交互操作中的第一时间戳;
[0108] 根据系统时间差值均值和预设的系统允许最大系统时间差值,确定平均系统时间差值。
[0109] 在本申请的一些实施例中,根据系统时间差值均值和系统允许的最大系统时间差值阈值,确定平均系统时间差,可以包括:确定系统时间差值均值是否大于预设的系统允许最大系统时间差值;在确定系统时间差值均值大于预设的系统允许最大系统时间差值的情况下,将预设的系统允许最大系统时间差值确定为平均系统时间差值;在确定系统时间差值均值不大于预设的系统允许最大系统时间差值的情况下,将系统时间差值均值确定为平均系统时间差值。
[0110] 在本申请的一些实施例中,第二确定模块具体可以用于:验证以下不等式是否成立以确定区块是否为第二节点在满足预设时间要求的出块时间生成的区块:
[0111] Localtime+TimeDiff+NetDelaymax≥timestamp+NetDelay≥Localtime+TimeDiff,
[0112] 其中,Localtime为本地时间戳,TimeDiff为平均系统时间差值,NetDelaymax为最大网络延迟,timestamp为区块中携带的时间戳,NetDelay为平均网络延迟。
[0113] 从以上的描述中,可以看出,本申请实施例实现了如下技术效果:通过结合本地时间戳、区块所携带的时间戳、平均网络延迟、最大网络延迟和平均系统时间差值来综合判断接收到的区块是否为第二节点在正常出块时间生成的区块,相比于现有技术中仅基于区块所携带的时间戳来进行判断,本方案的方法可以更准确地进行判断,可以降低区块时间合理性的误判率,从而避免或减少对时间不合理的区块做出进一步验证和确认而导致的恶意分叉和系统资源浪费,进而提高区块生成效率。通过上述方案解决了现有技术中区块时间合理性判断准确率低的技术问题,达到了有效提升区块时间合理性判断的准确率以及提高区块生成效率的技术效果。
[0114] 本申请实施方式还提供了一种计算机设备,具体可以参阅图3所示的基于本申请实施例提供的区块生成方法的计算机设备组成结构示意图,所述计算机设备具体可以包括输入设备31、处理器32、存储器33。其中,所述存储器33用于存储处理器可执行指令。所述处理器32执行所述指令时实现上述任意实施例中所述的区块生成方法的步骤。所述输入设备31具体可以用于输入N、系统允许最大网络延迟和系统允许最大系统时间差值等参数。
[0115] 在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交互的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
[0116] 在本实施方式中,该计算机设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
[0117] 本申请实施方式中还提供了一种基于区块生成方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现上述任意实施例中所述区块生成方法的步骤。
[0118] 在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard Disk Drive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
[0119] 在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
[0120] 显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
[0121] 应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
[0122] 以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。