主页 > 头脑软件 >比特黄金--算力集中与51%攻击简介 >



比特黄金--算力集中与51%攻击简介


比特黄金--算力集中与51%攻击简介

最近準备教材的时候又研究了一下在 2018 年五月针对 Bitcoin Gold的攻击,用图片辅助解释当时发生了什幺事情。针对这次的攻击, Bitcoin gold 官方有整理了一篇讲解攻击如何进行的文章 Anatomy of a Double-Spend/51% attack 写得非常清楚,你也可以直接看此文就可以了解发生什幺事。

因为字面上 BTC 跟 BTG 长得很像,以下我都用 比特币 跟 比特黄金 来代称。

前置条件

首先由于比特黄金的总体算力偏低,攻击者已经先掌握了比特黄金 51% 的算力了,因此才能发动此次攻击,虽然要花很多钱準备这些算力,但是获得的回报更高,所以才会有这样的攻击。

另外一个关键就是在区块链协定当中,在同时都有数条都是合法的区块链时,矿工们会优先採纳长度较长的那条,因为他花费的工作量较高。

手法

假设我们目前在 block 编号 200,000 ,攻击者在自己的钱包 A 拥有 1000 比特黄金 ,而被作为目标的交易所在确认 10 个区块后将会把交易设为合法交易。

因为攻击者拥有了 51% 算力,所以我们这边可以看成有两群矿工,一群是好矿工,另外一群是攻击者拥有的坏矿工,而这两组矿工将产生两条不同的区块链。

攻击者在 block 200,001 把钱包 A 的 1000 比特黄金转帐入交易所的钱包,并且广播给好矿工。同时他广播了另外一个交易:从钱包 A 将 1000 比特黄金转帐给他自己另外一个钱包 B,此笔交易只存在于坏矿工所产生的区块上。

此时在 block #200,001 上面收录了两个截然不同的交易,并且不存在于另外一边的区块链上,而且这两笔交易都是合法的:

接下来等待交易所在好矿工那边过了 10 个区块确认此笔交易时,同时攻击者利用自己的 51% 算力让坏矿工造出了比好矿工更多的区块,而且这条区块链的纪录中从来没有把这 1000 比特黄金转给交易所,而是转到了攻击者自己的钱包 B 。

等到 10 个区块确认,交易所确认汇款已经完成后,攻击者马上利用这 1000 比特黄金去换成比特币,接着马上提领到他自己的比特币钱包。

比特黄金--算力集中与51%攻击简介

此时攻击时机已经成熟,假设这时好矿工算出了 #200,011 到 #200,012 的区块,但是由于坏矿工的算力更强,已经算出了 #200,014 的区块,攻击者将自己拥有的坏矿工手上的区块广播到所有矿工的手上。

此时好矿工发现坏矿工的区块链长度比自己手上的更长,而且是合法的区块链。根据协议中矿工会採纳工作量更高、区块长度更长的区块链的这个规则,此时他们就会相信坏矿工所释出区块链才是正确的区块链,并且把自己手上只有到 #200,012 的区块链替换成坏矿工释出的区块。

比特黄金--算力集中与51%攻击简介

而这条坏矿工所提供的区块链上则从来没有将比特黄金转帐给交易所,但是由 1000 比特黄金交易而来的比特币此时已经转帐到攻击者的比特币钱包了,因为 比特币跟比特黄金是不同的区块链,所以就算比特黄金的区块链已经重组了,仍然不会影响到比特币的区块链。最后比特黄金的网路将会认为原本坏矿工的那条区块链才是正确的链,等于攻击者在没有将钱转帐的交易所的状况下买了 比特币。

比特币或以太币有没有可能受到类似的攻击?

不太可能,比特黄金会发生这起攻击事件的原因在于比特黄金的总体算力太低,加上现在在 NiceHash 上面就可以租用算力,这两个条件加在一起就导致了这起事件。

根据 crypto51 上面的数据, NiceHash 上面仅拥有比特币 1% 的算力可供租用,所以无法透过租赁算力的方式达成。如果不是租赁算力而要自建矿机攻击的话,根据 gobitcoin 上面的成本估算需要约花费 80 亿美金建制硬体,并且每日电费 500 万美金才可以发动此类型的攻击。



上一篇:
下一篇: