『学概念找员外』51% 的算力攻击
avatar badge
刘员外
01月09日 18:51

员外捧了天宇一个月,终于把天宇捧成了大V,天宇答应给员外 1 个比特币,但是天宇又想赖掉这笔账,把这 1 个比特币退回给自己。所以天宇需要这么做:

>- 天宇发起了转账交易,并给员外看了(只是发起了交易,并没有交易成功);
>- 这笔交易会放入到交易池中,等待被正常打包上链;
>- 汇集至少 51% 的算力,开始攻击;
>- 比特币网络上很多节点都收到了这笔交易,并加入区块准备打包运算;
>- 天宇也同时计算,但是他在开始之前把这笔交易里的收款地址和签名改成了自己的(这个是很容易的),也就是说这是一笔自己给自己转账的交易;
>- 因为天宇有占全网 51% 的算力,所以他很有可能币其他矿机更早解出这道哈希难题,然后他就可以把这笔伪造的交易加入区块中,进行上链;
>- 这时,整个区块链网络中,会存在两条链,一条是原来的主链,一条是带有这笔假交易的主链,且这条链比原来的那条链多一个区块,也就是说这条带有假交易的链更长;
>- 根据区块链的规则,更长的那条链就可以替代较短的链,成为后面的主链了。
>- 这笔伪造交易的 51% 算力攻击,**可能就成功了。**
>- 员外的这一个比特币,是没影了。。。

##为什么员外说这个攻击可能就成功了呢?

这也就是为什么比特币交易必须等到6个区块确认后,才被视为有效。因为上面这笔伪造的交易,很有可能被识别出来,从而被废弃掉,那么这笔交易当然就随之失效了。

当然这个攻击只是在理论上可能成功,实际的操作中,没有这么容易的。

##那为什么至今也没有出现过一次攻击呢?

**现在所有的矿工都会通过挖矿来获取收益**

这几乎是矿工们的共识了,只有这样,才能保证所有矿工的利益最大化。因为在挖矿的过程中,每挖到一个区块,就可以得到 25 个比特币的奖励,这个奖励虽然会每隔四年减半,但是手续费也是一笔可观的收益了。

**如果真的攻击比特币网络,对谁都没有好处**

现在的矿池基本上形成了一个共识,那就是所有的矿池都自觉的把算力维持在 30% 左右,因为如果某个矿池的算力过大,就会对整个比特币网络形成威胁,所以当一个矿池的算力越来越大的时候,就会自觉的把部分算力分配到其他矿池。

![2018比特币矿池分布图.jpg](https://upload-images.jianshu.io/upload_images/4279446-50138d08d3ab2632.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


如果有一个矿池拥有了大量的算力,对整个比特币网络进行了攻击,集体伪造了交易,并想从中谋取暴利,那他就是在自断财路。一旦比特币网络被攻破,这个世界上再也没有人使用比特币了,所有的比特币都会变得一文不值,所有的矿工再也不能通过挖比特币来获得收益了。要知道建立一个矿厂,动辄需要几百万、几千万甚至上亿的费用,如果这些矿机不能挖其他矿的话,那这些矿机就是一堆废铜烂铁。

虽然攻击有可能成功,但也没人会去这么做!