《鋒哥論道區塊鏈》之三區塊鏈基礎--共識機制POW

買賣虛擬貨幣

1POW(proof of work,工作量證明)機制
1.1POW的作用
2008年10月,中本聰(Satoshi Nakamoto)發表了論文《Bitcoin: A Peer-to-Peer Electronic Cash System》,在論文中設計了區塊鏈的POW的共識機制。那POW共識機制主要的作用是什麼?仔細分析比特幣的整體設計思路,使用非對稱秘鑰解決了電子貨幣的所有權問題,使用區塊時間戳解決了交易的存在性問題,用分散式賬本解決了剔除第三方機構後交易的驗證問題。最後就剩下雙重支付問題,在點對點的分散式系統中,要保障所有節點的資料一致性,就必須引入一種機制來保障。中本聰設計了POW共識機制,透過該機制消除雙重支付,保證所有節點資料的一致性。
1.2比特幣POW實現方式
比特幣採用雜湊演算法,邏輯上是對整個區塊進行雜湊運算,實際上是對區塊頭執行雜湊運算。也就是說,所謂的區塊的雜湊值,更確切的表述為區塊頭的雜湊值。區塊頭大小為80byte,包含六個欄位:version、timestamp、bits、nonce、 hashpreblock及hashmerkleroot。如此設計首先帶來的好處是方便雜湊運算,每次運算只需要80位元組的引數輸入,而不是整個區塊的資料,同時交易列表的任何變化又能體現在雜湊執行結果上。
比特幣採用SHA256雜湊運算,且每次都是連續進行兩次SHA256運算才能作為最終結果,前一次運算的結果作為後一次運算的輸入,即Double SHA256,一般簡稱SHA256D,比特幣合格區塊判斷依據如下:
SHA256D(Version,hashPreBlock,hashMerkleRoot,Timestamp,Bits,Nonce)<=MAXTARGET/Diff
比特幣工作量證明(POW)的達成就是礦工計算出來的區塊雜湊值必須小於目標值。比特幣工作量證明的過程,就是透過不停的變換區塊頭(即嘗試不同的nouce值)作為輸入進行SHA256雜湊運算,找出一個特定格式雜湊值的過程(即要求有一定數量的前導0)。而要求的前導0的個數越多,代表難度越大。我們可以把比特幣礦工解這道工作量證明迷題的步驟大致歸納如下:
(1)生成用於發行新比特幣獎勵的Coinbase 交易,並與當前時間戳的其他所有準備打包進區塊的交易組成交易列表,透過Merkle Tree演算法生成Merkle Root Hash;
(2)把Merkle Root Hash及其他相關五個欄位組裝成區塊頭,其中nonce置零,將區塊頭的80位元組資料(Block Header)作為工作量證明的輸入;
(3)不停的變更區塊頭中的隨機數即nonce的數值(nonce初始置零,每次增1),並對每次變更後的的區塊頭做雙重SHA256運算(即SHA256(SHA256(Block_Header))),將每次結果值與當前網路的目標值做對比,如果小於目標值,則成功搜尋到合適的隨機數nonce並獲得該區塊的記賬權,工作量證明完成。
(4)如果在當前時間戳未成功,則更新時間戳,重複上述步驟,直到找到符合條件的nonce。
(5)在節點成功找到滿足條件的雜湊值之後,會馬上對全網進行廣播打包區塊。
(6)網路的其他節點收到廣播打包區塊,會立刻對區塊的雜湊值及交易資料的有效性進行驗證。如果驗證透過,則表明已經有節點成功解迷,自己就不再競爭當前區塊打包,而是選擇接受這個區塊,記錄到自己的賬本中,然後進行下一個區塊的競爭猜謎。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;