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

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

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

化為如下形式,避免對無限數列求和:

寫為如下C語言代碼:
#include 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;
}
對其進行運算,我們可以得到如下的概率結果,發現概率對z值呈指數下降。
當q=0.1時
z=0 P=1.0000000
z=1 P=0.2045873
z=2 P=0.0509779
z=3 P=0.0131722
z=4 P=0.0034552
z=5 P=0.0009137
z=6 P=0.0002428
z=7 P=0.0000647
z=8 P=0.0000173
z=9 P=0.0000046
z=10 P=0.0000012
當q=0.3時
z=0 P=1.0000000
z=5 P=0.1773523
z=10 P=0.0416605
z=15 P=0.0101008
z=20 P=0.0024804
z=25 P=0.0006132
z=30 P=0.0001522
z=35 P=0.0000379
z=40 P=0.0000095
z=45 P=0.0000024
z=50 P=0.0000006
求解令P<0.1%的z值:
為使P<0.001,則
q=0.10 z=5
q=0.15 z=8
q=0.20 z=11
q=0.25 z=15
q=0.30 z=24
q=0.35 z=41
q=0.40 z=89
q=0.45 z=340
我們在此提出了一種不需要信用中介的電子支付系統。我們首先討論了通常的電子貨幣的電子簽名原理,雖然這種系統為所有權提供了強有力的控制,但是不足以防止雙重支付。為了解決這個問題,我們提出了一種采用工作量證明機制的點對點網絡來記錄交易的公開信息,只要誠實的節點能夠控制絕大多數的CPU計算能力,就能使得攻擊者事實上難以改變交易記錄。該網絡的強健之處在于它結構上的簡潔性。節點之間的工作大部分是彼此獨立的,只需要很少的協同。每個節點都不需要明確自己的身份,由于交易信息的流動路徑并無任何要求,所以只需要盡其最大努力傳播即可。節點可以隨時離開網絡,而想重新加入網絡也非常容易,因為只需要補充接收離開期間的工作量證明鏈條即可。節點通過自己的CPU計算力進行投票,表決他們對有效區塊的確認,他們不斷延長有效的區塊鏈來表達自己的確認,并拒絕在無效的區塊之后延長區塊以表示拒絕。本框架包含了一個P2P電子貨幣系統所需要的全部規則和激勵措施。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。