區塊鏈知識分享——POW

區塊鏈知識分享——POW

scry.info無域

POW 機制是什麼?

從去中心化賬本系統的角度看,每個加入這個系統的節點都要保存一份完整的賬本,但每個節點卻不能同時記賬,因為節點處於不同的環境,接收到不同的信息,如果同時記賬的話,必然會導致賬本的不一致,造成混亂。因此,需要有共識來達成哪個節點有權記賬。比特幣區塊鏈通過競爭記賬的方式解決去中心化的記賬系統的一致性問題。

比特幣系統設計了以每個節點的計算能力即“算力”來競爭記賬權的機制。在比特幣系統中,大約每 10 分鐘進行一輪算力競賽,競賽的勝利者,就獲得一次記賬的權力,並向其他節點同步新增賬本信息。然而,在一個去中心化的系統中,誰有權判定競爭的結果呢?比

特幣系統是通過一個稱為“工作量證明”Proof of Work,Pow 的機制完成的。

簡單地說,PoW 就是一份確認工作端做過一定量工作的證明。PoW 系統的主要特徵是計算的不對稱性。工作端需要做一定難度的工作得出一個結果,驗證方卻很容易通過結果來檢查工作端是不是做了相應的工作。

舉個例子,給定字符串“blockchain”,我們給出的工作量要求是,可以在這個字符串後面連接一個稱為 nonce 的整數值串,對連接後的字符串進行 SHA256 哈希運算,如果得到的哈希結果(以十六進制的形式表示)是以若干個 0 開頭的,則驗證通過。為了達到這個工作量證明的目標,我們需要不停地遞增 nonce 值,對得到的新字符串進行SHA256 哈希運算。按照這個規則,需要經過 2688 次計算才能找到

前 3 位均為 0 的哈希值,而要找到前 6 位均為 0 的哈希值,則需進行620969 次計算。

blockchain1 →4bfb943cba9fb9926df93f33c17d64b378d56714e8a29c6ba8bdc9690cea8e27

blockchain2 →01181212a283e760929f6b1628d903127c65e6fb5a9ad7fe94b790e699269221 … … blockchain515 →

0074448bea8027bebd6333d3aa12fd11641e051911c5bab661a9b849b83958a7 … …

blockchain2688→0009b257eb8cf9eba179ab2be74d446fa1c59f0adfa8814260f52ae0016dd50f … … blockchain48851:00000b3d96b4db1a976d3a69829aabef8bafa35ab5871e084211a16d3a4f385c … … blockchain6200969:000000db7fa334aef754b51792cff6c880cd286c5f490d5cf73f658d9576d424

通過上面這個計算特定 SHA256 運算結果的示例,我們對PoW 機制有了一個初步的理解。對於特定字符串後接隨機 nonce 值所

構成的串,要找到這樣的 nonce 值,滿足前 n 位均為 0 的 SHA256 值,需要多次進行哈希值的計算。一般來說,n 值越大,需要完成的哈希計算量也越大。由於哈希值的偽隨機特性,要尋找 4 個前導 0 的哈希值,預期大概要進行 2^{16}次嘗試,這個數學期望的計算次數,就是所要求的“工作量”。


分享到:


相關文章: