主页 > imtoken安装下载地址 > 《区块链科普3》告诉你比特币51%算力攻击
《区块链科普3》告诉你比特币51%算力攻击
比特币挖矿过程
比特币是一种去中心化的账本。 为了让这个账本具有可信度,每个节点的账本要完全一致,这就需要一种机制。 这包括两个步骤:
1、记账节点产生记账权。
2. 生成的账本广播到网络,其他节点完成同步。
在比特币系统中,记账需要由记账节点在一个区块上产生,然后将最近的交易记录在这个区块上,因为产生该区块的节点可以获得交易手续费和比特币奖励。 每个节点都希望通过出块获得记账权,那么谁有出块权呢?
比特币系统中设置了计算题,谁计算出答案,谁就有权生成区块。 计算能力强的计算机有更大的概率计算出正确答案并获得记账权。 计算难度随着前一个区块的计算时间而变化。 当计算时间大于10分钟时,系统自动降低计算难度。 当计算时间小于10分钟时,系统会增加计算难度。 时间约为10分钟。
最长链共识
由于区块产生的时间与全网比特币节点完成同步的时间存在时间差,这可能导致两个或多个节点在同一时间段内计算出正确答案。
图1
如图1所示,红节点和蓝节点同时挖块,红节点向周围广播,黄节点收到广播后完成与红节点的同步; 蓝色节点在挖出区块后也向网络广播,白色节点收到广播后,完成与蓝色节点的同步。 这个时候到底是用蓝色节点产生的区块还是红色节点产生的区块作为父区块,网络此时并没有达成共识。 如果不能达成共识,比特币必须分成两条链比特币难度值计算公式,所以需要一种机制让分裂的矿工达成共识。 这就是比特币系统的第一原则:最长链共识。
图 2
如图 2 所示,当两个节点同时产生一个区块时,它们同时将这个区块广播到网络中。 白节点阵营同步完蓝节点的块后,以蓝块为父块进行下挖,黄节点同步完红节点的块后,红节点挖出的块为作为父节点向下挖掘网络。 如果红节点阵营先挖出下一个区块,就会向全网广播,白阵营看到红节点的广播区块后,发现红节点挖出的区块是最长链,则白节点阵营将切换到最长链继续挖矿,全社区再次达成共识。
比特币 51% 攻击
我们把超过全网50%算力的攻击称为51%算力攻击。 超过50%的算力就一定能成功吗? 答案是:是的。 比特币的51%攻击可以让你花出去的钱回到你的钱包,所以51%攻击也被称为“双花攻击”。 所以只要发生双花攻击,比特币作为货币的信用就会消失。
要理解比特币的51%算力攻击,需要记住比特币的最长链共识:矿工总是选择最长链作为主链向下挖。
图三
以图3为例,alice在区块高度1000处向bob发送了100个btc,这笔交易记录在区块链1001上:
Alice的btc地址:xxxxxxxxxxxxx1:-100btc
Bob的btc地址:xxxxxxxxxxxx2:+100btc
1006区块确认后(6个区块确认)比特币难度值计算公式,bob确认收到100btc,可以自由支配alice发给自己的100btc。 bob 将自己的 100 万人民币转给 alice 后。 收到100万人民币后,Alice立即在区块高度1000处发起51%攻击。只要Alice出块速度比其他所有诚实节点快,那么Alice出块的红色块长度一定超过所有诚实节点的块长度。 当超过所有诚实节点的主链长度时,它向比特币网络广播。 矿工收到广播后,发现Alice广播的区块高度高于当前主链区块高度,矿工切换到Alice挖的链上。 以最新区块为父区块继续挖矿。
【关于51%攻击的几个问题】
(1) 51% 攻击后会发生什么?
答:会发生两种情况: 以图3为第1列,区块高度为1000后,所有花费的btc都会回到原来的钱包。
2、区块高度为1000后,所有收到的btc再次消失。
⑵. 51% 攻击能否让攻击者生成任意数量的比特币?
答:不可以吗? 51%会将花掉的钱返还给钱包,由于2140之前产生的区块有btc奖励,所以攻击者产生的51%的区块也会得到相应的btc奖励。
(3)能否提前检测到51%攻击。
答:是的,如果长时间内诚实节点出块的时间间隔远大于20分钟,就可以判断是大算力发起了分叉攻击。