51%算力攻擊是如何做到雙花的呢?假設小黑有666BTC,他把這些幣支付的大白同時,也把這些幣發到自己的另一錢包地址上。換一句話說,小黑的一份錢,同時轉給兩個人。最終,發給大白那筆交易先被得到了確認,並打包在區塊高度為N的區塊內。
這時,控制了超過50%算力的小黑,發起51%算力攻擊。他透過重新組裝第N個區塊,將發給自己那筆交易打包進區塊裡,並持續在這條鏈上延展區塊,由於算力的優勢,這條量將成為最長合法鏈。這樣小黑666BTC雙花成功,大白錢包裡的666BTC"不翼而飛"了。
2、壓制某些地址傳送/接受比特幣
除此之外,51%的算力攻擊還能做什麼呢?它還可以壓制某個地址傳送/接收比特幣。
小黑和大白吵架了,小黑仰仗自己掌控了51%算力,他在知道大白比特幣地址情況下,可以讓與大白相關的交易一直無法確認。比如大白為了向中本聰表達自己的敬意,想往"創世地址"傳送1枚比特幣。掌控超過半數算力的小黑,不會打包這條交易,不僅如此小黑還能做到讓其他礦工也不會打包這條交易。小黑是怎麼做到的呢?
如果其他礦工挖出的新區塊打包了這筆交易,小黑會選擇不在這個區塊之後繼續挖礦,他會選擇在上一個區塊之後,重新構建新區塊,並把大白這筆交易拒絕在外,仰仗自己算力優勢,小黑分叉出的這條鏈,將成為最長合法鏈。
在這種情況下,其他礦工也就只好不打包與大白有關的交易,否則挖出的區塊也會被小黑給孤立,得到出塊獎勵也將被作廢。
那擁有超過50%的算力,就可以為所欲為,什麼壞事都可以做嗎?其實並不是的。即使控制超過50%的算力,也不能轉移其他人的幣(偷幣),因為這個操作是需要私鑰進行簽名,如果想偽造簽名來“偷幣”,這種行為是誠實的礦工所不能容忍的,這將顛覆系統共識。這種情況下,其他礦工將不會在他挖出的區塊後繼續拓展區塊鏈,會主動分叉出合法的區塊鏈,“偷幣”礦工挖出的區塊將被孤立。
此外修改系統出塊獎勵,比如將出塊獎勵從當前的12.5BTC修改為50BTC,這樣的行為同樣是顛覆系統共識的,誠實的礦工一樣會拒絕在這樣的非法區塊,分叉出一條新鏈。
如果你掌握了某個加密貨幣50%以上的算力,你會發動51%算力攻擊嗎?為什麼?快到留言區說說你的看法吧。
作者 | 晏文春
出品|白話區塊鏈(ID:hellobtc)