详解比特币的“51%攻击”

刚接触比特币的时候,都听过“51%攻击”这个概念。简单来说,就是如果某个节点拥有超过全网51%的算力,将能够实现双重支付、撤销交易等操作,让比特币网络崩溃。

那么,这个51%攻击是什么实现的?

假设一个场景,A用10比特币向B购买一样商品,步骤如下:

(1)A支付给B 10BTC;

(2)B收到10BTC确认收款后发货(一般认为6次确认后交易就不可逆转);

(3)A随即创建另一笔交易,将同样的10BTC支付给自己。

显然,A想要撤销第一笔交易,不用花钱就得到B的商品。为了达到这个目的,A进行了双重支付,将同样的10BTC支付给B和自己。在正常的比特币网络中,一旦第一笔交易经过6次确认后就几乎不可更改,后续的交易数据将继续打包成新的区块依次链接下去。可是,如果A用户拥有51%的算力,情况将会发生有趣的变化,A可以实现双重支付的目的。

具体过程如下:

假设第一笔交易被打包到100号区块,当后面再增加5个区块后,6次即可确认该交易,区块如下图所示:

这时,A又发起了一次给自己10BTC的交易。如果A向全网广播,这笔交易不会被处理(因为找不到要花费的UTXO,10BTC支付给B的事实已经被全网确认了),所以A选择不广播,而是对主链进行“分叉”,生成另外一个100号区块,并在其中打包第二笔交易,如下图:

由此,产生了两条子链。简单描述起见,第一笔交易所在的叫C1,第二笔交易所在的叫C2。其他矿工继续在C1上打包数据,而A则在C2上挖矿,两条链开始赛跑。由于A具有超51%的算力资源,很快,C2的长度就会超过C1,如下图:

这时,按照比特币的最长链优先原则,其他矿工也会自动转到C2上,使C2变成了主链。C1则会被抛弃,之前打包在C1上的所有交易(包括第一笔A支付给B 10BTC的交易),都会变为无效。结果是A不花一分钱就拥有了属于B的商品,这就是“51%攻击”。

当然,要真正实现51%攻击是非常困难的,在比特币网络中几乎是不可能的,因为这需要消耗巨大的成本,跟攻击成功后获取到的收益相比,完全是得不偿失。

51%攻击能带来的收益是非常有限的,只能做到:

1、修改自己的交易记录,如双重支付;

2、阻止确认部分或全部交易。

而下面这些即使是51%攻击也没法做到的:

1、凭空生成比特币;

2、修改每个区块产生的比特币数量。

因此,51%攻击成本巨大,收益却很小,仅能实现“双重支付”而已,所以51%攻击很多时候又被称为“双花攻击”。“双花”是数字货币要解决的第一个核心问题,比特币通过共享账本和工作量证明共识机制比较完美地解决了这个问题。

你可能感兴趣的:(详解比特币的“51%攻击”)