防止区块链币龄攻击的方法及区块链节点与流程

文档序号:21982662发布日期:2020-08-25 19:19阅读:234来源:国知局
防止区块链币龄攻击的方法及区块链节点与流程

本申请属于通信技术领域,具体涉及一种防止区块链币龄攻击的方法、创始人节点或挖矿节点及其他记账节点。



背景技术:

对“pow+pos”混合共识机制的区块链,在这种共识之下,挖到区块的可能性不仅与当前的算力有关,同时也与你账户上持有的币的数量和每个币的持币时间相关。你拥有的币越多,持币时间越长,对于你来说挖矿的算力难度就越低,越有可能挖到区块。这就导致,部分节点买入一定数量币后,持有足够长时间后,就有能力利用币龄的增加,例如近乎的达到51%的算力,从而控制整个网络。



技术实现要素:

本申请针对部分节点买入一定数量币后,持有足够长时间后,就有能力利用币龄的增加,从而控制整个网络问题,提供一种防止区块链币龄攻击的方法、创始人节点或挖矿节点及其他记账节点。

作为本申请的第一个方面,提供一种防止区块链币龄攻击的方法,包括:

获取区块链中各个记账节点的持币数量和持币时长;

根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点;

在区块链中广播第一广播消息,所述第一广播消息中包括所述异常记账节点的标识,禁止记录该异常记账节点发布的新区块的信息和建议该异常记账节点释放持币的信息。

优选地,所述预设的记账节点包括区块链中所有的记账节点,所述根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点,包括:

分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积;

计算区块链中所有的记账节点的所述乘积的和;

分别计算所述各个记账节点的所述乘积与所述和的比值;

确定所述比值大于或等于预设阈值的记账节点为异常记账节点。

优选地,所述预设的记账节点包括黑名单中的记账节点,所述根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点,还包括:

分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积;

计算黑名单中的记账节点的所述乘积的和;

计算区块链中所有的记账节点的所述乘积的和;

计算所述黑名单中的记账节点的所述乘积的和与所述区块链中所有的记账节点的所述乘积的和的比值;

确定所述比值大于或等于预设阈值的记账节点为异常记账节点。

优选地,所述黑名单中的记账节点满足以下任一预设条件:

发布的新区块中包括多条零交易的信息;

设定时间段内发布的新区块数量超过设定数量且造成了区块链的分叉;

设定时间段内发布的新区块数量超过设定数量的次数大于预设次数且造成了区块链的分叉。优选地,所述方法还包括:

接收异常记账节点在区块链中广播的第二广播消息,所述第二广播消息是所述异常记账节点在释放所持币之后广播的;

重新计算所述比值;

若所述比值小于预设阈值,则在区块链中广播第三广播消息,所述第三广播消息中包括恢复该异常记账节点记账权的信息。

作为本申请的第二个方面,提供一种防止区块链币龄攻击的方法,包括:

接收创始人节点或挖矿节点广播的第一广播消息,获取异常记账节点的标识和禁止记录该异常记账节点发布的新区块的信息;

若未接收到第三广播消息且所述异常记账节点发布新区块,则不将新区块记入区块链账本;所述第三广播消息是创始人节点或挖矿节点在异常记账节点释放所持币之后,重新计算比值,在所述比值小于预设阈值时广播的。

优选地,所述方法还包括:

接收创始人节点或挖矿节点广播的第三广播消息,获取其中的恢复异常记账节点记账权的信息;

计算异常记账节点对应的当前的比值;

若比值小于预设阈值,则在所述异常记账节点发布新区块时,将新区块记入区块链账本。

优选地,所述方法还包括:

接收区块链中广播的第一广播消息;

释放所持预设数量的币,并在区块链中广播第二广播消息,所述第二广播消息包括本异常记账节点释放完所持预设数量的币的信息。

作为本申请的第三个方面,提供一种创始人节点或挖矿节点,包括:

获取模块,用于获取区块链中各个记账节点的持币数量和持币时长;

确定模块,用于根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点;

第一广播模块,用于在区块链中广播第一广播消息,所述第一广播消息中包括所述异常记账节点的标识,禁止记录该异常记账节点发布的新区块的信息和建议该异常记账节点释放持币的信息。

优选地,所述预设的记账节点包括区块链中所有的记账节点,所述确定模块,具体用于:

分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积;

计算区块链中所有的记账节点的所述乘积的和;

分别计算所述各个记账节点的所述乘积与所述和的比值;

确定所述比值大于或等于预设阈值的记账节点为异常记账节点。

优选地,所述预设的记账节点包括黑名单中的记账节点,所述确定模块,具体用于:

分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积;

计算黑名单中的记账节点的所述乘积的和;

计算区块链中所有的记账节点的所述乘积的和;

计算所述黑名单中的记账节点的所述乘积的和与所述区块链中所有的记账节点的所述乘积的和的比值;

确定所述比值大于或等于预设阈值的记账节点为异常记账节点。

优选地,所述黑名单中的记账节点满足以下任一预设条件:

发布的新区块中包括多条零交易的信息;

设定时间段内发布的新区块数量超过设定数量且造成了区块链的分叉;

设定时间段内发布的新区块数量超过设定数量的次数大于预设次数且造成了区块链的分叉。优选地,还包括:

接收模块,接收异常记账节点在区块链中广播的第二广播消息,所述第二广播消息是所述异常记账节点在释放所持币之后广播的;

重新计算模块,用于重新计算所述比值;

第二广播模块,用于若所述比值小于预设阈值,则在区块链中广播第三广播消息,所述第三广播消息中包括恢复该异常记账节点记账权的信息。

作为本申请的第四个方面,提供一种其他记账节点,包括:

第一接收模块,用于接收创始人节点或挖矿节点广播的第一广播消息,获取异常记账节点的标识和禁止记录该异常记账节点发布的新区块的信息;

处理模块,用于若未接收到第三广播消息且所述异常记账节点发布新区块,则不将新区块记入区块链账本;所述第三广播消息是创始人节点或挖矿节点在异常记账节点释放所持币之后,重新计算比值,在所述比值小于预设阈值时广播的。

优选地,还包括:

第二接收模块,用于接收创始人节点或挖矿节点广播的第三广播消息,获取其中的恢复异常记账节点记账权的信息;

计算模块,用于计算异常记账节点对应的当前的比值;

记录模块,用于若比值小于预设阈值,则在所述异常记账节点发布新区块时,将新区块记入区块链账本。

优选地,还包括:

第三接收模块,用于接收区块链中广播的第一广播消息;

广播模块,用于释放所持预设数量的币,并在区块链中广播第二广播消息,所述第二广播消息包括本异常记账节点释放完所持预设数量的币的信息。

本申请中,创始人节点或记账节点获取区块链中各个记账节点的持币数量和持币时长;根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点;在区块链中广播第一广播消息,所述第一广播消息中包括所述异常记账节点的标识,禁止记录该异常记账节点发布的新区块的信息和建议该异常记账节点释放持币的信息。对持币数量和持币时间的最大值进行约束和预警,达到临界情况时,系统可以自动释放所持设定数量的币,清空持币时间,避免出现等待某个或者同一个黑客控制的某几个节点的权力随着时间无限的增长而算力增长,从而控制整个网络的情况的发生。防止了区块链币龄攻击的可能,保障了区块链的安全性和可靠性,提升用户体验,促进区块链发展。

附图说明

图1为本申请第一实施例提供的一种防止区块链币龄攻击的方法的流程图;

图2为本申请第二实施例提供的一种防止区块链币龄攻击的方法的流程图;

图3为本申请第三实施例提供的一种创始人节点或挖矿节点的结构示意图;

图4为本申请第四实施例提供的一种其他记账节点的结构示意图。

具体实施方式

为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。

本申请提供一种防止区块链币龄攻击的方法、创始人节点或挖矿节点及其他记账节点。以下分别结合本申请提供的实施例的附图逐一进行详细说明。

作为本申请的第一个实施例,为了防止出现等待某个或者同一个黑客控制的某几个节点的权力随着时间无限的增长而算力增长,从而控制整个网络的情况的发生,提供一种防止区块链币龄攻击的方法。如图1所示,本节点为创始人节点或挖矿节点,所述防止区块链币龄攻击的方法,包括:

步骤101,获取区块链中各个记账节点的持币数量和持币时长。

在该步骤中,区块链的创始人节点或挖矿节点都设置一个检测模块,该检测模块具有以下功能:负责实时的更新自己内部的统计表,该统计表包括每个持币的挖矿节点的持币数量和对应的持币时长。优选地,该统计表还包括其他信息,例如区块链标识和黑名单的记账节点标识。区块链的创始人节点或记账节点,实时根据自己的检测模块检测各个记账节点的持币数量和持币时长。

步骤102,根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点。

在该步骤中,区块链的创始人节点或记账节点根据各个预设的记账节点的持币数量和持币时长进行计算,确定异常记账节点,即持币时间过长,算力过高的节点。

步骤103,在区块链中广播第一广播消息。

在该步骤中,在步骤102确定异常记账节点之后,向区块链中广播私钥签名的第一广播消息。所述第一广播消息中包括所述异常记账节点的标识,禁止记录该异常记账节点发布的新区块的信息和建议该异常记账节点释放持币的信息。优选地,所述第一广播消息中还包括区块链标识。

需要说明的是,所述预设的记账节点包括区块链中所有的记账节点和黑名单中的记账节点,当预设的记账节点包括黑名单中的记账节点时,并且黑名单中的记账节点为异常记账节点,则第一广播消息中包括黑名单中所有的记账节点的标识,禁止记录黑名单中所有的记账节点的发布的新区块的信息和建议黑名单中所有的记账节点释放持币的信息。

本申请中,创始人节点或记账节点获取区块链中各个记账节点的持币数量和持币时长;根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点;在区块链中广播第一广播消息,所述第一广播消息中包括所述异常记账节点的标识,禁止记录该异常记账节点发布的新区块的信息和建议该异常记账节点释放持币的信息。对持币数量和持币时间的最大值进行约束和预警,达到临界情况时,系统可以自动释放所持设定数量的币,清空持币时间,避免出现等待某个或者同一个黑客控制的某几个节点的权力随着时间无限的增长而算力增长,从而控制整个网络的情况的发生。防止了区块链币龄攻击的可能,保障了区块链的安全性和可靠性,提升用户体验,促进区块链发展。

在一些实施例中,所述预设的记账节点包括区块链中所有的记账节点,所述根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点(即步骤102),包括:分别计算区块链中各个记账节点的持币数量和持币时长的乘积;计算区块链中所有的记账节点的乘积的和;分别计算各个记账节点的乘积与所述和的比值;确定比值大于或等于预设阈值的记账节点为异常记账节点。

在该步骤中,一般的,将预设阈值设为51%,在步骤101中已获取区块链中各个记账节点的持币数量和持币时长,若其中的某一个记账节点的持币数量乘以对应的持币时长得到的乘积除以整个区块链的所有的记账节点的持币数量乘以对应的持币时长得到的乘积的和的比值大于或等于51%,则确定比值大于或等于51%的记账节点为异常记账节点。

在一些实施例中,所述预设的记账节点包括黑名单中的记账节点,所述根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点(即步骤102),还包括:分别计算区块链中各个记账节点的持币数量和持币时长的乘积;计算黑名单中的记账节点的乘积的和;计算区块链中所有的记账节点的所述乘积的和;计算黑名单中的记账节点的乘积的和与区块链中所有的记账节点的所述乘积的和的比值;确定比值大于或等于预设阈值的记账节点为异常记账节点。

在该步骤中,一般的,将预设阈值设为51%,在步骤101中已获取区块链中各个记账节点的持币数量和持币时长,分别计算区块链中各个记账节点的持币数量和持币时长的乘积,将黑名单中的所有记账节点的所述乘积的和为第一结果,计算区块链的所有的记账节点的所述乘积的和为第二结果,若第一结果除以第二结果的比值大于等于51%,则确定黑名单中比值大于或等于51%的记账节点为异常记账节点。

在一些实施例中,所述黑名单中的记账节点满足以下任一预设条件:发布的新区块中包括多条零交易的信息;设定时间段内发布的新区块数量超过设定数量且造成了区块链的分叉;设定时间段内发布的新区块数量超过设定数量的次数大于预设次数且造成了区块链的分叉。

具体的,创始人节点或挖矿节点实时根据自己的检测模块进行检测,当发现有的记账节点故意通过异常手段进行挖矿,包括如下情况:发布的新区块中包括多条零交易的信息;设定时间段内发布的新区块数量超过设定数量且造成了区块链的分叉;设定时间段内发布的新区块数量超过设定数量的次数大于预设次数且造成了区块链的分叉。将以上几种情况下的记账节点的区块链标识记录到黑名单中。

在一些实施例中,所述方法还包括:接收异常记账节点在区块链中广播的第二广播消息;重新计算所述比值;若所述比值小于预设阈值,则在区块链中广播第三广播消息,

具体的,创始人节点和记账节点接收异常记账节点在区块链中广播的第二广播消息,所述第二广播消息是所述异常记账节点在释放所持币之后广播的,如果发现了该第二广播消息中携带释放完所持预设数量的币的信息,重新计算步骤102中的比值,如果比值小于预设阈值了,例如51%,则创始人节点或记账节点均向区块链中发送私钥签名的第三广播信息,所述第三广播消息中包括恢复该异常记账节点记账权的信息。

作为本申请的第二个实施例,为了防止出现等待某个或者同一个黑客控制的某几个节点的权力随着时间无限的增长而算力增长,从而控制整个网络的情况的发生,提供一种防止区块链币龄攻击的方法。如图2所示,本节点为其他记账节点,所述防止区块链币龄攻击的方法,包括:

步骤201,接收创始人节点或挖矿节点广播的第一广播消息。

步骤202,获取异常记账节点的标识和禁止记录该异常记账节点发布的新区块的信息。

步骤203,若未接收到第三广播消息且所述异常记账节点发布新区块,则不将新区块记入区块链账本。

在步骤201-203中,区块链中的其他记账节点收到第一广播消息,获取异常记账节点的标识和禁止记录该异常记账节点发布的新区块的信息,在该异常记账节点释放自己所持预设数量的币达到标准线以下之前(即未接收到第三广播消息之前),即使该异常记账节点发布新的区块,也不理会,直接忽略。也就是说该异常记账节点即使自己依旧挖矿,整个区块链网络也无人认可该新区块,不将新区块记入区块链账本。所述第三广播消息是创始人节点或挖矿节点在异常记账节点释放所持币之后,重新计算比值,在所述比值小于预设阈值时广播的。

本申请中,对持币数量和持币时间的最大值进行约束和预警,达到临界情况时,系统可以自动释放所持设定数量的币,清空持币时间,避免出现等待某个或者同一个黑客控制的某几个节点的权力随着时间无限的增长而算力增长,从而控制整个网络的情况的发生。防止了区块链币龄攻击的可能,保障了区块链的安全性和可靠性,提升用户体验,促进区块链发展。

在一些实施例中,所述方法还包括:接收创始人节点或挖矿节点广播的第三广播消息,获取其中的恢复异常记账节点记账权的信息;计算异常记账节点对应的当前的比值;若比值小于预设阈值,则在异常记账节点发布新区块时,将新区块记入区块链账本。

具体的,当区块链中的其他记账节点接收到第三广播消息时,获取其中的恢复异常记账节点记账权的信息,对其私钥签名进行验证,然后对该异常记账节点的比值进行验证,计算异常记账节点对应的当前的比值,如果验证出确实恢复到了预设阈值以下,则认可其记账权。在该异常记账节点发布新区块时,将新区块记入区块链账本。

需要说明的是,当预设的记账节点包括黑名单中的记账节点时,并且黑名单中的记账节点为异常记账节点,只有当黑名单中的所有异常记账节点的对应的比值恢复到预设阈值以下时,才认可黑名单中的所有异常记账节点的记账权。当黑名单中的异常记账节点发布新区块时,将新区块记录到区块链账本中。

在一些实施例中,所述方法还包括:接收区块链中广播的第一广播消息;释放所持预设数量的币,并在区块链中广播第二广播消息。

具体的,异常记账节点释放所持预设数量的币后,该异常记账节点通过私钥签名的广播消息的方式在区块链中广播第二广播消息,所述第二广播消息包括本异常记账节点释放完所持预设数量的币的信息。

作为本申请的第三个实施例,提供一种创始人节点或挖矿节点,如图3所示,包括获取模块11,确定模块12,第一广播模块13。本申请所提供的记账节点用于执行本申请的第一个实施例所提供的防止区块链币龄攻击的方法。具体如下:

获取模块11,用于获取区块链中各个记账节点的持币数量和持币时长。

确定模块12,用于根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点。

第一广播模块13,用于在区块链中广播第一广播消息,所述第一广播消息中包括所述异常记账节点的标识,禁止记录该异常记账节点发布的新区块的信息和建议该异常记账节点释放持币的信息。

优选地,所述预设的记账节点包括区块链中所有的记账节点,所述确定模块,具体用于:

分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积。

计算区块链中所有的记账节点的所述乘积的和。

分别计算所述各个记账节点的所述乘积与所述和的比值。

确定所述比值大于或等于预设阈值的记账节点为异常记账节点。

优选地,所述预设的记账节点包括黑名单中的记账节点,所述确定模块,具体用于:

分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积。

计算黑名单中的记账节点的所述乘积的和。

计算区块链中所有的记账节点的所述乘积的和。

计算所述黑名单中的记账节点的所述乘积的和与所述区块链中所有的记账节点的所述乘积的和的比值。

确定所述比值大于或等于预设阈值的记账节点为异常记账节点。

优选地,所述黑名单中的记账节点满足以下任一预设条件:

发布的新区块中包括多条零交易的信息。

设定时间段内发布的新区块数量超过设定数量且造成了区块链的分叉。

设定时间段内发布的新区块数量超过设定数量的次数大于预设次数且造成了区块链的分叉。

优选地,还包括:

接收模块,接收异常记账节点在区块链中广播的第二广播消息,所述第二广播消息是所述异常记账节点在释放所持币之后广播的。

重新计算模块,用于重新计算所述比值。

第二广播模块,用于若所述比值小于预设阈值,则在区块链中广播第三广播消息,所述第三广播消息中包括恢复该异常记账节点记账权的信息。

作为本申请的第四个实施例,提供一种其他记账节点,如图4所示,包括第一接收模块21,获取模块22,处理模块23。本申请所提供的其他记账节点用于执行本申请的第二个实施例所提供的防止区块链币龄攻击的方法。具体如下:

第一接收模块21,用于接收创始人节点或挖矿节点广播的第一广播消息。

获取模块22,用于获取异常记账节点的标识和禁止记录该异常记账节点发布的新区块的信息。

处理模块23,用于若未接收到第三广播消息且所述异常记账节点发布新区块,则不将新区块记入区块链账本;所述第三广播消息是创始人节点或挖矿节点在异常记账节点释放所持币之后,重新计算比值,在所述比值小于预设阈值时广播的。

优选地,还包括:

第二接收模块,用于接收创始人节点或挖矿节点广播的第三广播消息,获取其中的恢复异常记账节点记账权的信息。

计算模块,用于计算异常记账节点对应的当前的比值。

记录模块,用于若比值小于预设阈值,则在所述异常记账节点发布新区块时,将新区块记入区块链账本。

优选地,还包括:

第三接收模块,用于接收区块链中广播的第一广播消息。

广播模块,用于释放所持预设数量的币,并在区块链中广播第二广播消息,所述第二广播消息包括本异常记账节点释放完所持预设数量的币的信息。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

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