Bitcoin Gold(BTG)遭受51%攻击事件解析
知识储备
什么是51%攻击?
攻击者通过掌握网络50%以上的算力来“主导”公链的交易数据,比如使其失效又或是使某个事务被更快确认,并不能篡改。
什么是双重支付?
攻击者将自己的币向多个地址发送转账交易,但是在区块链中只认排在最前的交易,所以无论发送多少次,最终只有排在最前的交易被认为是有效的。
51%攻击+双重支付组合拳:
攻击者利用双重支付发送两笔交易,使用自己的币一个向他人交易,一个向自己转账。在和他人交易完毕,完成等价交换之后,攻击者发动51%攻击,使其和他人的交易无效,而他人和自己等价交换的物品,却还在攻击者手里。
事件始末
在今年5月19日时,BTG的官网发表了这样一则公告:
官方表示,在当时此攻击者已经在攻击一些确认次数少的交易所了,甚至有交易所表示通过蛛丝马迹几乎可以确认此人和曾经攻击过他们的人是同一人...
官方还公布了攻击者的钱包地址:
GTNjvCGssb2rbLnDV1xxsHmunQdvXnY2Ft
GXXjRkdquAkyHeJ6ReW3v4FY3QbgPfugTx
我们来看看主链上GTNjvCGssb2rbLnDV1xxsHmunQdvXnY2Ft账户的数据
从18号起攻击者不断向自己转入大量BTG,而且都上万。
这是什么操作?是的,攻击者在进行51%攻击...
攻击过程
攻击者一方面在公链上利用自己的BTG进行消费操作,一方面在利用自己的庞大算力创造的平行链上进行向自己消费的操作。
当平行链比公链长的时候,公链与平行链的分叉点之后的公链就被抛弃了,成为了孤块。
也就是说,攻击者在公网进行消费的操作也"被"丢失了!链上的交易从攻击者向外消费变成了向自己转账...
可以这样理解攻击者的操作:
攻击开始时,攻击者将执行以下步骤:
- 开始挖掘平行与BTG的私链,并将自己的币转给自己,用庞大的算力保证自己的链币比公链更长
- 同时在公链上,将自己的币发送给交易所
- 等待足够的确认之后,交易所接受存款
- 快速将BTG换成其他币并提现
- 等待提现成功
- 将私链释放到网络,导致整个公链重新以攻击者的私链为主链。在此链上,攻击者的BTG从未发送给交易所过。
由于私链比公链长,所以现有区块将被还原,并被私有区块取代。向交易所转账的交易不存在了,被替换为攻击者向自己转账。
攻击者用自己庞大的算力硬生生的把整个区块链的交易数据给扳回来了!
以下是51%攻击导致BTG链中留下的多个孤块:
https://btgexplorer.com/block/0000000023ad92fe3c2cf28f0d64e4eebdfef57f08872edab57398aea8ce0589
https://btgexplorer.com/block/00000000155e2435fee41d84f57f6f9877c534b86c77bf8eeea6e67259da34b3
https://btgexplorer.com/block/0000000024cc17971de3cf0b03f527562093cd5e10ee26562376b1b40df65776
...
会有什么后果?
- 币种市值下跌
- 整体挖矿难度升高
- 部分交易失效,其中包括投资者的买入卖出、矿工的奖励等
怎么预防?
只能等待区块确认次数,越高越安全,因为确认次数越多攻击者要更改这笔交易的成本就更高。(一些交易所因此提高确认次数至20次以上)
最新评论