關(guān)注比特幣的小伙伴,想必聽過51%算力攻擊這個詞,它到底是什么意思呢,發(fā)起這種攻擊之后能做哪些“壞事”呢?今天大白就來簡單介紹一下51%算力攻擊相關(guān)的事情。
比特幣白皮書中,有過這樣的表述:誠實(shí)節(jié)點(diǎn)控制算力的總和,大于有合作關(guān)系的攻擊者算力的總和,該系統(tǒng)就是安全的。
換句說,當(dāng)系統(tǒng)中有合作關(guān)系的惡意節(jié)點(diǎn)所控制的算力,超過誠實(shí)節(jié)點(diǎn)所控制的算力,系統(tǒng)就是有被攻擊的風(fēng)險。這種由惡意節(jié)點(diǎn)控制超過50%算力所發(fā)起的攻擊,稱為51%算力攻擊(51% Attack)。
那是不是所有的加密貨幣系統(tǒng)都有可能遭遇51%算力攻擊的風(fēng)險呢?其實(shí)并不是的,只有基于PoW(工作量證明)共識機(jī)制的加密貨幣,才存在51%算力攻擊,比如比特幣、比特現(xiàn)金和目前階段的以太坊等;而非PoW共識算法的加密貨幣則不存在51%算力攻擊,如基于DPoS(委托權(quán)益證明)共識機(jī)制的EOS、TRON等。
在了解了51%算力攻擊之后,你肯定好奇,這種攻擊能做哪些壞事。
1、雙花(Double Spending)。雙花的意思是一份“錢”花了兩次甚至多次。
51%算力攻擊是如何做到雙花的呢?假設(shè)小黑有666BTC,他把這些幣支付的大白同時,也把這些幣發(fā)到自己的另一錢包地址上。換一句話說,小黑的一份錢,同時轉(zhuǎn)給兩個人。最終,發(fā)給大白那筆交易先被得到了確認(rèn),并打包在區(qū)塊高度為N的區(qū)塊內(nèi)。
這時,控制了超過50%算力的小黑,發(fā)起51%算力攻擊。他通過重新組裝第N個區(qū)塊,將發(fā)給自己那筆交易打包進(jìn)區(qū)塊里,并持續(xù)在這條鏈上延展區(qū)塊,由于算力的優(yōu)勢,這條量將成為最長合法鏈。這樣小黑666BTC雙花成功,大白錢包里的666BTC“不翼而飛”了。
2、壓制某些地址發(fā)送/接受比特幣
除此之外,51%的算力攻擊還能做什么呢?它還可以壓制某個地址發(fā)送/接收比特幣。
小黑和大白吵架了,小黑仰仗自己掌控了51%算力,他在知道大白比特幣地址情況下,可以讓與大白相關(guān)的交易一直無法確認(rèn)。比如大白為了向中本聰表達(dá)自己的敬意,想往“創(chuàng)世地址”發(fā)送1枚比特幣。掌控超過半數(shù)算力的小黑,不會打包這條交易,不僅如此小黑還能做到讓其他礦工也不會打包這條交易。小黑是怎么做到的呢?
如果其他礦工挖出的新區(qū)塊打包了這筆交易,小黑會選擇不在這個區(qū)塊之后繼續(xù)挖礦,他會選擇在上一個區(qū)塊之后,重新構(gòu)建新區(qū)塊,并把大白這筆交易拒絕在外,仰仗自己算力優(yōu)勢,小黑分叉出的這條鏈,將成為最長合法鏈。
在這種情況下,其他礦工也就只好不打包與大白有關(guān)的交易,否則挖出的區(qū)塊也會被小黑給孤立,得到出塊獎勵也將被作廢。
那擁有超過50%的算力,就可以為所欲為,什么壞事都可以做嗎?其實(shí)并不是的。即使控制超過50%的算力,也不能轉(zhuǎn)移其他人的幣(偷幣),因?yàn)檫@個操作是需要私鑰進(jìn)行簽名,如果想偽造簽名來“偷幣”,這種行為是誠實(shí)的礦工所不能容忍的,這將顛覆系統(tǒng)共識。這種情況下,其他礦工將不會在他挖出的區(qū)塊后繼續(xù)拓展區(qū)塊鏈,會主動分叉出合法的區(qū)塊鏈,“偷幣”礦工挖出的區(qū)塊將被孤立。
此外修改系統(tǒng)出塊獎勵,比如將出塊獎勵從當(dāng)前的12.5BTC修改為50BTC,這樣的行為同樣是顛覆系統(tǒng)共識的,誠實(shí)的礦工一樣會拒絕在這樣的非法區(qū)塊,分叉出一條新鏈。
如果你掌握了某個加密貨幣50%以上的算力,你會發(fā)動51%算力攻擊嗎?為什么?