基于出块历史贡献的抗双花攻击的区块链共识方法及系统技术方案

技术编号:38577730 阅读:6 留言:0更新日期:2023-08-26 23:24
本发明专利技术公开了一种基于出块历史贡献的抗双花攻击的区块链共识方法及系统。该方法包括:区块链节点根据最近存储在区块链上的阈值数量的区块信息,计算所述区块链节点生成新区块的工作量证明的难度,所述最近存储在区块链上的阈值数量的区块中由所述区块链节点产生的数量越多,则所述区块链节点生成新区块的工作量证明的难度越大;区块链节点根据在出块历史贡献计算所述区块链节点的出块难度调节系数;区块链节点根据工作量证明的难度和出块难度调节系数计算工作量证明的难度目标值,求解出使新区块的区块头哈希值小于所述难度目标值的随机值后,广播所述新区块;区块链节点对收到的新区块验证通过后,将所述新区块存储在区块链中。区块链中。区块链中。

【技术实现步骤摘要】
基于出块历史贡献的抗双花攻击的区块链共识方法及系统
(一)

[0001]本专利技术涉及计算机网络
,尤其涉及一种基于出块历史贡献的抗双花攻击的区块链共识方法及系统。
(二)
技术介绍

[0002]区块链实现了一个分布式账本,在缺乏集中可信的分布式场景中实现各节点对可信数据管理和价值交易的一致。参与者相互协作一起维护系统运行,并通过共识协议定期选举节点将新的交易数据写入账本中。账本是由一个个包含交易记录的区块通过密码学的方式串联组成,由于每一个区块都包含前一个区块的内容,所以这使得修改前面区块的数据内容变得十分困难。因此,区块链技术具有去中心化、防篡改和交易可追溯等特性。
[0003]节点在区块链中竞争出块的权利,生成新的区块。在采取基于工作量证明(POW,Proof Of Work)共识的区块链中,竞争出块的节点通过拥有的计算能力穷举随机数求解一个预先设定的数学难题,不断执行计算并产生一个随机数,直到产生的随机数满足区块链设定的数学难题要求,解出该难题的节点获得下一次出块的权利。每个区块中含有交易数据,在此区块之后每再产生一个区块,该区块的确认数就加1,当确认数达到设定的区块确认阈值及以上时,通常认为该区块中的交易比较安全并难以逆转。
[0004]目前基于工作量证明共识的区块链存在将同一笔数字货币花费多次的双花攻击威胁。以典型的基于工作量证明共识的比特币为例:

攻击者的地址1发起一笔向受害者转账数字货币的交易A;

受害者在交易A收到达到设定的区块确认阈值及以上的后续区块确认后,认可交易A,并向攻击者转账现金或是发送商品;

攻击者的地址1发起一笔向地址2转账数字货币的交易B,该交易的交易金额为攻击者地址1中的数字货币总数,由于交易A与交易B冲突,因此区块链产生分叉;

攻击者通过自身算力优势,生成使交易B获得确认阈值及以上数量的后续区块确认后,并使包含交易B的区块链的长度超过包含交易A的链,根据最长链原则,交易B被认为有效,而交易A被认为无效,攻击者攻击成功实现双花攻击。
(三)
技术实现思路

[0005]为了解决上述问题,本专利技术实施例提供一种基于出块历史贡献的抗双花攻击的区块链共识方法。
[0006]第一方面,本专利技术实施例提供一种基于出块历史贡献的抗双花攻击的区块链共识方法,包括:区块链节点根据最近存储在区块链上的阈值数量的区块信息,计算所述区块链节点生成新区块的工作量证明的难度,所述最近存储在区块链上的阈值数量的区块中由所述区块链节点产生的数量越多,则所述区块链节点生成新区块的工作量证明的难度越大;区块链节点根据在出块历史贡献计算所述区块链节点的出块难度调节系数,使所述区块链节点的出块历史贡献不高于低阈值或高于高阈值时难度调节系数较低,高于低阈值但不高于高阈值时难度调节系数较高;区块链节点根据工作量证明的难度和出块难度调节系数计算工作量证明的难度目标值,求解出使新区块的区块头哈希值小于所述难度目标值的随机
值后,广播所述新区块;区块链节点对收到的新区块验证通过后,将所述新区块存储在区块链中。
[0007]进一步地,区块链节点的出块历史贡献为所述区块链节点生成的区块数量占区块链所有区块数量的比例。
[0008]进一步地,对收到的新区块验证包括:
[0009]验证新区块数据格式和长度是否符合区块格式和长度要求,如果不符合则验证不通过;
[0010]验证新区块内所有交易内容是否合法,如果不符合则验证不通过;
[0011]验证新区块的区块头哈希值是否小于工作量证明的难度目标值,如果不符合则验证不通过。
[0012]第二方面,本专利技术实施例提供一种基于出块历史贡献的抗双花攻击的区块链共识系统,包括:难度计算模块,用于区块链节点计算生成新区块的工作量证明的难度目标值;求解模块,用于区块链节点求解出使新区块的区块头哈希值小于工作量证明的难度目标值的随机值,并广播所述新区块;验证模块,用于区块链节点对收到的新区块验证通过后,将所述新区块存储在区块链中。
[0013]第三方面,本专利技术实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现本专利技术第一方面一种基于出块历史贡献的抗双花攻击的区块链共识方法的步骤。
[0014]第四方面,本专利技术实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本专利技术第一方面一种基于出块历史贡献的抗双花攻击的区块链共识方法的步骤。
(四)附图说明
[0015]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0016]图1为本专利技术实施例提供的基于出块历史贡献的抗双花攻击的区块链共识方法流程图;
[0017]图2为本专利技术实施例提供的基于出块历史贡献的抗双花攻击的区块链共识系统结构图;
[0018]图3为本专利技术实施例提供的一种电子设备的实体结构示意图。
(五)具体实施方式
[0019]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0020]区块链实现了一个分布式账本,在缺乏集中可信的分布式场景中实现各节点对可
信数据管理和价值交易的一致。基于工作量证明(PoW,Proof of Work)的共识是节点基于拥有的计算能力通过穷举随机数的方式求解一个预先设定的数学难题,不断执行计算并产生一个随机数,直到产生的随机数满足区块链设定的数学难题要求,最先解出该难题的节点获得下一次出块的权利。每个区块中含有交易数据,在此区块之后每再产生一个区块,该区块的确认数就加1,当确认数达到设定的区块确认阈值及以上时,通常认为该区块中的交易比较安全并难以逆转。不同的区块链的确认阈值不同,比特币的确认数量是6、以太坊的确认数量是12。基于工作量证明共识的区块链存在将同一笔数字货币花费多次的双花攻击威胁。攻击者为了实现双花攻击,首先发起第一笔交易,然后接着发起与第一笔交易花费有冲突的第二笔交易。为了能够让区块链认可第二笔交易,攻击者通过自身算力优势,生成确认数达到设定的确认阈值及以上的后续区块,使包含第二笔交易的区块链的长度超过包含第一笔交易的链,根据最长链原则,第二笔交易为有效,而第一笔交易A被认为无效,攻击者攻击成功实现双花攻击。
[0021]为了防止双花交易攻击,就需要通过增加拥有算力优势的攻击者出块难度,使其难以或者无法生成确认数达到设定的区块确认阈本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于出块历史贡献的抗双花攻击的区块链共识方法,其特征在于,包括:区块链节点根据最近存储在区块链上的阈值数量的区块信息,计算所述区块链节点生成新区块的工作量证明的难度,所述最近存储在区块链上的阈值数量的区块中由所述区块链节点产生的数量越多,则所述区块链节点生成新区块的工作量证明的难度越大;区块链节点根据在出块历史贡献计算所述区块链节点的出块难度调节系数,使所述区块链节点的出块历史贡献不高于低阈值或高于高阈值时难度调节系数较低,高于低阈值但不高于高阈值时难度调节系数较高;区块链节点根据工作量证明的难度和出块难度调节系数计算工作量证明的难度目标值,求解出使新区块的区块头哈希值小于所述难度目标值的随机值后,广播所述新区块;区块链节点对收到的新区块验证通过后,将所述新区块存储在区块链中。2.根据权利要求1所述的基于出块历史贡献的抗双花攻击的区块链共识方法,其特征在于,区块链节点的出块历史贡献为所述区块链节点生成的区块数量占区块链所有区块数量的比例。3.根据权利要求1所述的基于出块历史贡献的抗双花攻击的区块链共识方法,其特征在于,对收到的新区块验证包括:验证新区块数据格式和长度是否符合区块格式和长度要求,如果不符合则验证不通过;验证新区块内所有交易内...

【专利技术属性】
技术研发人员:王东滨智慧吴东哲徐洁陆月明时金桥周董超田志宏张宇赵龙帅杨涛王泽栋宋江陈灿李家宁
申请(专利权)人:北京邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1