天天看點

比特币白皮書概述

比特币白皮書英文版位址

本文為閱讀比特币白皮書各個章節的概述

摘要:指出通過将交易内容哈希到最長公共鍊上的機制來消除傳統的交易中介角色這一目标。

一、引言

簡述現今支付體系中介機構的弊端——第三方調解的事件使得完全不可逆的交易不能真正實行,進而提高了交易成本,限制了小額交易。賣方和買方也有了互相擷取信任的需要,來使交易得以順利進行不出現争端。

引出運用密碼學來保證并代替信任的電子交易系統,交易不可逆保證賣方利益,也可引入第三方擔保來保證買方利益。通過點對點的分布式時間戳伺服器生成有序訂單的可計算證明進而避免雙花問題,上述系統穩定運作的條件是,可信任節點的CPU算力大于攻擊節點算力總和。

二、交易

這章闡述了比特币系統交易的輸入輸出的傳遞形式和結構。

該章定義電子貨币為這樣的一串數字簽名。上一個貨币擁有者通過這樣的形式将貨币傳給下一個人,将上一次交易的hash值和下一位擁有者的公鑰做簽名,并将這些添加到這枚貨币的末尾。收款人通過對驗簽來證明該鍊條的擁有者。(簡而言之就是用付款人的私鑰對前一次交易和收款人的公鑰做簽名,并将結果添加到交易鍊末尾)

作者提出雙花問題,指出沒有時間順序上的所有交易可見性,收款人不能确認是否被雙花,傳統模式下需要第三方來認證解決。得出結論所有交易需要公開并被參與者按序确認有效。

三、時間戳伺服器

提出解決雙花問題的機制——将交易資料通過hash後加上時間戳,并将這個結果廣播。實際上是闡述區塊鍊中區塊内容形成的原型,将每個區塊時間内的所有交易轉成hash後再和時間戳、上個區塊值等參數導出本區塊值。内容上通過merkle樹包含該區間所有交易,順序上通過關聯上一個區塊值和時間戳參數形成有序鍊。

四、工作量證明

實作點對點的時間戳伺服器,需要實作POW機制,如SHA-256算法,哈希值由多個零開始,計算難度随零個數的增加呈指數上升,而驗證隻需要進行一次哈希計算。

我們通過在POW中增加一個nonce随機數。通過不斷hash替換nonce值來挖礦。區塊一旦生成就不能更改除非回退,并且要更改其後的所有區塊。

運用工作量證明機制能夠代表較為真實的大多數,而非IP位址之類的機制可以僞造。隻要保證誠實節點占大多數,惡意節點想要修改區塊鍊追上最長鍊的可能性就随着塊數增加呈指數減小。同時保證出塊間隔時間一定,難度每隔一小時動态調整。

五、網絡

區塊在網絡中的生成傳播步驟:

1、新的交易廣播給所有節點。

2、節點接收新交易進區塊。

3、節點計算該節點的POW。

4、找到POW後向全網廣播。

5、當所有的交易合法且沒有花費時,節點接受該區塊。

6、當節點接受目前區塊後,以目前區塊為前驅建立下個區塊。

并且提出了接收到不同版本新區塊的情況。節點會在先收到的節點上工作,也會保留另一個鍊條。當下一個工作量證明被發現時,節點又會轉向當時的最長鍊。另外,節點缺失某區塊時可以申請重新下載下傳。

六、激勵

這一章主要講的是貨币的激勵機制和對系統穩定性的作用。每個區塊的第一筆交易是給區塊創造者的數字貨币獎勵。每筆交易的輸入輸出差額也作為礦工激勵。在有一定币量後可将激勵轉為單一的交易費激勵形式以防止通脹。

這一機制也一定程度上保證了參與者更傾向于按規則挖礦而非篡改交易擷取利益。

七、硬碟空間回收

一旦最近的交易後又納入了足夠多的區塊,就可以把之前的交易剔除。隻保留Merkle根節點,文中例舉了從一個區塊merkle樹中保留Tx3交易并裁去前三個交易的方法,即留下從Tx3交易到根hash節點所有有用于計算的hash節點。

八、簡化的支付驗證

這一章闡述了簡化形式的驗證節點,需要保持這類節點能證明并保有最長鍊。此後可以逐漸獲得在某個時間點的具體交易。

在簡化情況下區塊鍊會較易被攻擊,改進方法之一是當使用者發現錯誤的區塊鍊時,将促進下載下傳完整的區塊資料以驗證區塊的正确性。

九、合并和拆分價值

交易的輸入輸出形式:通常情況下輸入由一筆較大的交易或多筆較小的交易作為輸入;通常的輸出一筆作為付款,另一筆為找零。

十、隐私

通過保持公鑰來在交易資訊透明的情況下保持使用者的隐私。使用者可以拆分多個位址完成某筆交易來防止被追蹤。主要原因是公鑰和擁有者身份資訊的關聯性在此場景下不存在,是以難以造成身份資訊洩露。

十一、計算

這一章模拟了攻擊者生成新鍊來趕超誠實鍊的場景。确認攻擊者隻能修改自己的交易,以使誠實的節點接受。

約定誠實鍊擴充為+1,攻擊鍊長擴充為-1。該競賽類似二叉樹随機漫步。

在給定長度差下,攻擊者追上的機率近似為賭徒破産問題。指的是賭徒在有一定欠債的先決條件,并可以有無限次嘗試機會來彌補虧空的機率。

(q/p)^z是當攻擊者找到下一區塊機率小于誠實節點找到下一區塊機率時,在z個區塊後攻擊鍊長度趕上誠實鍊的機率。

計算這個機率的用處是确認當交易發生後需要多久可以基本認為交易已成定局不能被改變。相應的,攻擊者利用短時間内将某項交易撤銷的方式獲得非法利益。

模拟的場景如下,接收者等到看到交易被寫進區塊,并有z個區塊添加到其後。此時他并不知道攻擊者的區塊進展,在之前所述的p、q機率下攻擊者的進展是泊松分布,期望值為z*q/p。

進而計算出經過k個區塊後攻擊鍊追上的所有機率之和(攻擊者取得k個區塊進展的機率密度乘以在該進度下仍能追上的機率)。最後得出在攻擊者算力占0.1、區塊差z達到6個以上時,追上的機率将小于千分之一。

十二、結論

本文提出了不依賴信任機制的電子交易系統。以提供強有力所有權控制但缺乏避免雙花手段的基于傳統數字簽名貨币架構為引子, 我們提出使用POW來記錄交易曆史的點對點網絡,當誠實節點掌握大部分算力時能有效避免攻擊者篡改。該網絡非結構化并且健壯,節點間少互動就可協同工作。節點也不需要表明身份,因為消息并非被路由到某個特定位址,隻是盡最大努力廣播即可。節點可以按意願離開或重新加入網絡,隻需要補充離開時的POW區塊。節點通過CPU算力投票,以在鍊上後繼工作表明接受該鍊,反之亦然。必要的規則和激勵都可以添加到現有的一緻性機制上。