比特幣白皮書Calculations筆記

區塊鏈白皮書地址中Calculations部分截圖如下:

這裏附上我粗淺的理解,如出現錯誤,歡迎指正。

其中討論了攻擊者試圖比誠實鏈更快地生成替代鏈的場景,誠實鏈和攻擊鏈之間的的競賽可以看作一個二項隨機遊走(Binomial Random Walk),成功事件是誠實鏈延長一個塊,其領先優勢+1,失敗事件是攻擊者的鏈延長一個塊,減少差距-1。

攻擊者彌補給定赤字的概率類似於賭徒破產問題。假設一個擁有無限信用額度的賭徒從赤字開始,爲了達到收支平衡,他可能會進行無限次的嘗試。我們可以計算出攻擊者達到收支平衡的概率或者產生誠實鏈的概率滿足以下公式:

                                                             

         其中p表示誠實節點挖得下一個區塊的概率,q表示攻擊者挖得下一個區塊的概率,表示攻擊者從落後z個區塊追趕上來的概率。

我們假設p>q,隨着攻擊者落後的區塊數量的增多,攻擊者趕上誠實鏈的概率會呈現指數下降.我們現在來考考慮一個交易的接受方需要等多長時間才能充分確認發送者不會更改這筆交易。我們假設發送方是一個攻擊者,他想讓接收者確認他已經支付了,然後過一段時間把這筆錢轉會給自己。當這種情況發生時,接收方會得到通知,但是發送方希望這個時候已經來不及讓接收方做出改變。

收款人生成了新的一對密鑰組合,然後只預留一個較短的時間將公鑰發送給付款人。這將可以防止以下情況:付款人預先準備好一個區塊鏈然後持續地對此區塊進行運算,直到運氣讓他的區塊鏈超越了誠實鏈條,方纔立即執行支付。當此情形,只要交易一旦發出,攻擊者就開始祕密地準備一條包含了該交易替代版本的平行鏈條。

收款人將等待交易出現在首個區塊中,然後在等到z個區塊鏈接其後。此時,他仍然 不能確切知道攻擊者已經進展了多少個區塊,但是假設誠實區塊將耗費平均預期時間以產生一 個區塊,那麼攻擊者的潛在進展就是一個泊松分佈,分佈的期望值λ爲:

                                     ---------------------------[1-1]

       泊松分佈是指某段連續的時間內某件事情發生的次數,而且“某件事情”發生所用的時間是可以忽略的。例如,在五分鐘內,電子元件遭受脈衝的次數,就服從於泊松分佈。

泊松分佈屬於二項分佈。二項分佈是說,已知某件事情發生的概率是p,那麼做n次試驗,事情發生的次數就服從於二項分佈。泊松分佈是二項分佈n很大而p很小時的一種極限形式。

二項分佈的期望是:

       ---------------------------------[1-2]

       據此可以推出:

                                     ----------------------------------[1-3]

當n趨近於無窮的時候,我們可以計算泊松分佈:

其中有兩步的證明結果如下:

泊松分佈的概率密度函數爲:

    -------------------------------------------[1-5]

在本論文中,λ即代表,則概率密度函數爲:
    ----------------------------------------------[1-6]

當此情形,爲了計算攻擊者追趕上的概率,我們將攻擊者取得進展區塊數量的泊松分佈的 概率密度,乘以在該數量下攻擊者依然能夠追趕上的概率。

    -------------------------------[1-7]

將其變換一下,避免無限求合:

              ---------------------------------[1-8]

中本聰將上式裝化成C語言代碼爲:

上述代碼乍一看挺複雜,但其實就是式子1-8的一個復現,如果我們用P表示最終我們求的概率,那麼這段代碼運行的結果如下(l原諒我這隻截圖狗:) :

如果我們限制P的概率小於0.1%,則攻擊者率先挖出下一個區塊的概率q和相差的最少區塊的個數z分別是:

在比特幣的交易中,大額的交易必須等到六個區塊驗證之後才能確保有很小的機率被篡改,應該跟這個計算結果有關係,菜雞接着去學了。

參考:
       1、https://www.zhihu.com/question/26441147

2、https://files-cdn.cnblogs.com/files/X-knight/Bitcoin英文版.pdf

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章