logo好方法网

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


技术摘要:
本申请公开了一种防止区块链币龄攻击的方法、创始人节点或挖矿节点及其他记账节点,所述方法包括:获取区块链中各个记账节点的持币数量和持币时长;根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点;在区块链中广播第一广播消息,所述第一广播  全部
背景技术:
对“POW POS”混合共识机制的区块链,在这种共识之下,挖到区块的可能性不仅与 当前的算力有关,同时也与你账户上持有的币的数量和每个币的持币时间相关。你拥有的 币越多,持币时间越长,对于你来说挖矿的算力难度就越低,越有可能挖到区块。这就导致, 部分节点买入一定数量币后,持有足够长时间后,就有能力利用币龄的增加,例如近乎的达 到51%的算力,从而控制整个网络。
技术实现要素:
本申请针对部分节点买入一定数量币后,持有足够长时间后,就有能力利用币龄 的增加,从而控制整个网络问题,提供一种防止区块链币龄攻击的方法、创始人节点或挖矿 节点及其他记账节点。 作为本申请的第一个方面,提供一种防止区块链币龄攻击的方法,包括: 获取区块链中各个记账节点的持币数量和持币时长; 根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点; 在区块链中广播第一广播消息,所述第一广播消息中包括所述异常记账节点的标 识,禁止记录该异常记账节点发布的新区块的信息和建议该异常记账节点释放持币的信 息。 优选地,所述预设的记账节点包括区块链中所有的记账节点,所述根据各个预设 的记账节点的持币数量、持币时长和预设阈值确定异常记账节点,包括: 分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积; 计算区块链中所有的记账节点的所述乘积的和; 分别计算所述各个记账节点的所述乘积与所述和的比值; 确定所述比值大于或等于预设阈值的记账节点为异常记账节点。 优选地,所述预设的记账节点包括黑名单中的记账节点,所述根据各个预设的记 账节点的持币数量、持币时长和预设阈值确定异常记账节点,还包括: 分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积; 计算黑名单中的记账节点的所述乘积的和; 计算区块链中所有的记账节点的所述乘积的和; 计算所述黑名单中的记账节点的所述乘积的和与所述区块链中所有的记账节点 的所述乘积的和的比值; 确定所述比值大于或等于预设阈值的记账节点为异常记账节点。 优选地,所述黑名单中的记账节点满足以下任一预设条件: 5 CN 111586067 A 说 明 书 2/8 页 发布的新区块中包括多条零交易的信息; 设定时间段内发布的新区块数量超过设定数量且造成了区块链的分叉; 设定时间段内发布的新区块数量超过设定数量的次数大于预设次数且造成了区 块链的分叉。优选地,所述方法还包括: 接收异常记账节点在区块链中广播的第二广播消息,所述第二广播消息是所述异 常记账节点在释放所持币之后广播的; 重新计算所述比值; 若所述比值小于预设阈值,则在区块链中广播第三广播消息,所述第三广播消息 中包括恢复该异常记账节点记账权的信息。 作为本申请的第二个方面,提供一种防止区块链币龄攻击的方法,包括: 接收创始人节点或挖矿节点广播的第一广播消息,获取异常记账节点的标识和禁 止记录该异常记账节点发布的新区块的信息; 若未接收到第三广播消息且所述异常记账节点发布新区块,则不将新区块记入区 块链账本;所述第三广播消息是创始人节点或挖矿节点在异常记账节点释放所持币之后, 重新计算比值,在所述比值小于预设阈值时广播的。 优选地,所述方法还包括: 接收创始人节点或挖矿节点广播的第三广播消息,获取其中的恢复异常记账节点 记账权的信息; 计算异常记账节点对应的当前的比值; 若比值小于预设阈值,则在所述异常记账节点发布新区块时,将新区块记入区块 链账本。 优选地,所述方法还包括: 接收区块链中广播的第一广播消息; 释放所持预设数量的币,并在区块链中广播第二广播消息,所述第二广播消息包 括本异常记账节点释放完所持预设数量的币的信息。 作为本申请的第三个方面,提供一种创始人节点或挖矿节点,包括: 获取模块,用于获取区块链中各个记账节点的持币数量和持币时长; 确定模块,用于根据各个预设的记账节点的持币数量、持币时长和预设阈值确定 异常记账节点; 第一广播模块,用于在区块链中广播第一广播消息,所述第一广播消息中包括所 述异常记账节点的标识,禁止记录该异常记账节点发布的新区块的信息和建议该异常记账 节点释放持币的信息。 优选地,所述预设的记账节点包括区块链中所有的记账节点,所述确定模块,具体 用于: 分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积; 计算区块链中所有的记账节点的所述乘积的和; 分别计算所述各个记账节点的所述乘积与所述和的比值; 确定所述比值大于或等于预设阈值的记账节点为异常记账节点。 优选地,所述预设的记账节点包括黑名单中的记账节点,所述确定模块,具体用 6 CN 111586067 A 说 明 书 3/8 页 于: 分别计算所述区块链中各个记账节点的持币数量和持币时长的乘积; 计算黑名单中的记账节点的所述乘积的和; 计算区块链中所有的记账节点的所述乘积的和; 计算所述黑名单中的记账节点的所述乘积的和与所述区块链中所有的记账节点 的所述乘积的和的比值; 确定所述比值大于或等于预设阈值的记账节点为异常记账节点。 优选地,所述黑名单中的记账节点满足以下任一预设条件: 发布的新区块中包括多条零交易的信息; 设定时间段内发布的新区块数量超过设定数量且造成了区块链的分叉; 设定时间段内发布的新区块数量超过设定数量的次数大于预设次数且造成了区 块链的分叉。优选地,还包括: 接收模块,接收异常记账节点在区块链中广播的第二广播消息,所述第二广播消 息是所述异常记账节点在释放所持币之后广播的; 重新计算模块,用于重新计算所述比值; 第二广播模块,用于若所述比值小于预设阈值,则在区块链中广播第三广播消息, 所述第三广播消息中包括恢复该异常记账节点记账权的信息。 作为本申请的第四个方面,提供一种其他记账节点,包括: 第一接收模块,用于接收创始人节点或挖矿节点广播的第一广播消息,获取异常 记账节点的标识和禁止记录该异常记账节点发布的新区块的信息; 处理模块,用于若未接收到第三广播消息且所述异常记账节点发布新区块,则不 将新区块记入区块链账本;所述第三广播消息是创始人节点或挖矿节点在异常记账节点释 放所持币之后,重新计算比值,在所述比值小于预设阈值时广播的。 优选地,还包括: 第二接收模块,用于接收创始人节点或挖矿节点广播的第三广播消息,获取其中 的恢复异常记账节点记账权的信息; 计算模块,用于计算异常记账节点对应的当前的比值; 记录模块,用于若比值小于预设阈值,则在所述异常记账节点发布新区块时,将新 区块记入区块链账本。 优选地,还包括: 第三接收模块,用于接收区块链中广播的第一广播消息; 广播模块,用于释放所持预设数量的币,并在区块链中广播第二广播消息,所述第 二广播消息包括本异常记账节点释放完所持预设数量的币的信息。 本申请中,创始人节点或记账节点获取区块链中各个记账节点的持币数量和持币 时长;根据各个预设的记账节点的持币数量、持币时长和预设阈值确定异常记账节点;在区 块链中广播第一广播消息,所述第一广播消息中包括所述异常记账节点的标识,禁止记录 该异常记账节点发布的新区块的信息和建议该异常记账节点释放持币的信息。对持币数量 和持币时间的最大值进行约束和预警,达到临界情况时,系统可以自动释放所持设定数量 的币,清空持币时间,避免出现等待某个或者同一个黑客控制的某几个节点的权力随着时 7 CN 111586067 A 说 明 书 4/8 页 间无限的增长而算力增长,从而控制整个网络的情况的发生。防止了区块链币龄攻击的可 能,保障了区块链的安全性和可靠性,提升用户体验,促进区块链发展。 附图说明 图1为本申请第一实施例提供的一种防止区块链币龄攻击的方法的流程图; 图2为本申请第二实施例提供的一种防止区块链币龄攻击的方法的流程图; 图3为本申请第三实施例提供的一种创始人节点或挖矿节点的结构示意图; 图4为本申请第四实施例提供的一种其他记账节点的结构示意图。
下载此资料需消耗2积分,
分享到:
收藏