一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于网络拓扑的区块链PoW自私挖矿攻击防御方法

2022-04-27 02:04:48 来源:中国专利 TAG:

一种基于网络拓扑的区块链pow自私挖矿攻击防御方法
技术领域
1.本发明属于区块链技术领域,具体为一种基于网络拓扑的区块链pow自私挖矿攻击防御技术。


背景技术:

2.3.1部分属性解释
3.区块:区块为区块链组成的基本单位。区块链系统每隔一段时间会产生一个区块,该区块通过hash值与上一个区块连接,形成链性数据结构。每个区块中会打包从上一个区块结束后,网络中发生的若干笔交易(在比特币中,主要为比特币的转账交易)。
4.区块链分支:在一个已存在区块中,在网络中可能出现两个或两个以上合法的新区块,他们的hash值都能与已存在的区块对应上,但是可能由于发布区块的节点在网络中的位置不同、或者对交易的选择偏好不同、区块中打包的内容以及区块挖矿的解不同等原因,导致几个新区块内容不同。这种情况下,网络就出现了分支。按现有的比特币协议,节点会给予它第一个收到的合法区块继续挖下一个区块链。此时就形成了多条支链。
5.支链的长度也可以是任意正整数(包括1,也就是仅有一个区块)。
6.最长链原则:当网络中有一个支链的长度最长,该支链向全网广播的时候,会被所有节点认可,其他节点即使原来正在基于其他支链挖矿,此时也会放弃其他支链。于此同时,被放弃的支链上所有的区块也无法获得奖励。
7.3.2区块链工作量证明(pow)
8.工作量证明proof of work(pow)是目前在区块链特别是公链中,影响力最大的共识机制。pow通过计算一个数值(nonce),使得拼揍上交易数据后内容的hash值满足一个特殊的规定。在区块链中,节点尝试并成功找到满足的hash值之后,会立即向全网进行广播,并获得打包区块的权利以及相应的激励,网络的节点收到广播打包区块,会立刻对其进行验证。目前,比特币就采用了pow的机制,以太坊也基于pow机制起步。尽管pow在生产过程中会产生大量的电力浪费,但在目前的区块链公链领域中,pow特别是比特币系统在安全性、可靠性上仍然具有一定标杆意义。
9.3.3pow算力
10.根据目前以比特币为例的pow算法,每个区块的产生对应了一个节点通过计算,成功找到了满足规定的解(或者说值nonce)。理论上来说,网络中的每个节点都有概率获得区块链产生的奖励。而当我们拉长区块链运行的时间,可以通过评估每个节点获得区块奖励的概率来衡量我们参与pow挖矿的收益。
11.近年来随着国际上比特币、以太坊等数字货币与法定货币之间的交易渠道增多,数字货币本身具有的稀缺性以及数字货币领域方面的营销宣传等多重影响,数字货币的法定货币购买价格提升到一个不得忽视的程度。甚至有部分公司与国家公开将数字货币视作资产配置和价值流通的工具。
12.因此,在当前市场环境下,获取pow算力投入到区块链共识机制中获得激励是在商
业上具有盈利潜能的做法。pow算力在区块链公链数字货币领域中,具有相当重要的战略意义:一方面是其标志了拥有算力的节点在区块链中获得激励收益的期望、另一方面所有参与者也在警惕pow算力过于集中而导致区块链账本的分布式属性失效。
13.3.4自私挖矿攻击技术
14.在全网节点都诚实工作的情况下,每个节点所获得的奖励比例与节点提供的算力比例是公平对应的。而区块链的攻击技术能够让某些节点获得超额收益,其他诚实工作的节点收益会抵御其拥有的算力比例。
15.自私挖矿成立的前提与区块链采用最长链原则的共识机制有关联,并且在人们发现自私挖矿技术前[1],51%算力攻击被公认是pow区块链面临的唯一安全性挑战。因此,在介绍自私挖矿以前,简要介绍最长链原则以及“51%”算力攻击。
[0016]
3.4.1最长链原则
[0017]
由于在显示网络中,节点和节点之间的信息传输存在一定延迟。因此会有一定概率出现当一个节点a在某一个区块中挖矿成功并广播后,网络中比较远的节点b还未听到这个广播节点的时候,也成功挖出了一个区块。这个时候,整个网络中节点a距离较近的节点由于优先听到了节点a的广播内容,会认可节点a的区块链并基于此继续挖新的区块链。而优先听到节点b区块链的也一样,此时网络中短时间就会出现一个分叉,我们将其分为子链a和子链b。此时,如果基于子链a先成功挖出了一个区块链,并且在子链b未能挖出新区块前,广播到网络中所有的节点,则全网节点会放弃b链,重新在最长a链开始下一个区块的计算(如图1所示)。
[0018]
总的来说,在pow最长链原则下的区块链账本中,没有一个绝对正确的账本概念,仅有网络中的所有节点最终会承认哪个账本的结果。而在这个系统下,以比特币为例的分布式账本,能够以一个非常高的概率保证账本的安全性。
[0019]
3.4.2“51%”算力攻击
[0020]
如图2所示
[0021]
当网络中区块链的算力过于集中时,当这个掌握集中算力的节点想要作恶,那么对它而言,发起账本的篡改是可行的。
[0022]
根据最长链原则,如果网络中有一个节点拥有全网50%以上的算力,那么意味着如果我们拉长观察时间,网络中的大多数区块链都将由这个节点挖出。利用这个特点,具有50%以上算力的节点可以完成“双花”攻击。
[0023]
假设在主链中,第i个区块链记录了节点a花掉了一笔费用并换取了相应的服务或商品,但是从此刻开始,节点a将动用其全部的算力从第i-1个区块开始,不理会主链(其他节点所认同的链)重新进行pow算力计算,并生成新的区块,区块中不包含a花掉的费用。由于a节点的算力大于全网其他节点的算力,只要时间足够长,则节点a一定能通过pow算力得到一个比其他节点所挖的“主链”更长的链,当这一刻到来,节点a将更长的链公布到网络上,则根据最长链原则,所有链将会舍弃原来的“主链”,节点a制造的分支就成为了新的主链。之前记录a话费的那个区块,也随着原“主链”被舍弃,一同作废了。此时账本中就不会记录a在原始的第i区块链中的那笔话费。节点a完成了双花攻击。
[0024]
3.4.3自私挖矿获利原理
[0025]
自私挖矿是一种利用pow算力最长链原则,主要基于隐藏自身已挖出的合法区块,
并通过一系列延迟广播该区块的方式,最优化自己的收益,且超过了自身算力占全网的比例(另一方面也侵害了诚实节点所能够获得收益)。
[0026]
而自私挖矿方法的出现,使得拥有较大算力(即使不超过全网算力的50%)的节点能够获得大于算力比例的收益比例。
[0027]
一种典型的自私挖矿原理如下:
[0028]
假设自私节点a(或者是一个由多个共同执行节点构成的“矿池”节点),其算力占全网算力的比例为α。如果节点a成功挖出一个区块后,将该序区块信息保密,并在这个区块基础上继续挖下一个区块链。那么一定存在一定的概率,使得节点a所挖的区块链数量领先网络中剩余节点在挖的数量。如图3所示,假设节点a在一定概率下,能够连续领先挖到3个区块链。此时节点a隐藏3个区块不公布,其他节点则会沿着另一个分支继续工作。由于a能够接收到其他节点公布的区块信息,当其他节点所挖的区块链数量只落后一个时,此时节点a向全网公布之前隐藏的三个区块,此时按最长链原则,其他诚实节点所处理的两个区块链将会被作废。
[0029]
在这个过程中,节点a的不诚实行为浪费了诚实节点算力,使得节点a收益的期望大于公平的比例,完成了一次自私挖矿攻击。
[0030]
详细的自私挖矿介绍可以参考文献[1],该文献指出,只要节点a所拥有的算力α满足:
[0031][0032]
时,自私挖矿能够获得额外的收益。其中,γ受网络拓扑影响,如果网络中节点a能够更快速广播传达到的节点比例越高,则γ值越大。
[0033]
3.5网络的中心介数
[0034]
中心介数是表征网络中某个节点在网络中重要性的衡量指标。具体含义,中心介数是基于最短路径的图中心性的一种度量。对于连通图中的每一对节点,在两节点之间至少存在一条最短路径,使得路径通过的边数(对于未加权图)或者边权重的和(对于加权图)最小。节点的中心介数是经过该节点的最短路径的数量或者最短路径数量占所有路径数量的比例。
[0035]
3.5.1网络的中心介数与自私挖矿的关系
[0036]
自私挖矿节点的网络中心介数越大,自私挖矿的收益越大
[0037]
网路中心介数与自私挖矿的关系主要在下面描述的一种自私挖矿场景中起作用(与3.4.3中描述原理时的例子有区别)
[0038]
如图4所示,自私挖矿节点处于中心介数较高的位置,所有虚线框内的节点向框外找最短路径,都要通过自私挖矿节点。也就意味着自私挖矿节点有能力先于框外节点对框内节点进行信息广播。
[0039]

假设自私挖矿节点仅领先主链一个区块,并且隐藏未公布。
[0040]

其他诚实节点(假设节点a)可能在自私节点挖出新区块前,先挖出一个新的合法区块,形成支链j,导致自私挖矿节点不领先主链,无法直接适用最长链原则让支链j作废。
[0041]

此时,自私挖矿节点在接受到节点a广播的支链j后,马上向外广播支链i的存
在。此时,由于自私挖矿节点的网络拓扑位置关系,虚线框内的节点会接受到合法的支链i,并且在上面继续挖矿。此时,自私挖矿节点就达到了裹挟更多算力为自己支链服务的目标,如此长期执行该策略,会让自私挖矿节点的收益期望大于诚实节点。(在这个策略下,一方面可以提升继续隐藏并领先主链两个区块链的概率,另一方面,即使暂时被诚实节点赶上,由于能够裹挟一部分诚实节点在支链i上继续挖矿,自己隐藏唯一一个区块获得认可的概率也会大于自己本身的算力比例)
[0042]
综上,自私挖矿节点收益和它能够影响到的节点占比成正向关系。因此,本发明的发明任务是基于网络中心介数抵抗自私挖矿的合理有效。
[0043]
参考文献
[0044]
[1]eyal,ittay,and emin g
ü
n sirer."majority is not enough:bitcoin mining is vulnerable."international conference on financial cryptography and data security.springer,berlin,heidelberg,2014.
[0045]
brandes,ulrik."a faster algorithm for betweenness centrality."journal of mathematical sociology 25.2(2001):163-177.


技术实现要素:

[0046]
本发明的发明目的是公开一种针对基于网络中心介数自私挖矿的抵抗方法。本发明基于网络拓扑的中心介数,实现降低区块链pow自私挖矿攻击的收益,提升区块链自私挖矿攻击的成本。
[0047]
技术方案
[0048]
一种基于网络拓扑的区块链pow自私挖矿攻击防御方法,其特征是,包括:
[0049]
1)计算与更新全网节点中心介数
[0050]
在原有的区块链网络外,加入用于计算所有节点中心介数的计算模块,并将计算结果传递给区块链网络中的所有节点,作为抵抗自私攻击模块的输入参数;
[0051]
每间隔一段时间重新更新计算模块进行网络中心介数的计算;在间隔期间,采用上一次更新的值;计算模块输出的计算结果为网络中每个节点的中心介数,用cb(vi)表示,其中vi∈v,v为区块链网络中所有节点的集合;
[0052]
2)在区块链共识机制中,采用基于中心介数的分支选择算法实现对自私挖矿的抵抗
[0053]
抵抗自私攻击模块引入中心介数,当节点收到两个长度相同的合法支链时,随机重新选择其中一个继续挖矿;算法过程包括步骤如下:
[0054]
2.1)网络中由两个节点在接近的时间向全网广播了各自合法的分支,且分支长度相同;
[0055]
2.2)由于存在两个分支的发送时间差以及网络拓扑的导致的传输时间差,节点1接收到两个分支有一个先后顺序,假设节点2的支链信息先与节点3被广播到节点1,此时,节点1按照原pow最长链原则基于先收到的节点2分支进行挖矿;
[0056]
2.3)在节点1还没有基于节点2的支链挖出新区块钱,又收到了来自节点3的一条支链,且支链长度与在步骤2.2)中收到节点2的支链长度相同,此时当节点1停止当前的挖矿行为,并按以下概率重新随机选择一次支链:
[0057][0058][0059]
即节点进行一次随机运算,有p
v2
的概率会选择节点2分支,p
v3
的概率会选择节点3分支;
[0060]
如果节点同时面临两个以上的分支选择,则通用的选择概率表达书如下:
[0061][0062]
p
vi
:选择节点i支链的概率
[0063]
cb(vi):节点i的网络中心介数
[0064]
2.4)基于2.3)中的选择结果选择对应的分支进一步挖矿;
[0065]
2.5)如果在步骤2.3)到2.4)过程中,有合法的新区块出现,则仍然按最长链原则,切换到合法的最长链上挖矿,从而保证区块链整体网络性能不变。
[0066]
有益效果
[0067]
1)在网络拓扑结构无法改变的情况下,通过与网络中心介数的负相关处理,提升了自私挖矿节点需要获利所要付出的算力代价。
[0068]
2)由于每个节点按概率立刻重选分支,对区块链的性能没有影响。
附图说明
[0069]
图1最长链原则
[0070]
图2“51%”算力攻击
[0071]
图3自私挖矿
[0072]
图4自私挖矿与网络中心介数
[0073]
图5所示的区块链网络中心介数计算模块的输出
[0074]
图6区块链网络中心介数计算的定期更新
[0075]
图7基于中心介数的支链选择算法
[0076]
图8基于中心介数的支链选择中断算法
具体实施方式
[0077]
1)计算与更新全网节点中心介数。
[0078]
如图5所示,本发明在原有的区块链网络外,加入用于计算所有节点中心介数的计算模块,并将计算结果传递给区块链网络中的所有节点,作为抵抗自私攻击模块的输入参数。
[0079]
由于网络的拓扑变化速度相对较慢,因此可以每间隔一段时间重新更新计算模块进行网络中心介数的计算(如图6所示)。在间隔期间,采用上一次更新的值即可。计算模块输出的计算结果为网络中每个节点的中心介数,用cb(vi)表示,其中vi∈v,v为区块链网络中所有节点的集合。
[0080]
2)在区块链共识机制中,基于中心介数的分支选择算法实现对自私挖矿的抵抗。
[0081]
抵抗自私攻击模块引入中心介数,当节点收到两个长度相同的合法支链时,随机重新选择其中一个继续挖矿;分支所属的中心介数越大,被随机重选倒的概率越小。
[0082]
如图7所示抵抗自私攻击模块的算法,包括步骤如下:
[0083]
2.1)网络中由两个节点在比较接近的时间向全网广播了各自合法的分支,且分支长度相同(大多数情况下分支长度为1,即一个区块链)。
[0084]
2.2)由于两个分支的发送时间差以及网络拓扑的导致的传输时间差,节点1接收到两个分支有一个先后顺序。我们假设节点2的支链信息先与节点3被广播到节点1,此时,节点1按照原pow最长链原则基于先收到的节点2分支进行挖矿。(这里假设节点2或节点3任意支链优先都可以,对算法没有影响)
[0085]
2.3)在节点1还没有基于节点2的支链挖出新区块钱,又收到了来自节点3的一条支链,且支链长度与在步骤2.2)中收到节点2的支链长度相同,此时当节点1停止当前的挖矿行为,并按以下概率重新随机选择一次支链:
[0086][0087][0088]
即节点进行一次随机运算,有p
v2
的概率会选择节点2分支,p
v3
的概率会选择节点3分支。
[0089]
如果节点同时面临两个以上的分支选择,则通用的选择概率表达书如下:
[0090][0091]
p
vi
:选择节点i支链的概率
[0092]
cb(vi):节点i的网络中心介数
[0093]
2.4)基于2.3)中的选择结果选择对应的分支进一步挖矿。
[0094]
2.5)如图8所示为分支选择算法中的一种特殊情况,使得分支选择中断,节点重新回到最长的合法支链上进行挖矿。具体是:如果在步骤2.3)到2.4)过程中,有合法的新区块出现,则仍然按最长链原则,切换到合法的最长链上挖矿。从而保证区块链整体网络性能不变。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献