区块链出块时间的确定方法、装置、设备及存储介质转让专利

申请号 : CN201811524327.3

文献号 : CN109636389B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 金志宇何光宇金铸武二亮

申请人 : 东软集团股份有限公司

摘要 :

本申请提供一种区块链出块时间的确定方法、装置、设备及存储介质,该方法包括:每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;基于本次出块最佳时间及所述本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于所述下一次出块时间进行下一次出块。由于考虑了用户成本和系统成本,并结合了历史时间梯度动态调整出块时间,可以准确地估算下一次出块时间,使用户成本和系统成本达到最优,解决现有技术用户成本和系统成本不平衡导致成本较高的问题。

权利要求 :

1.一种区块链出块时间的确定方法,其特征在于,包括:每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;

基于本次出块最佳时间及所述本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于所述下一次出块时间进行下一次出块,所述历史时间梯度为历史相邻两次的出块最佳时间的梯度;

基于所述用户信息,确定所述第一时间段内的用户成本,包括:基于所述用户信息,采用如下公式一确定所述用户成本Cu:其中,L’为用户等级系数,是常数;n为所述第一时间段内提交交易事务的用户数量;Li为第i个用户的用户等级;T为出块时间;ti为第i个用户的提交时间;

基于所述系统信息,确定所述第一时间段内的系统成本,包括:基于所述系统信息,采用如下公式二确定所述系统成本Cs:其中,m为系统中主机的数量;Tm为主机成本系数,是常数;T为出块时间;Pj为第j个主机Mj的出块成本;Tn为网络成本系数,是常数;d为瓶颈网络的数量;Qk为第k个瓶颈网络Nk的出块成本。

2.根据权利要求1所述的方法,其特征在于,所述基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间,包括:获取所述第一时间段内提交交易事务的用户信息和系统信息;

基于所述用户信息,确定所述第一时间段内的用户成本;

基于所述系统信息,确定所述第一时间段内的系统成本;

基于所述第一时间段内的用户成本及系统成本,获得使用户成本和系统成本平衡的出块时间T’作为所述本次出块最佳时间。

3.根据权利要求1所述的方法,其特征在于,所述基于本次出块最佳时间及所述本次出块时刻对应的历史时间梯度,确定下一次出块时间,包括:从历史最佳出块时间梯度曲线获取与所述本次出块时刻对应的历史时间梯度;所述历史最佳出块时间梯度曲线的点代表历史本次出块最佳时间与历史上次出块最佳时间的差值;

对所述本次出块最佳时间与所述本次出块时刻对应的历史时间梯度的平均值进行求和,得到所述下一次出块时间。

4.根据权利要求3所述的方法,其特征在于,在对所述本次出块最佳时间与所述本次出块时间对应的历史时间梯度的平均值进行求和之前,所述方法还包括:对各所述历史时间梯度进行排序;

获取排在中间的一个历史时间梯度作为参考梯度;

计算各所述历史时间梯度与所述参考梯度的差值的绝对值;

删除与所述参考梯度的差值的绝对值较大的至少一个历史时间梯度。

5.根据权利要求1-4任一项所述的方法,其特征在于,在所述基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间之后,所述方法还包括:计算所述本次出块最佳时间与前一次出块最佳时间的差值,作为所述第一时间段的起始时刻对应的出块最佳时间梯度,并进行记录以生成历史最佳出块时间梯度曲线。

6.一种区块链出块时间的确定装置,其特征在于,包括:确定模块,用于每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;

处理模块,用于基于本次出块最佳时间及所述本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于所述下一次出块时间进行下一次出块,所述历史时间梯度为历史相邻两次的出块最佳时间的梯度;

所述确定模块,具体用于:

基于所述用户信息,采用如下公式一确定所述用户成本Cu:其中,L’为用户等级系数,是常数;n为所述第一时间段内提交交易事务的用户数量;Li为第i个用户的用户等级;T为出块时间;ti为第i个用户的提交时间;

所述确定模块,具体用于:

基于所述系统信息,采用如下公式二确定所述系统成本Cs:其中,m为系统中主机的数量;Tm为主机成本系数,是常数;T为出块时间;Pj为第j个主机Mj的出块成本;Tn为网络成本系数,是常数;d为瓶颈网络的数量;Qk为第k个瓶颈网络Nk的出块成本。

7.一种计算机设备,其特征在于,包括:至少一个处理器和存储器;

所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现权利要求1-5中任一项所述的方法。

8.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-5中任一项所述的方法。

说明书 :

区块链出块时间的确定方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及区块链技术领域,尤其涉及一种区块链出块时间的确定方法、装置、设备及存储介质。

背景技术

[0002] 区块链是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术。区块链是把一段时间内发生的事务处理以区块为单位进行存储,并以密码学算法将区块按时间先后顺序连接成链条的一种数据结构。
[0003] 在一个区块链系统中,交易事务在区块链出块前并不能被确定执行,一般的区块链系统都是要等到出块之后才能确定交易事务成功(有的还需等待多个块)。所以在区块链出块之前,交易事务提交方必须等待区块链出块才能确定交易成功,而等待的过程无疑为交易多方增加了巨大的成本。所以在一个区块链系统中,快速出块让交易事务快速执行成功,可大大减少交易成本。但出块的速度会对整个区块链系统的软硬件系统造成负担,造成系统成本的增加。

发明内容

[0004] 本申请提供一种区块链出块时间的确定方法、装置、设备及存储介质,以解决现有技术出块效率低等缺陷。
[0005] 本申请第一个方面提供一种区块链出块时间的确定方法,包括:
[0006] 每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;
[0007] 基于本次出块最佳时间及所述本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于所述下一次出块时间进行下一次出块,所述历史时间梯度为历史相邻两次的出块最佳时间的梯度。
[0008] 可选地,所述基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间,包括:
[0009] 获取所述第一时间段内提交交易事务的用户信息和系统信息;
[0010] 基于所述用户信息,确定所述第一时间段内的用户成本;
[0011] 基于所述系统信息,确定所述第一时间段内的系统成本;
[0012] 基于所述第一时间段内的用户成本及系统成本,获得使用户成本和系统成本平衡的出块时间T’作为所述本次出块最佳时间。
[0013] 可选地,基于所述用户信息,确定所述第一时间段内的用户成本,包括:
[0014] 基于所述用户信息,采用如下公式一确定所述用户成本Cu:
[0015]
[0016] 其中,L’为用户等级系数,是常数;n为所述第一时间段内提交交易事务的用户数量;Li为第i个用户的用户等级;T为出块时间;ti为第i个用户的提交时间。
[0017] 可选地,基于所述系统信息,确定所述第一时间段内的系统成本,包括:
[0018] 基于所述系统信息,采用如下公式二确定所述系统成本Cs:
[0019]
[0020] 其中,m为系统中主机的数量;Tm为主机成本系数,是常数;T为出块时间;Pj为第j个主机Mj的出块成本;Tn为网络成本系数,是常数;d为瓶颈网络的数量;Qk为第k个瓶颈网络Nk的出块成本。
[0021] 可选地,所述基于本次出块最佳时间及所述本次出块时刻对应的历史时间梯度,确定下一次出块时间,包括:
[0022] 从历史最佳出块时间梯度曲线获取与所述本次出块时刻对应的历史时间梯度;所述历史最佳出块时间梯度曲线的点代表历史本次出块最佳时间与历史上次出块最佳时间的差值;
[0023] 对所述本次出块最佳时间与所述本次出块时刻对应的历史时间梯度的平均值进行求和,得到所述下一次出块时间。
[0024] 可选地,在对所述本次出块最佳时间与所述本次出块时间对应的历史时间梯度的平均值进行求和之前,所述方法还包括:
[0025] 对各所述历史时间梯度进行排序;
[0026] 获取排在中间的一个历史时间梯度作为参考梯度;
[0027] 计算各所述历史时间梯度与所述参考梯度的差值的绝对值;
[0028] 删除与所述参考梯度的差值的绝对值较大的至少一个历史时间梯度。
[0029] 可选地,在所述基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间之后,所述方法还包括:
[0030] 计算所述本次出块最佳时间与前一次出块最佳时间的差值,作为所述第一时间段的起始时刻对应的出块最佳时间梯度,并进行记录以生成所述历史最佳出块时间梯度曲线。
[0031] 本申请第二个方面提供一种区块链出块时间的确定装置,包括:
[0032] 确定模块,用于每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;
[0033] 处理模块,用于基于本次出块最佳时间及所述本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于所述下一次出块时间进行下一次出块,所述历史时间梯度为历史相邻两次的出块最佳时间的梯度。
[0034] 可选地,所述确定模块,具体用于:
[0035] 获取所述第一时间段内提交交易事务的用户信息和系统信息;
[0036] 基于所述用户信息,确定所述第一时间段内的用户成本;
[0037] 基于所述系统信息,确定所述第一时间段内的系统成本;
[0038] 基于所述第一时间段内的用户成本及系统成本,获得使用户成本和系统成本平衡的出块时间T’作为所述本次出块最佳时间。
[0039] 可选地,所述确定模块,具体用于:
[0040] 基于所述用户信息,采用如下公式一确定所述用户成本Cu:
[0041]
[0042] 其中,L’为用户等级系数,是常数;n为所述第一时间段内提交交易事务的用户数量;Li为第i个用户的用户等级;T为出块时间;ti为第i个用户的提交时间。
[0043] 可选地,所述确定模块,具体用于:
[0044] 基于所述系统信息,采用如下公式二确定所述系统成本Cs:
[0045]
[0046] 其中,m为系统中主机的数量;Tm为主机成本系数,是常数;T为出块时间;Pj为第j个主机Mj的出块成本;Tn为网络成本系数,是常数;d为瓶颈网络的数量;Qk为第k个瓶颈网络Nk的出块成本。
[0047] 可选地,所述处理模块,具体用于:
[0048] 从历史最佳出块时间梯度曲线获取与所述本次出块时刻对应的历史时间梯度;所述历史最佳出块时间梯度曲线的点代表历史本次出块最佳时间与历史上次出块最佳时间的差值;
[0049] 对所述本次出块最佳时间与所述本次出块时刻对应的历史时间梯度的平均值进行求和,得到所述下一次出块时间。
[0050] 可选地,所述处理模块,还用于:
[0051] 对各所述历史时间梯度进行排序;
[0052] 获取排在中间的一个历史时间梯度作为参考梯度;
[0053] 计算各所述历史时间梯度与所述参考梯度的差值的绝对值;
[0054] 删除与所述参考梯度的差值的绝对值较大的至少一个历史时间梯度。
[0055] 可选地,所述处理模块,还用于:
[0056] 计算所述本次出块最佳时间与前一次出块最佳时间的差值,作为所述第一时间段的起始时刻对应的出块最佳时间梯度,并进行记录以生成所述历史最佳出块时间梯度曲线。
[0057] 本申请第三个方面提供一种计算机设备,包括:至少一个处理器和存储器;
[0058] 所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现第一个方面提供的方法。
[0059] 本申请第四个方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现第一个方面提供的方法。
[0060] 本申请提供的区块链出块时间的确定方法、装置、设备及存储介质,通过每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;基于本次出块最佳时间及所述本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于所述下一次出块时间进行下一次出块,由于考虑了用户成本和系统成本,并结合了历史时间梯度动态调整出块时间,可以准确地估算下一次出块时间,使用户成本和系统成本达到最优,解决现有技术用户成本和系统成本不平衡导致成本较高的问题。

附图说明

[0061] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0062] 图1为本申请一实施例提供的区块链出块时间的确定方法的流程示意图;
[0063] 图2为本申请一实施例提供的周期为1天的历史最佳出块时间梯度曲线示意图;
[0064] 图3为本申请再一实施例提供的多日的历史最佳出块时间梯度曲线示意图;
[0065] 图4为本申请一实施例提供的区块链出块时间的确定装置的结构示意图;
[0066] 图5为本申请一实施例提供的计算机设备的结构示意图。
[0067] 通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

[0068] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0069] 首先对本申请所涉及的名词进行解释:
[0070] 出块:是指区块链系统通过共识后在区块链上生成区块。
[0071] 区块链系统:是指由多个区块链节点构成的集体维护可靠数据库的系统。区块链一般分为共有链、联盟链和私有链。公有链是指全世界任何人都可以随时进入系统中读取数据、发送可确认交易、竞争记账的区块链。公有链通常被认为是完全去中心化的,因为没有任何人或机构可以控制或者篡改其中数据的读写。联盟链是指由若干个机构共同参与管理的区块链,每个机构都运行着一个或多个区块链节点,其中的数据只允许系统内不同的机构进行读写和发送交易,并且共同来记录交易数据。私有链是指其写入权限是由某个组织和机构控制的区块链。参与的区块链节点的资格会被严格的限制,由于参与的区块链节点是有限和可控的,因此私有链往往可以有极快的交易速度、更好的隐私保护、更低的交易成本、不容易被恶意攻击、并且能够做到身份认证等金融行业必须的要求。
[0072] 本申请实施例提供的区块链出块时间的确定方法,适用于各种类型的区块链系统,尤其适用于联盟链和私有链。本申请实施例提供的方法可以是由区块链系统中的区块链节点执行。
[0073] 此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
[0074] 下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
[0075] 实施例一
[0076] 本实施例提供一种区块链出块时间的确定方法,用于区块链系统中出块时间的确定。本实施例的执行主体为区块链出块时间的确定装置,该装置可以设置在区块链节点中。
[0077] 如图1所示,为本实施例提供的区块链出块时间的确定方法的流程示意图,该方法包括:
[0078] 步骤101,每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间。
[0079] 在每完成一次出块(称为本次出块)后,可以基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间。前一次出块是指在本次出块之前的相邻一次出块,比如本次出块在12点,前一次出块在11:50。用户成本是指用户的出块成本,即用户在提交交易事务后到出块这段等待时间内产生的成本。系统成本是指区块链系统在第一时间段内产生的成本,比如包括主机出块成本、网络出块成本等等。其中,用户成本与出块时间成正比,系统成本与出块时间成反比。出块时间是指相邻两个区块的生成时间间隔(即两次出块之间的时间间隔),也即,从一个区块生成到下一个区块生成之间的时长。比如第4个区块的生成时刻为11:50,第5个区块的生成时刻为12:00,则第5个区块的出块时间为10分钟。对于从开始生成一个区块到完成该区块的出块的时间非常短,在这里忽略不计。
[0080] 可以理解地,在初始状态下,其出块时间可以是根据经验预先设置的,比如10分钟。非初始状态下,则其实际出块时间可以是在其前一区块生成后按照本申请实施例提供的方法确定的出块时间。即,本申请实施例提供的方法是周期性循环的,每一个非创世区块(创世区块是指区块链上的第一个区块,非创世区块即不是第一个区块的区块)的出块时间都可以是根据其前一区块的成本来确定。
[0081] 本申请实施例可以按照天、周、月等作为一个循环周期(也称周期),将该周期内按照出块时刻划分时间段,比如以一天为一个周期,从0点开始,到生成一个区块的时刻(出块时刻)为一个时间段,从这个区块的生成时刻到下一区块的生成时刻为一个时间段,以此类推,比如划分结果为:0:00-0:10、0:10-0:18、0:18-0:30等等。
[0082] 两天内,同一时刻所在的时间段可以称为是一致的时间段,这里的一致,可以是严格的相同的时间段,也可以是具有重复时段的时间段,比如第1天的12:00-12:10与第2天的12:02-12:11,可以认为是一致的时间段。具体可以根据实际需求设置。
[0083] 第一时间段即可以是一个周期中的任意一个时间段,其是根据本次出块时刻与本次出块的前一次出块时刻来确定。本次出块是指当前时刻最新一次出块。
[0084] 本次出块最佳时间是根据本次出块的实际用户成本及系统成本,对两种成本进行平衡后获得的最佳时间(这里不考虑计算出的本次出块最佳时间与本次实际出块时间的差导致的提交交易事务的用户数量的差异以及系统中主机数量和瓶颈网络数量的差异,比如,本次实际出块时间是10分钟,这10分钟内提交交易事务的用户数量为100,若计算获得的本次出块最佳时间是8分钟,那么实际8分钟内提交交易事务的用户数量可能不到100,在确定本次出块最佳时间时,还是按照10分钟内的用户数量和主机数量、瓶颈网络数量)。由于用户成本与出块时间成正比(用户成本是指用户的出块成本,即用户在提交交易事务后到出块这段等待时间内产生的成本,等待时间越长用户成本越高,比如用户人工成本、耗电成本等),系统成本与出块时间成反比(系统成本是指区块链系统在第一时间段内产生的成本,比如包括主机出块成本、网络出块成本等等,出块时间间隔越短,对主机与网络的性能要求越高,即系统成本越高),因此根据已出块的第一时间段内的用户成本及系统成本,确定本次出块最佳时间,若用户成本高于系统成本,证明需要减小出块时间,若用户成本低于系统成本,证明需要增大出块时间。用户成本体现的是用户的价值和等待时间,出块时间越长,用户等待时间越长,体验越差,可能造成用户的流失,因此需要减小出块时间,系统成本体现的是对系统资源的消耗,出块时间越短,对系统的资源消耗越多,因此需要增大出块时间,为了能既保证用户体验又不过多消耗系统资源,需要尽量使用户体验与系统资源消耗的平衡。比如,本次实际出块时间为10分钟,可以获取这十分钟内的用户信息及系统信息,采用与出块时间T相关的用户成本确定公式和系统成本确定公式确定实际的用户成本和系统成本,还可以以T为变量,来确定本次出块最佳时间,使用户理论成本和系统理论成本平衡。
[0085] 步骤102,基于本次出块最佳时间及本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于下一次出块时间进行下一次出块。
[0086] 在确定了本次出块最佳时间后,则可以基于本次出块最佳时间及本次出块时刻对应的历史时间梯度,来确定下一次出块时间,以使区块链系统基于确定的下一次出块时间进行下一次出块,也即生成下一区块。
[0087] 历史时间梯度为历史每完成一次出块时计算并记录的历史本次出块最佳时间与历史上一次出块最佳时间的差值。
[0088] 示例性的,以1天作为一个循环周期,在今天本次出块时刻为12:00,需要计算下一次出块时间时,采用的本次出块时刻对应的历史时间梯度可以为昨天计算并记录的,比如昨天在11:50进行第一次出块后,在12:00进行第二次出块(实际出块时间为10分钟,计算获得的出块最佳时间为8分钟),在12:09进行第三次出块(实际出块时间为9分钟,计算获得的出块最佳时间为8分钟30秒),则第三次出块的出块最佳时间与第二次出块的出块最佳时间的差值(30秒),记录为12:00这一时刻对应的时间梯度,对于今天来说,昨天记录的这些时间梯度即成为历史时间梯度。将一个循环周期内的历史时间梯度,比如昨天一天内的历史时间梯度,可以拟合成一条历史最佳出块时间梯度曲线,在后续可以从该历史最佳出块时间梯度曲线上获得任意时刻对应的历史时间梯度。
[0089] 示例性的,对于本次出块时刻对应的历史时间梯度,则可以从历史最佳出块时间梯度曲线获取本次出块时刻对应的历史时间梯度。比如本次出块时刻为12:30,则从历史最佳出块时间梯度曲线获取12:30时刻对应的历史时间梯度。
[0090] 可选地,历史最佳出块时间梯度曲线可以包括很多条,因为每个循环周期都可以记录并生成一条历史最佳出块时间梯度曲线,比如对于今天来说,昨天、前天等以往的每一天都可以生成一条历史最佳出块时间梯度曲线,则可以获得本次出块时刻对应的多个历史时间梯度,则可以将这些历史时间梯度取平均值,将平均值作为本次出块时刻对应的历史时间梯度。比如,第1天,有X个时间段,每个时间段都按照上述确定方式确定了出块最佳时间,从第1个时间段开始,将第2个时间段的出块最佳时间与第1个时间段的出块最佳时间的差值,与第2个时间段的起始时刻(也即第1个时间段的终止时刻)对应记录;将第3个时间段的出块最佳时间与第2个时间段的出块最佳时间的差值,与第3个时间段的起始时刻(也即第2个时间段的终止时刻)对应记录,以此类推,记录1天内的最佳出块时间梯度,比如在11:50完成了一次出块,确定本次出块最佳时间为10分钟,其前一次出块完成时刻为11:42,确定的当时的出块最佳时间为8分钟,则本次出块最佳时间与前一次出块最佳时间的差值为2分钟,记录11:42与2分钟的对应关系,即在11:42时刻的最佳出块时间梯度为2分钟。基于各时刻对应的最佳出块时间梯度,形成这1天的最佳出块时间梯度曲线。由于出块时间是动态调整的,不同周期的出块的时间段可能不完全相同,因此,在使用历史时刻的最佳出块时间梯度时,可以根据该历史时刻对应的最佳出块时间梯度曲线获得任意时刻的最佳出块时间梯度。
[0091] 示例性的,本次出块最佳时间为8分钟,本次出块时刻对应的历史时间梯度为30秒,则根据本次出块最佳时间和本次出块时刻对应的历史时间梯度确定的下一次出块时间为8分30秒。
[0092] 示例性的,如图2所示,为本实施例提供的周期为1天的历史最佳出块时间梯度曲线示意图。
[0093] 随着时间的积累,每个循环周期都可以形成一个历史最佳出块时间梯度曲线,从而会形成大量的历史最佳出块时间梯度曲线,这些曲线可能会产生一定的规律,即,在不同周期内,一致的时刻或时间段,用户提交交易事务情况可能相差不大,比如在历史周期的11:50对应的出块最佳时间梯度为3分钟,那么在当前的11:50仍可以基于本次出块最佳时间加上3分钟作为下一次出块时间。
[0094] 可选地,还可以将本次出块最佳时间作为下一次出块时间。
[0095] 可选地,还可以是预先根据经验预先设置一个周期中不同时段之间的出块时间差,将本次出块最佳时间加上本次出块对应的时间段与下一时间段出块时间差,确定下一次出块时间。具体如何基于本次出块最佳时间确定下一次出块时间,本实施例不做限定。
[0096] 本实施例提供的区块链出块时间的确定方法,通过每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;基于本次出块最佳时间及本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于下一次出块时间进行下一次出块,由于考虑了用户成本和系统成本,并结合了历史时间梯度动态调整出块时间,可以准确地估算下一次出块时间,使用户成本和系统成本达到最优,解决现有技术用户成本和系统成本不平衡导致成本较高的问题。
[0097] 实施例二
[0098] 本实施例对实施例一提供的方法做进一步补充说明。
[0099] 作为一种可实施的方式,在上述实施例一的基础上,可选地,步骤101具体包括:
[0100] 步骤1011,获取第一时间段内提交交易事务的用户信息和系统信息。
[0101] 具体的,用户信息包括用户标识、用户等级及提交时间,系统信息包括系统中每个主机的出块成本及系统中每个瓶颈网络的出块成本。
[0102] 其中,瓶颈网络是指区块链系统中的关键网络的出块成本。主机的出块成本和瓶颈网络的出块成本可以是预先存储在区块链节点中的,也可以是从区块链系统外获得的,具体获取方式不做限定。用户信息可以从区块链获得。
[0103] 步骤1012,基于用户信息,确定第一时间段内的用户成本。
[0104] 可选地,基于用户信息,采用如下公式一确定用户成本Cu:
[0105]
[0106] 其中,L’为用户等级系数,是常数;n为第一时间段内提交交易事务的用户数量;Li为第i个用户的用户等级;T为出块时间;ti为第i个用户的提交时间。用户等级是预先为各用户设置好的。
[0107] 步骤1013,基于系统信息,确定第一时间段内的系统成本。
[0108] 可选地,基于系统信息,采用如下公式二确定系统成本Cs:
[0109]
[0110] 其中,m为系统中主机的数量;Tm为主机成本系数,是常数;T为出块时间;Pj为第j个主机Mj的出块成本;Tn为网络成本系数,是常数;d为瓶颈网络的数量;Qk为第k个瓶颈网络Nk的出块成本。这里可以将第一时间段的起始时刻作为0时刻,即ti为用户真实提交时刻相对第一时间段的起始时刻的时长,示例性的,第一时间段为11:50-12:00,若用户Ui的提交时刻为11:52,则其提交时间ti为2分钟,若用户Ui的提交时刻为11:55,则其提交时间ti为5分钟。
[0111] 步骤1014,基于第一时间段内的用户成本及系统成本,获得使用户成本和系统成本平衡的出块时间T’作为本次出块最佳时间。
[0112] 示例性地,将公式一和公式二以T为变量,获得使Cu=Cs的T’作为本次出块最佳时间。
[0113] 即公式一和公式二中其他参数均为已知,T为未知,求解Cu=Cs的T’。
[0114] 作为另一种可实施的方式,在上述实施例一的基础上,可选地,步骤102具体包括:
[0115] 步骤1021,从历史最佳出块时间梯度曲线获取与本次出块时刻对应的历史时间梯度。
[0116] 其中,历史最佳出块时间梯度曲线的点代表历史本次出块最佳时间与历史上次出块最佳时间的差值。
[0117] 具体的,可以从历史最佳出块时间梯度曲线获取本次出块时刻对应的历史时间梯度。比如本次出块时刻为12:30,则从历史最佳出块时间梯度曲线获取12:30时刻对应的历史时间梯度。
[0118] 步骤1022,对本次出块最佳时间与本次出块时刻对应的历史时间梯度的平均值进行求和,得到下一次出块时间。
[0119] 随着时间的积累,每个循环周期都可以形成一条历史最佳出块时间梯度曲线,从而会形成大量的历史最佳出块时间梯度曲线,比如对于今天来说,昨天、前天等以往的每一天都可以生成一条历史最佳出块时间梯度曲线,则可以获得本次出块时刻对应的多个历史时间梯度,则可以将这些历史时间梯度取平均值,将平均值作为本次出块时刻对应的历史时间梯度。将本次出块最佳时间与本次出块时刻对应的历史时间梯度的平均值进行求和,得到下一次出块时间。
[0120] 可选地,若第一时间段为11:50-12:00,即本次出块时刻为12:00,需要确定下一次出块时间,为了使下一次出块时间估算更优化,可以获取大量的12:00对应的历史时间梯度,计算平均值。将本次出块最佳时间与平均时间梯度的和作为下一次出块时间。
[0121] 基于大量的历史最佳出块时间梯度的平均时间梯度来确定下一次出块时间,可以提高出块时间估算的准确性,进一步优化出块成本。
[0122] 可选地,在对本次出块最佳时间与本次出块时间对应的历史时间梯度的平均值进行求和之前,该方法还包括:
[0123] 步骤2021,对各历史时间梯度进行排序。
[0124] 步骤2022,获取排在中间的一个历史时间梯度作为参考梯度。
[0125] 步骤2023,计算各历史时间梯度与参考梯度的差值的绝对值。
[0126] 步骤2024,删除与参考梯度的差值的绝对值较大的至少一个历史时间梯度。
[0127] 示例性的,如图3所示,为本实施例提供的多日的历史最佳出块时间梯度曲线示意图。当本次出块在B时刻(即B时间点时),可以获取全部在B时间点的曲线的值,假设共有y条曲线,在B时间点,曲线Ax的值为Vx。对{V1,V2,…,Vx,…,Vy}进行排序,排序后取中位数Vp,计算所有曲线值与Vp的差值,如第x条曲线的差值为(Vp-Vx),去掉差值的绝对值最大的E%的噪音,再计算剩下的(1-E%)的曲线值的平均值V即为平均时间梯度。本次出块最佳时间为T’,则下一次出块时间R’=T’+V。
[0128] 通过对大量的历史时间梯度进行过滤去噪,可以进一步提高下一次出块时间的准确性。
[0129] 作为另一种可实施的方式,在上述实施例一的基础上,可选地,在基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间之后,方法还包括:
[0130] 计算本次出块最佳时间与前一次出块最佳时间的差值,作为第一时间段的起始时刻对应的最佳出块时间梯度,并进行记录以生成历史最佳出块时间梯度曲线。即记录相邻两时间段的最佳出块时间梯度。当完成一个循环周期的记录后,则可以形成该循环周期对应的历史最佳出块时间梯度曲线。通过在区块链系统运行过程中,不断积累历史数据,持续把最新数据补充到历史数据中,历史数据越来越多,出块时间的估算会越来越准确。
[0131] 可以理解地,本申请实施例中以1天作为一个循环周期,在实际应用中,也可以是以一周作为一个循环周期,或者一个月作为一个循环周期,具体可以根据实际需求进行设置,本申请实施例不做限定。
[0132] 需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
[0133] 本实施例提供的区块链出块时间的确定方法,通过每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;基于本次出块最佳时间及本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于下一次出块时间进行下一次出块,由于考虑了用户成本和系统成本,并结合了历史时间梯度动态调整出块时间,可以准确地估算下一次出块时间,使用户成本和系统成本达到最优,解决现有技术用户成本和系统成本不平衡导致成本较高的问题。并且基于大量的历史最佳出块时间梯度的平均时间梯度来确定下一次出块时间,可以提高出块时间估算的准确性,进一步优化出块成本。
[0134] 实施例三
[0135] 本实施例提供一种区块链出块时间的确定装置,用于执行上述实施例一的方法。
[0136] 如图4所示,为本实施例提供的区块链出块时间的确定装置的结构示意图。该区块链出块时间的确定装置30包括确定模块31和处理模块32。
[0137] 其中,确定模块31用于每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;处理模块32用于基于本次出块最佳时间及本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于下一次出块时间进行下一次出块,历史时间梯度为历史相邻两次的出块最佳时间的梯度。
[0138] 关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0139] 根据本实施例提供的区块链出块时间的确定装置,通过每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;基于本次出块最佳时间及本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于下一次出块时间进行下一次出块,由于考虑了用户成本和系统成本,并结合了历史时间梯度动态调整出块时间,可以准确地估算下一次出块时间,使用户成本和系统成本达到最优,解决现有技术用户成本和系统成本不平衡导致成本较高的问题。
[0140] 在一种实施方式中,可选地,确定模块,具体用于:
[0141] 获取第一时间段内提交交易事务的用户信息和系统信息;
[0142] 基于用户信息,确定第一时间段内的用户成本;
[0143] 基于系统信息,确定第一时间段内的系统成本;
[0144] 基于第一时间段内的用户成本及系统成本,获得使用户成本和系统成本平衡的出块时间T’作为本次出块最佳时间。
[0145] 在一种实施方式中,可选地,确定模块,具体用于:
[0146] 基于用户信息,采用如下公式一确定用户成本Cu:
[0147]
[0148] 其中,L’为用户等级系数,是常数;n为第一时间段内提交交易事务的用户数量;Li为第i个用户的用户等级;T为出块时间;ti为第i个用户的提交时间。
[0149] 在一种实施方式中,可选地,确定模块,具体用于:
[0150] 基于系统信息,采用如下公式二确定系统成本Cs:
[0151]
[0152] 其中,m为系统中主机的数量;Tm为主机成本系数,是常数;T为出块时间;Pj为第j个主机Mj的出块成本;Tn为网络成本系数,是常数;d为瓶颈网络的数量;Qk为第k个瓶颈网络Nk的出块成本。
[0153] 在一种实施方式中,可选地,处理模块,具体用于:
[0154] 从历史最佳出块时间梯度曲线获取与本次出块时刻对应的历史时间梯度;历史最佳出块时间梯度曲线的点代表历史本次出块最佳时间与历史上次出块最佳时间的差值;
[0155] 对本次出块最佳时间与本次出块时刻对应的历史时间梯度的平均值进行求和,得到下一次出块时间。
[0156] 基于大量的历史最佳出块时间梯度的平均时间梯度来确定下一次出块时间,可以提高出块时间估算的准确性,进一步优化出块成本。
[0157] 在一种实施方式中,可选地,处理模块,还用于:
[0158] 对各历史时间梯度进行排序;
[0159] 获取排在中间的一个历史时间梯度作为参考梯度;
[0160] 计算各历史时间梯度与参考梯度的差值的绝对值;
[0161] 删除与参考梯度的差值的绝对值较大的至少一个历史时间梯度。
[0162] 通过对大量的历史时间梯度进行过滤去噪,可以进一步提高下一次出块时间的准确性。
[0163] 在一种实施方式中,可选地,处理模块,还用于:
[0164] 计算本次出块最佳时间与前一次出块最佳时间的差值,作为第一时间段的起始时刻对应的出块最佳时间梯度,并进行记录以生成历史最佳出块时间梯度曲线。
[0165] 通过不断累积历史最佳出块时间梯度曲线,使得后续估算时可以有更多历史数据依据,积累数据越多,估算的下一次出块时间越准确。
[0166] 实施例四
[0167] 本实施例提供一种计算机设备,用于执行上述实施例提供的方法。该计算机设备可以为区块链系统中的区块链节点。
[0168] 如图5所示,为本实施例提供的计算机设备的结构示意图。该计算机设备50包括:至少一个处理器51和存储器52;
[0169] 存储器存储计算机程序;至少一个处理器执行存储器存储的计算机程序,以实现上述实施例提供的方法。
[0170] 根据本实施例的计算机设备,通过每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;基于本次出块最佳时间及本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于下一次出块时间进行下一次出块,由于考虑了用户成本和系统成本,并结合了历史时间梯度动态调整出块时间,可以准确地估算下一次出块时间,使用户成本和系统成本达到最优,解决现有技术用户成本和系统成本不平衡导致成本较高的问题。并且基于大量的历史最佳出块时间梯度的平均时间梯度来确定下一次出块时间,可以提高出块时间估算的准确性,进一步优化出块成本。
[0171] 实施例五
[0172] 本实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,计算机程序被执行时实现上述任一实施例提供的方法。
[0173] 根据本实施例的计算机可读存储介质,通过每完成一次出块后,基于本次出块时刻与前一次出块时刻之间的第一时间段内的用户成本及系统成本,确定本次出块最佳时间;基于本次出块最佳时间及本次出块时刻对应的历史时间梯度,确定下一次出块时间,以使区块链系统基于下一次出块时间进行下一次出块,由于考虑了用户成本和系统成本,并结合了历史时间梯度动态调整出块时间,可以准确地估算下一次出块时间,使用户成本和系统成本达到最优,解决现有技术用户成本和系统成本不平衡导致成本较高的问题。
[0174] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0175] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0176] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0177] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0178] 本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0179] 最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。