比特幣最長(zhǎng)鏈共識(shí)為什么是6個(gè)塊確認(rèn)???4個(gè),8個(gè),11個(gè)不行嗎???

知其然

我們知道比特幣的都知道比特幣有一個(gè)6個(gè)區(qū)塊的最長(zhǎng)鏈確認(rèn)機(jī)制,但是知道歸知道.我們可曾想過(guò)這里為什么是6個(gè),而不是4個(gè),8個(gè)或者11個(gè)呢?

難道就是為了確認(rèn)隨便定的嗎,可是堂堂中本聰何許人也?他在考慮這個(gè)問(wèn)題時(shí)候又是怎么想的呢?

不求甚解

由于各種因素,在區(qū)塊鏈上會(huì)不可避免地產(chǎn)生臨時(shí)分叉.簡(jiǎn)單地說(shuō)(只是表達(dá)這個(gè)原理,實(shí)際可能不是這么計(jì)算),當(dāng)有鏈上發(fā)生節(jié)點(diǎn)攻擊而產(chǎn)生分叉時(shí),在一定的出塊時(shí)間內(nèi)要么誠(chéng)實(shí)節(jié)點(diǎn)出塊,要么攻擊節(jié)點(diǎn)出塊,總之肯定有一個(gè)會(huì)出塊。假設(shè)他們出塊的概率為p和q并且攻擊結(jié)點(diǎn)會(huì)一意孤行的在自己的鏈不斷出塊,p+q=1。

一般攻擊節(jié)點(diǎn)的算力也不會(huì)太大,我們這里舉例誠(chéng)實(shí)節(jié)點(diǎn)出塊概率為3/4,攻擊節(jié)點(diǎn)概率為1/4,那么他們各出一個(gè)塊后再繼續(xù)出塊他們成為主鏈的概率分別為9/16和1/16。繼續(xù)下去當(dāng)誠(chéng)實(shí)節(jié)點(diǎn)的鏈上確認(rèn)塊越多,成為合法主鏈的概率也就越大(當(dāng)然這都是假設(shè)誠(chéng)實(shí)節(jié)點(diǎn)算力較大),越往后這個(gè)成功率就會(huì)趨近于1。反之,攻擊節(jié)點(diǎn)的成功率就會(huì)不斷趨近于零。

綜上,當(dāng)產(chǎn)生分叉時(shí)就需要N個(gè)區(qū)塊的確認(rèn)來(lái)確認(rèn)最長(zhǎng)鏈,至于這個(gè)N到底是幾呢?

Analysis of hashrate-based double-spending(基于哈希率的雙重支付分析)中列出一個(gè)表來(lái)表示攻擊結(jié)點(diǎn)出塊概率,誠(chéng)實(shí)節(jié)點(diǎn)確認(rèn)塊數(shù)和攻擊結(jié)點(diǎn)攻擊成功率的關(guān)系.從表中可以看出,當(dāng)攻擊節(jié)點(diǎn)擁有2%算力,誠(chéng)實(shí)節(jié)點(diǎn)確認(rèn)5個(gè)塊后,攻擊成功的概率就約等于零了。這里也能看出比特幣的“6個(gè)區(qū)塊確認(rèn)最長(zhǎng)鏈”的準(zhǔn)則是基于攻擊節(jié)點(diǎn)擁有10%的算力假設(shè)(這個(gè)攻擊實(shí)力已經(jīng)相當(dāng)可觀了)!

Analysis of hashrate-based double-spending

知其所以然

其實(shí),這個(gè)問(wèn)題中本聰在他發(fā)布的比特幣白皮書(中文翻譯戳這)中已經(jīng)有所提及:

設(shè)想如下場(chǎng)景:一個(gè)攻擊者試圖比誠(chéng)實(shí)節(jié)點(diǎn)產(chǎn)生鏈條更快地制造替代性區(qū)塊鏈。即便它達(dá)到了這一目的,但是整個(gè)系統(tǒng)也并非就此完全受制于攻擊者的獨(dú)斷意志了,比方說(shuō)憑空創(chuàng)造價(jià)值,或者掠奪本不屬于攻擊者的貨幣。這是因?yàn)楣?jié)點(diǎn)將不會(huì)接受無(wú)效的交易,而誠(chéng)實(shí)的節(jié)點(diǎn)永遠(yuǎn)不會(huì)接受一個(gè)包含了無(wú)效信息的區(qū)塊。一個(gè)攻擊者能做的,最多是更改他自己的交易信息,并試圖拿回他剛剛付給別人的錢。 誠(chéng)實(shí)鏈條和攻擊者鏈條之間的競(jìng)賽,可以用二叉樹隨機(jī)漫步(Binomial Random Walk)來(lái)描述。成功事件定義為誠(chéng)實(shí)鏈條延長(zhǎng)了一個(gè)區(qū)塊,使其領(lǐng)先性+1,而失敗事件則是攻擊者的鏈條被延長(zhǎng)了一個(gè)區(qū)塊,使得差距-1。 攻擊者成功填補(bǔ)某一既定差距的可能性,可以近似地看做賭徒破產(chǎn)問(wèn)題(Gambler’s Ruin problem)。假定一個(gè)賭徒擁有無(wú)限的透支信用,然后開始進(jìn)行潛在次數(shù)為無(wú)窮的賭博,試圖填補(bǔ)上自己的虧空。那么我們可以計(jì)算他填補(bǔ)上虧空的概率,也就是該攻擊者趕上誠(chéng)實(shí)鏈條,如下所示:

image.png

假定p>q,那么攻擊成功的概率就因?yàn)閰^(qū)塊數(shù)的增長(zhǎng)而呈現(xiàn)指數(shù)化下降。由于概率是攻擊者的敵人,如果他不能幸運(yùn)且快速地獲得成功,那么他獲得成功的機(jī)會(huì)隨著時(shí)間的流逝就變得愈發(fā)渺茫。那么我們考慮一個(gè)收款人需要等待多長(zhǎng)時(shí)間,才能足夠確信付款人已經(jīng)難以更改交易了。我們假設(shè)付款人是一個(gè)支付攻擊者,希望讓收款人在一段時(shí)間內(nèi)相信他已經(jīng)付過(guò)款了,然后立即將支付的款項(xiàng)重新支付給自己。雖然收款人屆時(shí)會(huì)發(fā)現(xiàn)這一點(diǎn),但為時(shí)已晚。 收款人生成了新的一對(duì)密鑰組合,然后只預(yù)留一個(gè)較短的時(shí)間將公鑰發(fā)送給付款人。這將可以防止以下情況:付款人預(yù)先準(zhǔn)備好一個(gè)區(qū)塊鏈然后持續(xù)地對(duì)此區(qū)塊進(jìn)行運(yùn)算,直到運(yùn)氣讓他的區(qū)塊鏈超越了誠(chéng)實(shí)鏈條,方才立即執(zhí)行支付。當(dāng)此情形,只要交易一旦發(fā)出,攻擊者就開始秘密地準(zhǔn)備一條包含了該交易替代版本的平行鏈條。 然后收款人將等待交易出現(xiàn)在首個(gè)區(qū)塊中,然后在等到z個(gè)區(qū)塊鏈接其后。此時(shí),他仍然不能確切知道攻擊者已經(jīng)進(jìn)展了多少個(gè)區(qū)塊,但是假設(shè)誠(chéng)實(shí)區(qū)塊將耗費(fèi)平均預(yù)期時(shí)間以產(chǎn)生一個(gè)區(qū)塊,那么攻擊者的潛在進(jìn)展就是一個(gè)泊松分布,分布的期望值為:
image.png

化為如下形式,避免對(duì)無(wú)限數(shù)列求和:
image.png

此外,他還給出了C語(yǔ)言的實(shí)現(xiàn):

#include <math.h>
double AttackerSuccessProbability(double q, int z)
{
 double p = 1.0 - q;
 double lambda = z * (q / p);
 double sum = 1.0;
 int i, k;
 for (k = 0; k <= z; k++)
 {
     double poisson = exp(-lambda);
     for (i = 1; i <= k; i++)
     {
         poisson *= lambda / i;
     }
     sum -= poisson * (1 - pow(q / p, z - k));
     }
 }
 return sum;
}

copy完上面的解釋后,到代碼這里我們就可以親測(cè)一下為啥是6個(gè)區(qū)塊數(shù)確認(rèn)呢???

這是我的測(cè)試代碼:

AttackerSuccessProbability_test

編譯并運(yùn)行:

image.png

這個(gè)結(jié)果和上面提到的參考表在數(shù)值上會(huì)有一些出入,但是大體不差(上述結(jié)果和白皮書給出計(jì)算結(jié)果相同).當(dāng)假設(shè)攻擊結(jié)點(diǎn)擁有10%算力(這個(gè)算力已經(jīng)相當(dāng)可觀),當(dāng)誠(chéng)實(shí)鏈確認(rèn)塊數(shù)達(dá)到6的時(shí)候其攻擊成功的概率為0.02%,這個(gè)值相比上個(gè)值足夠接近0并遠(yuǎn)離0.1%(確認(rèn)塊為5時(shí)攻擊成功概率為0.09%).

寫在后面

最近剛工作比較忙所以好久(快一個(gè)月了)沒有更新文章了.近兩周的工作,感覺自己真的還是個(gè)區(qū)塊鏈里的小白,還有很多東西需要去吃透吃通.

鏈圈路漫漫,吾將上下而求索!(還好超哥只在鏈圈混,最近幣圈比特幣帶動(dòng)的暴跌絲毫不能影響超哥對(duì)區(qū)塊鏈技術(shù)的熱情...).

參考文獻(xiàn)

.
.
.
.

互聯(lián)網(wǎng)顛覆世界,區(qū)塊鏈顛覆互聯(lián)網(wǎng)!

--------------------------------------------------20181129 23:38
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容