為了在點對點的基礎上構建一組分散化的時間戳服務器,僅僅像報紙或世界性新聞網絡組一樣工作是不夠的,我們還需要一個類似于亞當?柏克(Adam Back)提出的哈希現金(Hashcash)[6] 。在進行隨機散列運算時,工作量證明機制引入了對某一個特定值的掃描工作,比方說SHA-256下,隨機散列值以一個或多個0開始。那么隨著0的數目的上升, 找到這個解所需要的工作量將呈指數增長,而對結果進行檢驗則僅需要一次隨機散列運算。
我們在區塊中補增一個隨機數(Nonce),這個隨機數要使得該給定區塊的隨機散列值出現了所需的那么多個0。我們通過反復嘗試來找到這個隨機數,直到找到為止,這樣我們就構建了一個工作量證明機制。只要該CPU耗費的工作量能夠滿足該工作量證明機制,那么除非重新完成相當的工作量,該區塊的信息就不可更改。由于之后的區塊是鏈接在該區塊之后的,所以想要更改該區塊中的信息,就還需要重新完成之后所有區塊的全部工作量。

同時,該工作量證明機制還解決了在集體投票表決時,誰是大多數的問題。如果決定大多數的方式是基于IP地址的,一IP地址一票,那么如果有人擁有分配大量IP地址的權力,則該機制就被破壞了。而工作量證明機制的本質則是一CPU一票。“大多數”的決定表達為最長的鏈,因為最長的鏈包含了最大的工作量。如果大多數的CPU為誠實的節點控制,那么誠實的鏈條將以最快的速度延長,并超越其他的競爭鏈條。如果想要對業已出現的區塊進行修改,攻擊者必須重新完成該區塊的工作量外加該區塊之后所有區塊的工作量,并最終趕上和超越誠實節點的工作量。我們將在后文證明,設想一個較慢的攻擊者試圖趕上隨后的區塊,那么其成功概率將呈指數化遞減。
另一個問題是,硬件的運算速度在高速增長,而節點參與網絡的程度則會有所起伏。為了解決這個問題,工作量證明的難度(the proof-of-work difficulty)將采用移動平均目標的方法來確定,即令難度指向令每小時生成區塊的速度為某一個預定的平均數。如果區塊生成的速度過快,那么難度就會提高。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。