免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。
小編:記得關注哦
來源:CSDN
在比特幣創始論文的第11章中存在這樣一個問題,就是為什麼這個分布的期望為lamda=z*(q/p)?
11. 計算
設想如下場景:一個攻擊者試圖比誠實節點產生鏈條更快地製造替代性區塊鏈。即便它達到了這一目的,但是整個系統也並非就此完全受制於攻擊者的獨斷意志了,比方說憑空創造價值,或者掠奪本不屬於攻擊者的貨幣。這是因為節點將不會接受無效的交易,而誠實的節點永遠不會接受一個包含了無效信息的區塊。一個攻擊者能做的,最多是更改他自己的交易信息,並試圖拿回他剛剛付給別人的錢。
誠實鏈條和攻擊者鏈條之間的競賽,可以用二叉樹隨機漫步(Binomial Random Walk)來描述。成功事件定義為誠實鏈條延長了一個區塊,使其領先性+1,而失敗事件則是攻擊者的鏈條被延長了一個區塊,使得差距-1。
攻擊者成功填補某一既定差距的可能性,可以近似地看做賭徒破產問題(Gambler’s Ruin problem)。假定一個賭徒擁有無限的透支信用,然後開始進行潛在次數為無窮的賭博,試圖填補上自己的虧空。那麼我們可以計算他填補上虧空的概率,也就是該攻擊者趕上誠實鏈條,如下所示[8] :
假定p>q,那麼攻擊成功的概率就因為區塊數的增長而呈現指數化下降。由於概率是攻擊者的敵人,如果他不能幸運且快速地獲得成功,那麼他獲得成功的機會隨著時間的流逝就變得愈發渺茫。那麼我們考慮一個收款人需要等待多長時間,才能足夠確信付款人已經難以更改交易了。我們假設付款人是一個支付攻擊者,希望讓收款人在一段時間內相信他已經付過款了,然後立即將支付的款項重新支付給自己。雖然收款人屆時會發現這一點,但為時已晚。
收款人生成了新的一對密鑰組合,然後只預留一個較短的時間將公鑰發送給付款人。這將可以防止以下情況:付款人預先準備好一個區塊鏈然後持續地對此區塊進行運算,直到運氣讓他的區塊鏈超越了誠實鏈條,方才立即執行支付。當此情形,只要交易一旦發出,攻擊者就開始秘密地準備一條包含了該交易替代版本的平行鏈條。
然後收款人將等待交易出現在首個區塊中,然後在等到z個區塊連結其後。此時,他仍然不能確切知道攻擊者已經進展了多少個區塊,但是假設誠實區塊將耗費平均預期時間以產生一個區塊,那麼攻擊者的潛在進展就是一個泊松分布,分布的期望值為:
當此情形,為了計算攻擊者追趕上的概率,我們將攻擊者取得進展區塊數量的泊松分布的概率密度,乘以在該數量下攻擊者依然能夠追趕上的概率。
化為如下形式,避免對無限數列求和:
下邊是我對這個問題的理解:
首先看一下什麼是泊松分布:在《泊松分布的來源—公式推導—應用》一文中,作者提出
在一個特定時間內,某件事情會在任意時刻隨機發生(前提是,每次發生都是獨立的,且跟時間無關)。當我們把這個時間段分成非常小的時間片構成時,可以認為,每個時間片內,該事件可能發生,也可能不發生。幾乎可以不考慮發生多於一次的情況(因為時間片可被分的足夠小)。
當時間片分的越小,該時間片內發生這個事件的概率 p 就會成正比的減少。即:特定時間段被分成的時間片數量 n 與每個時間片內事件發生的概率 p 的乘積 n*p 為一個常數。這個常數表示了該事件在指定時間段發生的頻度。
這句話應該就是解決問題的關鍵。回到比特幣論文中,因為特定時間段為生成z個區塊,這個時間段被分成了z個時間片,每個時間片中攻擊者獲取下一個區塊的概率為q/p,所以根據上述所說這個常數(lamda)為時間片數量和每個時間片內時間發生的概率的乘積,即lamda = z*(q/p);
接下來就是泊松公式推導:
看這段時間內,指定事件恰好發生 i 次的概率是多少?代入上面推導出來的公式得到:
n * (n-1)... (n-i+1) / i! * p^i * (1-p) ^ (n-i) => np(np-p)...(np-ip+p) / i! * ((1-p) ^ (-1/p))^(-np) / (1-p) ^i
當 n 趨向無窮大時,p 趨向 0 。而此時 (1-p)^(-1/p) 趨向 e 。註:詳細推導過程如下
上面這個公式可以劃簡為 lamda ^ i / i! * e ^ - lamda (lamda=n*p)
這個公式推導過程不複雜,耐心點一看就明白。而這個關於 i 的分布就是著名的泊松分布了。
回到論文中既為
版權聲明:本文為CSDN博主「周正己」的原創文章。
原文連結:https://blog.csdn.net/u012149181/article/details/80565812